Refactor deployment scripts to use GitHub environment variables and improve SSH key handling

This commit is contained in:
Frank John Begornia
2025-12-12 01:37:27 +08:00
parent a12ee2e5aa
commit 6f7b81f1da
2 changed files with 53 additions and 14 deletions

View File

@@ -16,32 +16,51 @@ jobs:
steps:
- name: Checkout code
run: |
git clone ${{ gitea.repository_url }} /workspace/repo || true
#!/bin/sh
git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git /workspace/repo || true
cd /workspace/repo
git fetch origin ${{ gitea.ref_name }}
git checkout ${{ gitea.ref_name }}
git pull origin ${{ gitea.ref_name }}
git fetch origin $GITHUB_REF_NAME
git checkout $GITHUB_REF_NAME
git pull origin $GITHUB_REF_NAME
- name: Build Docker Image
run: |
#!/bin/sh
cd /workspace/repo
docker build -t merchbay_admin:latest .
docker save merchbay_admin:latest | gzip > merchbay_admin.tar.gz
- name: Setup SSH Key
run: |
#!/bin/sh
mkdir -p ~/.ssh
echo "${{ secrets.PROD_DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key
printf '%s' "$PROD_DEPLOY_SSH_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
env:
PROD_DEPLOY_SSH_KEY: ${{ secrets.PROD_DEPLOY_SSH_KEY }}
- name: Transfer Files to Production Server
run: |
#!/bin/sh
cd /workspace/repo
scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key merchbay_admin.tar.gz docker-compose.yml ${{ secrets.PROD_DEPLOY_USER }}@${{ secrets.PROD_DEPLOY_HOST }}:/tmp/
scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key merchbay_admin.tar.gz docker-compose.yml "$PROD_DEPLOY_USER@$PROD_DEPLOY_HOST:/tmp/"
env:
PROD_DEPLOY_USER: ${{ secrets.PROD_DEPLOY_USER }}
PROD_DEPLOY_HOST: ${{ secrets.PROD_DEPLOY_HOST }}
- name: Deploy to Production Server
run: |
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key ${{ secrets.PROD_DEPLOY_USER }}@${{ secrets.PROD_DEPLOY_HOST }} << 'ENDSSH'
#!/bin/sh
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$PROD_DEPLOY_USER@$PROD_DEPLOY_HOST" << 'ENDSSH'
#!/bin/sh
env:
PROD_DEPLOY_USER: ${{ secrets.PROD_DEPLOY_USER }}
PROD_DEPLOY_HOST: ${{ secrets.PROD_DEPLOY_HOST }}
PROD_DB_HOST: ${{ secrets.PROD_DB_HOST }}
PROD_DB_PORT: ${{ secrets.PROD_DB_PORT }}
PROD_DB_DATABASE: ${{ secrets.PROD_DB_DATABASE }}
PROD_DB_USERNAME: ${{ secrets.PROD_DB_USERNAME }}
PROD_DB_PASSWORD: ${{ secrets.PROD_DB_PASSWORD }}
# Set deployment directory for production
DEPLOY_DIR="/var/www/merchbay_admin"
@@ -107,5 +126,6 @@ jobs:
- name: Health Check
run: |
#!/bin/sh
sleep 10
curl -f https://merchbay.com || exit 1