You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

56 lines
1.5 KiB

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