name: Deploy to Beta on: push: branches: [ beta ] jobs: deploy: runs-on: ubuntu-latest environment: beta steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18.x' cache: 'npm' - name: Install dependencies run: npm ci --only=production - name: Build application run: npm run build - name: Create deployment package run: | mkdir -p deploy cp -r src dist package*.json ecosystem.config.js scripts deploy/ tar -czf deploy-$(date +%Y%m%d-%H%M%S).tar.gz -C deploy . - name: Deploy to Beta Server env: DEPLOY_HOST: ${{ secrets.BETA_HOST }} DEPLOY_USER: ${{ secrets.DEPLOY_USER }} DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} DEPLOY_PATH: ${{ secrets.BETA_DEPLOY_PATH }} run: | # Setup SSH mkdir -p ~/.ssh echo "$DEPLOY_KEY" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H $DEPLOY_HOST >> ~/.ssh/known_hosts # Upload and deploy scp -i ~/.ssh/deploy_key deploy-*.tar.gz $DEPLOY_USER@$DEPLOY_HOST:/tmp/ ssh -i ~/.ssh/deploy_key $DEPLOY_USER@$DEPLOY_HOST "bash -s" < scripts/deploy.sh beta - name: Health Check env: HEALTH_CHECK_URL: ${{ secrets.BETA_HEALTH_CHECK_URL }} run: | sleep 30 curl -f $HEALTH_CHECK_URL || exit 1