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
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 |