b1261ad622
- Add start.yml and stop.yml workflows for server lifecycle - All workflows now use `type: environment` input for environment selection - Secrets and variables moved from repo-level to environment-level - Enables approval gates per environment (e.g., require approval for production) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
76 lines
3.1 KiB
YAML
76 lines
3.1 KiB
YAML
name: Check Deployed Version
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
environment:
|
|
description: 'Target environment'
|
|
type: environment
|
|
required: true
|
|
|
|
jobs:
|
|
check:
|
|
name: 'Check version (${{ inputs.environment }})'
|
|
runs-on: ubuntu-latest
|
|
environment: ${{ inputs.environment }}
|
|
|
|
steps:
|
|
- name: Check current deployed version
|
|
id: current
|
|
env:
|
|
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
|
run: |
|
|
SSH_HOST="${{ vars.SSH_HOST }}"
|
|
SSH_USER="${{ vars.SSH_USER || 'root' }}"
|
|
TENANT="${{ vars.TENANT_NAME }}"
|
|
BASE_DIR="${{ vars.BASE_DIR || './sfp-server' }}"
|
|
|
|
if [ -z "$SSH_HOST" ] || [ -z "$SSH_PRIVATE_KEY" ]; then
|
|
echo "SSH not configured for environment '${{ inputs.environment }}'"
|
|
echo "current_tag=unknown" >> $GITHUB_OUTPUT
|
|
echo "current_fqdn=unknown" >> $GITHUB_OUTPUT
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p ~/.ssh
|
|
echo "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key
|
|
chmod 600 ~/.ssh/deploy_key
|
|
ssh-keyscan -H "$SSH_HOST" >> ~/.ssh/known_hosts 2>/dev/null
|
|
|
|
CURRENT_TAG=$(ssh -i ~/.ssh/deploy_key "$SSH_USER@$SSH_HOST" \
|
|
"grep '^IMAGE_TAG=' ${BASE_DIR}/tenants/${TENANT}/.env 2>/dev/null | cut -d= -f2" \
|
|
2>/dev/null || echo "unknown")
|
|
|
|
CURRENT_FQDN=$(ssh -i ~/.ssh/deploy_key "$SSH_USER@$SSH_HOST" \
|
|
"grep '^IMAGE_FQDN=' ${BASE_DIR}/tenants/${TENANT}/.env 2>/dev/null | cut -d= -f2" \
|
|
2>/dev/null || echo "unknown")
|
|
|
|
echo "current_tag=$CURRENT_TAG" >> $GITHUB_OUTPUT
|
|
echo "current_fqdn=$CURRENT_FQDN" >> $GITHUB_OUTPUT
|
|
echo "Currently deployed: $CURRENT_FQDN:$CURRENT_TAG"
|
|
|
|
- name: Generate summary
|
|
run: |
|
|
CURRENT_TAG="${{ steps.current.outputs.current_tag }}"
|
|
CURRENT_FQDN="${{ steps.current.outputs.current_fqdn }}"
|
|
CONFIGURED_TAG="${{ vars.IMAGE_TAG || 'latest' }}"
|
|
CONFIGURED_FQDN="${{ vars.IMAGE_FQDN }}"
|
|
|
|
echo "## SFP Server Version Status (${{ inputs.environment }})" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "| | Image | Tag |" >> $GITHUB_STEP_SUMMARY
|
|
echo "|---|-------|-----|" >> $GITHUB_STEP_SUMMARY
|
|
echo "| **Deployed** | \`$CURRENT_FQDN\` | \`$CURRENT_TAG\` |" >> $GITHUB_STEP_SUMMARY
|
|
echo "| **Configured** | \`$CONFIGURED_FQDN\` | \`$CONFIGURED_TAG\` |" >> $GITHUB_STEP_SUMMARY
|
|
|
|
if [ "$CURRENT_TAG" != "$CONFIGURED_TAG" ] && [ "$CURRENT_TAG" != "unknown" ]; then
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "Deployed version differs from configured. Run **Update SFP Server** to update." >> $GITHUB_STEP_SUMMARY
|
|
elif [ "$CURRENT_TAG" = "unknown" ]; then
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "Could not determine currently deployed version." >> $GITHUB_STEP_SUMMARY
|
|
else
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "Server is running the configured version." >> $GITHUB_STEP_SUMMARY
|
|
fi
|