Files
Nexus-Guard-Suite/.gitea/workflows/deploy_call.yaml
T

90 lines
2.9 KiB
YAML

name: Deploy
on:
workflow_call:
inputs:
environment:
description: 'Target environment (dev or production)'
required: true
type: string
jobs:
deploy:
runs-on: ubuntu-latest
environment: ${{ inputs.environment }}
steps:
- name: Configure git auth for submodules
run: git config --global url."https://x-access-token:${{ secrets.BUILD_TOKEN }}@git.datadunia.com/".insteadOf "https://git.datadunia.com/"
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.BUILD_TOKEN }}
persist-credentials: true
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: ./artifacts
- name: Deploy to ${{ inputs.environment }}
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
DEPLOY_PATH: ${{ secrets.DEPLOY_PATH }}
run: |
echo "Deploying to ${{ inputs.environment }}..."
echo "Host: $DEPLOY_HOST"
echo "Path: $DEPLOY_PATH"
# Setup SSH
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -H "$DEPLOY_HOST" >> ~/.ssh/known_hosts 2>/dev/null
# Upload artifacts
echo "Uploading server-core..."
scp -i ~/.ssh/deploy_key artifacts/server-core-linux-amd64/server-core \
"${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/bin/"
echo "Uploading device-agent..."
for platform in linux-amd64 linux-arm64; do
scp -i ~/.ssh/deploy_key "artifacts/nexus-device-agent-${platform}/nexus-device-agent-${platform}" \
"${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/bin/"
done
echo "Uploading dashboard..."
if [ -d "artifacts/dashboard-ui-dist/dist" ]; then
tar -czf /tmp/dashboard-ui.tar.gz -C artifacts/dashboard-ui-dist dist/
scp -i ~/.ssh/deploy_key /tmp/dashboard-ui.tar.gz \
"${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_PATH}/"
fi
# Deploy on server
echo "Running deployment..."
ssh -i ~/.ssh/deploy_key "${DEPLOY_USER}@${DEPLOY_HOST}" << 'DEPLOY_SCRIPT'
cd "${DEPLOY_PATH}" || exit 1
# Stop services
echo "Stopping services..."
docker compose down || true
# Run update script
echo "Running update..."
bash update.sh --force
# Verify services
echo "Verifying services..."
docker compose ps
echo "Deployment complete!"
DEPLOY_SCRIPT
echo "Deployed to ${{ inputs.environment }} successfully!"
- name: Cleanup
if: always()
run: rm -rf ~/.ssh/deploy_key /tmp/dashboard-ui.tar.gz