Files
k8s-game-2048/.github/workflows/auto-promote.yml
Greg 90af21ac8b fix: reorganize pipeline to run smoke tests AFTER deployments
- Change smoke tests to trigger after deployments complete (not on push)
- Auto-promotion now depends on smoke test success (not duplicate testing)
- Promotion to production depends on staging smoke tests
- Eliminates testing previous deployments instead of new ones
- Creates logical flow: deploy → test → promote
2025-07-01 16:11:35 -07:00

84 lines
3.2 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Auto-Promote Pipeline
on:
workflow_run:
workflows: ["Smoke Tests"]
types:
- completed
branches: [ develop ]
permissions:
actions: write
contents: write
jobs:
test-and-promote-to-staging:
name: Test Dev and Auto-Promote to Staging
runs-on: ubuntu-latest
environment: development
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: develop
- name: Wait for smoke test results to settle
run: |
echo "⏳ Smoke tests completed, proceeding with promotion..."
sleep 30
- name: Verify dev smoke tests passed
run: |
echo "✅ Development smoke tests passed - proceeding with auto-promotion to staging"
- name: Auto-promote develop to staging branch
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
console.log('🚀 All dev smoke tests passed! Auto-promoting develop to staging branch...');
// Create a merge from develop to staging
try {
const response = await github.rest.repos.merge({
owner: context.repo.owner,
repo: context.repo.repo,
base: 'staging',
head: 'develop',
commit_message: 'Auto-promote: Merge develop to staging after successful dev tests'
});
console.log('✅ Successfully merged develop to staging branch');
console.log('This will trigger staging deployment automatically');
return response;
} catch (error) {
if (error.status === 409) {
console.log(' No new commits to merge - staging is already up to date');
} else {
throw error;
}
}
- name: Create promotion summary
run: |
echo "## 🎯 Auto-Promotion Summary (Develop → Staging)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Stage | Status | Action |" >> $GITHUB_STEP_SUMMARY
echo "|-------|--------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| Dev Tests | ✅ Passed | Comprehensive validation completed |" >> $GITHUB_STEP_SUMMARY
echo "| Staging Branch | 🚀 Updated | Auto-promotion completed |" >> $GITHUB_STEP_SUMMARY
echo "| Staging Deploy | ⏳ Triggered | Deployment will start automatically |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📋 Tests Performed" >> $GITHUB_STEP_SUMMARY
echo "- Canonical domain accessibility check" >> $GITHUB_STEP_SUMMARY
echo "- Content and functionality validation" >> $GITHUB_STEP_SUMMARY
echo "- Performance testing" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 🔗 Next Steps" >> $GITHUB_STEP_SUMMARY
echo "- Staging deployment will start automatically" >> $GITHUB_STEP_SUMMARY
echo "- Staging tests will run automatically" >> $GITHUB_STEP_SUMMARY
echo "- Production promotion requires manual approval via staging → main merge" >> $GITHUB_STEP_SUMMARY