name: deploy on: push: jobs: build-and-deploy: runs-on: ubuntu-latest strategy: matrix: include: - dir: /opt/website base_path: /varo service: website - dir: /opt/website-test base_path: /testvaro service: website-test steps: - name: Checkout uses: actions/checkout@v4 - name: Cache uses: actions/cache@v4 with: path: | dist/ node_modules/ key: ${{ runner.os }}-${{ hashFiles('package-lock.json') }} - name: Install dependencies run: npm i - name: Build website env: BASE_PATH: ${{ matrix.base_path }} run: npm run build - name: Deploy env: HOST: ${{ secrets.SSH_HOST}} USER: ${{ secrets.SSH_USER }} SSH_KEY: ${{ secrets.SSH_KEY }} DIRECTORY: ${{ matrix.dir }} SERVICE: ${{ matrix.service }} run: | mkdir -p "$HOME/.ssh" && touch "$HOME/.ssh/known_hosts" echo "$SSH_KEY" > "$HOME/.ssh/deploy_key" chmod 700 "$HOME/.ssh" && chmod 600 "$HOME/.ssh/known_hosts" && chmod 600 "$HOME/.ssh/deploy_key" eval $(ssh-agent) ssh-add "$HOME/.ssh/deploy_key" ssh-keyscan -t rsa "$HOST" >> "$HOME/.ssh/known_hosts" ssh -o StrictHostKeyChecking=no $USER@$HOST "rm -r $DIRECTORY; mkdir -p $DIRECTORY" scp -r -o StrictHostKeyChecking=no $(ls -d -1 dist/*) $(ls package*) $USER@$HOST:$DIRECTORY ssh -o StrictHostKeyChecking=no $USER@$HOST "cd $DIRECTORY; npm i --omit=dev; systemctl restart $SERVICE"