name: Deploy React portfolio on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_DEPLOY_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key - name: Deploy to server run: | tar czf portfolio.tar.gz -C dist . scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=accept-new portfolio.tar.gz ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/tmp/ ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=accept-new ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "\ sudo rm -rf ${{ secrets.DEPLOY_PATH }}/* && \ sudo tar xzf /tmp/portfolio.tar.gz -C ${{ secrets.DEPLOY_PATH }}/ && \ sudo rm /tmp/portfolio.tar.gz && \ sudo chown -R deploy:www-data ${{ secrets.DEPLOY_PATH }} && \ sudo chmod -R 775 ${{ secrets.DEPLOY_PATH }} && \ sudo systemctl reload nginx"