aidevops 2.52.1 → 2.53.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/VERSION +1 -1
- package/aidevops.sh +15 -9
- package/package.json +4 -4
- package/scripts/npm-postinstall.js +6 -7
- package/setup.sh +1 -1
- package/templates/deploy-templates.sh +144 -0
- package/templates/home/.agent/README.md +33 -0
- package/templates/home/AGENTS.md +96 -0
- package/templates/home/git/.agent/README.md +48 -0
- package/templates/home/git/AGENTS.md +97 -0
- package/templates/standard-functions.sh +179 -0
- package/templates/wordpress-performance-workflow.md +217 -0
- package/.agent/AGENTS.md +0 -614
- package/.agent/accounts.md +0 -65
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +0 -456
- package/.agent/aidevops/api-integrations.md +0 -335
- package/.agent/aidevops/architecture.md +0 -510
- package/.agent/aidevops/configs.md +0 -274
- package/.agent/aidevops/docs.md +0 -244
- package/.agent/aidevops/extension.md +0 -311
- package/.agent/aidevops/mcp-integrations.md +0 -340
- package/.agent/aidevops/mcp-troubleshooting.md +0 -162
- package/.agent/aidevops/memory-patterns.md +0 -172
- package/.agent/aidevops/providers.md +0 -217
- package/.agent/aidevops/recommendations.md +0 -321
- package/.agent/aidevops/requirements.md +0 -301
- package/.agent/aidevops/resources.md +0 -214
- package/.agent/aidevops/security-requirements.md +0 -174
- package/.agent/aidevops/security.md +0 -350
- package/.agent/aidevops/service-links.md +0 -400
- package/.agent/aidevops/services.md +0 -357
- package/.agent/aidevops/setup.md +0 -153
- package/.agent/aidevops/troubleshooting.md +0 -389
- package/.agent/aidevops.md +0 -124
- package/.agent/build-plus.md +0 -244
- package/.agent/content/guidelines.md +0 -109
- package/.agent/content.md +0 -87
- package/.agent/health.md +0 -59
- package/.agent/legal.md +0 -59
- package/.agent/loop-state/full-loop.local.md +0 -16
- package/.agent/loop-state/ralph-loop.local.md +0 -10
- package/.agent/marketing.md +0 -440
- package/.agent/memory/README.md +0 -260
- package/.agent/onboarding.md +0 -796
- package/.agent/plan-plus.md +0 -245
- package/.agent/research.md +0 -100
- package/.agent/sales.md +0 -333
- package/.agent/scripts/101domains-helper.sh +0 -701
- package/.agent/scripts/add-missing-returns.sh +0 -140
- package/.agent/scripts/agent-browser-helper.sh +0 -311
- package/.agent/scripts/agno-setup.sh +0 -712
- package/.agent/scripts/ahrefs-mcp-wrapper.js +0 -168
- package/.agent/scripts/aidevops-update-check.sh +0 -71
- package/.agent/scripts/ampcode-cli.sh +0 -522
- package/.agent/scripts/auto-version-bump.sh +0 -156
- package/.agent/scripts/autogen-helper.sh +0 -512
- package/.agent/scripts/beads-sync-helper.sh +0 -596
- package/.agent/scripts/closte-helper.sh +0 -5
- package/.agent/scripts/cloudron-helper.sh +0 -321
- package/.agent/scripts/codacy-cli-chunked.sh +0 -581
- package/.agent/scripts/codacy-cli.sh +0 -442
- package/.agent/scripts/code-audit-helper.sh +0 -5
- package/.agent/scripts/coderabbit-cli.sh +0 -417
- package/.agent/scripts/coderabbit-pro-analysis.sh +0 -238
- package/.agent/scripts/commands/code-simplifier.md +0 -86
- package/.agent/scripts/commands/full-loop.md +0 -246
- package/.agent/scripts/commands/postflight-loop.md +0 -103
- package/.agent/scripts/commands/recall.md +0 -182
- package/.agent/scripts/commands/remember.md +0 -132
- package/.agent/scripts/commands/save-todo.md +0 -175
- package/.agent/scripts/commands/session-review.md +0 -154
- package/.agent/scripts/comprehensive-quality-fix.sh +0 -106
- package/.agent/scripts/context-builder-helper.sh +0 -522
- package/.agent/scripts/coolify-cli-helper.sh +0 -674
- package/.agent/scripts/coolify-helper.sh +0 -380
- package/.agent/scripts/crawl4ai-examples.sh +0 -401
- package/.agent/scripts/crawl4ai-helper.sh +0 -1078
- package/.agent/scripts/crewai-helper.sh +0 -681
- package/.agent/scripts/dev-browser-helper.sh +0 -513
- package/.agent/scripts/dns-helper.sh +0 -396
- package/.agent/scripts/domain-research-helper.sh +0 -917
- package/.agent/scripts/dspy-helper.sh +0 -285
- package/.agent/scripts/dspyground-helper.sh +0 -291
- package/.agent/scripts/eeat-score-helper.sh +0 -1242
- package/.agent/scripts/efficient-return-fix.sh +0 -92
- package/.agent/scripts/extract-opencode-prompts.sh +0 -128
- package/.agent/scripts/find-missing-returns.sh +0 -113
- package/.agent/scripts/fix-auth-headers.sh +0 -104
- package/.agent/scripts/fix-common-strings.sh +0 -254
- package/.agent/scripts/fix-content-type.sh +0 -100
- package/.agent/scripts/fix-error-messages.sh +0 -130
- package/.agent/scripts/fix-misplaced-returns.sh +0 -74
- package/.agent/scripts/fix-remaining-literals.sh +0 -152
- package/.agent/scripts/fix-return-statements.sh +0 -41
- package/.agent/scripts/fix-s131-default-cases.sh +0 -249
- package/.agent/scripts/fix-sc2155-simple.sh +0 -102
- package/.agent/scripts/fix-shellcheck-critical.sh +0 -187
- package/.agent/scripts/fix-string-literals.sh +0 -273
- package/.agent/scripts/full-loop-helper.sh +0 -773
- package/.agent/scripts/generate-opencode-agents.sh +0 -497
- package/.agent/scripts/generate-opencode-commands.sh +0 -1629
- package/.agent/scripts/generate-skills.sh +0 -366
- package/.agent/scripts/git-platforms-helper.sh +0 -640
- package/.agent/scripts/gitea-cli-helper.sh +0 -743
- package/.agent/scripts/github-cli-helper.sh +0 -702
- package/.agent/scripts/gitlab-cli-helper.sh +0 -682
- package/.agent/scripts/gsc-add-user-helper.sh +0 -325
- package/.agent/scripts/gsc-sitemap-helper.sh +0 -678
- package/.agent/scripts/hetzner-helper.sh +0 -485
- package/.agent/scripts/hostinger-helper.sh +0 -229
- package/.agent/scripts/keyword-research-helper.sh +0 -1815
- package/.agent/scripts/langflow-helper.sh +0 -544
- package/.agent/scripts/linkedin-automation.py +0 -241
- package/.agent/scripts/linter-manager.sh +0 -599
- package/.agent/scripts/linters-local.sh +0 -434
- package/.agent/scripts/list-keys-helper.sh +0 -488
- package/.agent/scripts/local-browser-automation.py +0 -339
- package/.agent/scripts/localhost-helper.sh +0 -744
- package/.agent/scripts/loop-common.sh +0 -806
- package/.agent/scripts/mainwp-helper.sh +0 -728
- package/.agent/scripts/markdown-formatter.sh +0 -338
- package/.agent/scripts/markdown-lint-fix.sh +0 -311
- package/.agent/scripts/mass-fix-returns.sh +0 -58
- package/.agent/scripts/mcp-diagnose.sh +0 -167
- package/.agent/scripts/mcp-inspector-helper.sh +0 -449
- package/.agent/scripts/memory-helper.sh +0 -650
- package/.agent/scripts/monitor-code-review.sh +0 -255
- package/.agent/scripts/onboarding-helper.sh +0 -706
- package/.agent/scripts/opencode-github-setup-helper.sh +0 -797
- package/.agent/scripts/opencode-test-helper.sh +0 -213
- package/.agent/scripts/pagespeed-helper.sh +0 -464
- package/.agent/scripts/pandoc-helper.sh +0 -362
- package/.agent/scripts/postflight-check.sh +0 -555
- package/.agent/scripts/pre-commit-hook.sh +0 -259
- package/.agent/scripts/pre-edit-check.sh +0 -169
- package/.agent/scripts/qlty-cli.sh +0 -356
- package/.agent/scripts/quality-cli-manager.sh +0 -525
- package/.agent/scripts/quality-feedback-helper.sh +0 -462
- package/.agent/scripts/quality-fix.sh +0 -263
- package/.agent/scripts/quality-loop-helper.sh +0 -1108
- package/.agent/scripts/ralph-loop-helper.sh +0 -836
- package/.agent/scripts/ralph-upstream-check.sh +0 -341
- package/.agent/scripts/secretlint-helper.sh +0 -847
- package/.agent/scripts/servers-helper.sh +0 -241
- package/.agent/scripts/ses-helper.sh +0 -619
- package/.agent/scripts/session-review-helper.sh +0 -404
- package/.agent/scripts/setup-linters-wizard.sh +0 -379
- package/.agent/scripts/setup-local-api-keys.sh +0 -330
- package/.agent/scripts/setup-mcp-integrations.sh +0 -472
- package/.agent/scripts/shared-constants.sh +0 -246
- package/.agent/scripts/site-crawler-helper.sh +0 -1487
- package/.agent/scripts/snyk-helper.sh +0 -940
- package/.agent/scripts/sonarcloud-autofix.sh +0 -193
- package/.agent/scripts/sonarcloud-cli.sh +0 -191
- package/.agent/scripts/sonarscanner-cli.sh +0 -455
- package/.agent/scripts/spaceship-helper.sh +0 -747
- package/.agent/scripts/stagehand-helper.sh +0 -321
- package/.agent/scripts/stagehand-python-helper.sh +0 -321
- package/.agent/scripts/stagehand-python-setup.sh +0 -441
- package/.agent/scripts/stagehand-setup.sh +0 -439
- package/.agent/scripts/system-cleanup.sh +0 -340
- package/.agent/scripts/terminal-title-helper.sh +0 -388
- package/.agent/scripts/terminal-title-setup.sh +0 -549
- package/.agent/scripts/test-stagehand-both-integration.sh +0 -317
- package/.agent/scripts/test-stagehand-integration.sh +0 -309
- package/.agent/scripts/test-stagehand-python-integration.sh +0 -341
- package/.agent/scripts/todo-ready.sh +0 -263
- package/.agent/scripts/tool-version-check.sh +0 -362
- package/.agent/scripts/toon-helper.sh +0 -469
- package/.agent/scripts/twilio-helper.sh +0 -917
- package/.agent/scripts/updown-helper.sh +0 -279
- package/.agent/scripts/validate-mcp-integrations.sh +0 -250
- package/.agent/scripts/validate-version-consistency.sh +0 -131
- package/.agent/scripts/vaultwarden-helper.sh +0 -597
- package/.agent/scripts/vercel-cli-helper.sh +0 -816
- package/.agent/scripts/verify-mirrors.sh +0 -169
- package/.agent/scripts/version-manager.sh +0 -831
- package/.agent/scripts/webhosting-helper.sh +0 -471
- package/.agent/scripts/webhosting-verify.sh +0 -238
- package/.agent/scripts/wordpress-mcp-helper.sh +0 -508
- package/.agent/scripts/worktree-helper.sh +0 -595
- package/.agent/scripts/worktree-sessions.sh +0 -577
- package/.agent/seo/dataforseo.md +0 -215
- package/.agent/seo/domain-research.md +0 -532
- package/.agent/seo/eeat-score.md +0 -659
- package/.agent/seo/google-search-console.md +0 -366
- package/.agent/seo/gsc-sitemaps.md +0 -282
- package/.agent/seo/keyword-research.md +0 -521
- package/.agent/seo/serper.md +0 -278
- package/.agent/seo/site-crawler.md +0 -387
- package/.agent/seo.md +0 -236
- package/.agent/services/accounting/quickfile.md +0 -159
- package/.agent/services/communications/telfon.md +0 -470
- package/.agent/services/communications/twilio.md +0 -569
- package/.agent/services/crm/fluentcrm.md +0 -449
- package/.agent/services/email/ses.md +0 -399
- package/.agent/services/hosting/101domains.md +0 -378
- package/.agent/services/hosting/closte.md +0 -177
- package/.agent/services/hosting/cloudflare.md +0 -251
- package/.agent/services/hosting/cloudron.md +0 -478
- package/.agent/services/hosting/dns-providers.md +0 -335
- package/.agent/services/hosting/domain-purchasing.md +0 -344
- package/.agent/services/hosting/hetzner.md +0 -327
- package/.agent/services/hosting/hostinger.md +0 -287
- package/.agent/services/hosting/localhost.md +0 -419
- package/.agent/services/hosting/spaceship.md +0 -353
- package/.agent/services/hosting/webhosting.md +0 -330
- package/.agent/social-media.md +0 -69
- package/.agent/templates/plans-template.md +0 -114
- package/.agent/templates/prd-template.md +0 -129
- package/.agent/templates/tasks-template.md +0 -108
- package/.agent/templates/todo-template.md +0 -89
- package/.agent/tools/ai-assistants/agno.md +0 -471
- package/.agent/tools/ai-assistants/capsolver.md +0 -326
- package/.agent/tools/ai-assistants/configuration.md +0 -221
- package/.agent/tools/ai-assistants/overview.md +0 -209
- package/.agent/tools/ai-assistants/status.md +0 -171
- package/.agent/tools/ai-assistants/windsurf.md +0 -193
- package/.agent/tools/ai-orchestration/autogen.md +0 -406
- package/.agent/tools/ai-orchestration/crewai.md +0 -445
- package/.agent/tools/ai-orchestration/langflow.md +0 -405
- package/.agent/tools/ai-orchestration/openprose.md +0 -487
- package/.agent/tools/ai-orchestration/overview.md +0 -362
- package/.agent/tools/ai-orchestration/packaging.md +0 -647
- package/.agent/tools/browser/agent-browser.md +0 -464
- package/.agent/tools/browser/browser-automation.md +0 -400
- package/.agent/tools/browser/chrome-devtools.md +0 -282
- package/.agent/tools/browser/crawl4ai-integration.md +0 -422
- package/.agent/tools/browser/crawl4ai-resources.md +0 -277
- package/.agent/tools/browser/crawl4ai-usage.md +0 -416
- package/.agent/tools/browser/crawl4ai.md +0 -585
- package/.agent/tools/browser/dev-browser.md +0 -341
- package/.agent/tools/browser/pagespeed.md +0 -260
- package/.agent/tools/browser/playwright.md +0 -266
- package/.agent/tools/browser/playwriter.md +0 -310
- package/.agent/tools/browser/stagehand-examples.md +0 -456
- package/.agent/tools/browser/stagehand-python.md +0 -483
- package/.agent/tools/browser/stagehand.md +0 -421
- package/.agent/tools/build-agent/agent-review.md +0 -224
- package/.agent/tools/build-agent/build-agent.md +0 -784
- package/.agent/tools/build-mcp/aidevops-plugin.md +0 -476
- package/.agent/tools/build-mcp/api-wrapper.md +0 -445
- package/.agent/tools/build-mcp/build-mcp.md +0 -240
- package/.agent/tools/build-mcp/deployment.md +0 -401
- package/.agent/tools/build-mcp/server-patterns.md +0 -632
- package/.agent/tools/build-mcp/transports.md +0 -366
- package/.agent/tools/code-review/auditing.md +0 -383
- package/.agent/tools/code-review/automation.md +0 -219
- package/.agent/tools/code-review/best-practices.md +0 -203
- package/.agent/tools/code-review/codacy.md +0 -151
- package/.agent/tools/code-review/code-simplifier.md +0 -174
- package/.agent/tools/code-review/code-standards.md +0 -309
- package/.agent/tools/code-review/coderabbit.md +0 -101
- package/.agent/tools/code-review/management.md +0 -155
- package/.agent/tools/code-review/qlty.md +0 -248
- package/.agent/tools/code-review/secretlint.md +0 -565
- package/.agent/tools/code-review/setup.md +0 -250
- package/.agent/tools/code-review/snyk.md +0 -563
- package/.agent/tools/code-review/tools.md +0 -230
- package/.agent/tools/content/summarize.md +0 -353
- package/.agent/tools/context/augment-context-engine.md +0 -468
- package/.agent/tools/context/context-builder-agent.md +0 -76
- package/.agent/tools/context/context-builder.md +0 -375
- package/.agent/tools/context/context7.md +0 -371
- package/.agent/tools/context/dspy.md +0 -302
- package/.agent/tools/context/dspyground.md +0 -374
- package/.agent/tools/context/llm-tldr.md +0 -219
- package/.agent/tools/context/osgrep.md +0 -488
- package/.agent/tools/context/prompt-optimization.md +0 -338
- package/.agent/tools/context/toon.md +0 -292
- package/.agent/tools/conversion/pandoc.md +0 -304
- package/.agent/tools/credentials/api-key-management.md +0 -154
- package/.agent/tools/credentials/api-key-setup.md +0 -224
- package/.agent/tools/credentials/environment-variables.md +0 -180
- package/.agent/tools/credentials/vaultwarden.md +0 -382
- package/.agent/tools/data-extraction/outscraper.md +0 -974
- package/.agent/tools/deployment/coolify-cli.md +0 -388
- package/.agent/tools/deployment/coolify-setup.md +0 -353
- package/.agent/tools/deployment/coolify.md +0 -345
- package/.agent/tools/deployment/vercel.md +0 -390
- package/.agent/tools/git/authentication.md +0 -132
- package/.agent/tools/git/gitea-cli.md +0 -193
- package/.agent/tools/git/github-actions.md +0 -207
- package/.agent/tools/git/github-cli.md +0 -223
- package/.agent/tools/git/gitlab-cli.md +0 -190
- package/.agent/tools/git/opencode-github-security.md +0 -350
- package/.agent/tools/git/opencode-github.md +0 -328
- package/.agent/tools/git/opencode-gitlab.md +0 -252
- package/.agent/tools/git/security.md +0 -196
- package/.agent/tools/git.md +0 -207
- package/.agent/tools/opencode/oh-my-opencode.md +0 -375
- package/.agent/tools/opencode/opencode-anthropic-auth.md +0 -446
- package/.agent/tools/opencode/opencode.md +0 -651
- package/.agent/tools/social-media/bird.md +0 -437
- package/.agent/tools/task-management/beads.md +0 -336
- package/.agent/tools/terminal/terminal-title.md +0 -251
- package/.agent/tools/ui/shadcn.md +0 -196
- package/.agent/tools/ui/ui-skills.md +0 -115
- package/.agent/tools/wordpress/localwp.md +0 -311
- package/.agent/tools/wordpress/mainwp.md +0 -391
- package/.agent/tools/wordpress/scf.md +0 -527
- package/.agent/tools/wordpress/wp-admin.md +0 -729
- package/.agent/tools/wordpress/wp-dev.md +0 -940
- package/.agent/tools/wordpress/wp-preferred.md +0 -398
- package/.agent/tools/wordpress.md +0 -95
- package/.agent/workflows/branch/bugfix.md +0 -63
- package/.agent/workflows/branch/chore.md +0 -95
- package/.agent/workflows/branch/experiment.md +0 -115
- package/.agent/workflows/branch/feature.md +0 -59
- package/.agent/workflows/branch/hotfix.md +0 -98
- package/.agent/workflows/branch/refactor.md +0 -92
- package/.agent/workflows/branch/release.md +0 -96
- package/.agent/workflows/branch.md +0 -347
- package/.agent/workflows/bug-fixing.md +0 -267
- package/.agent/workflows/changelog.md +0 -129
- package/.agent/workflows/code-audit-remote.md +0 -279
- package/.agent/workflows/conversation-starter.md +0 -69
- package/.agent/workflows/error-feedback.md +0 -578
- package/.agent/workflows/feature-development.md +0 -355
- package/.agent/workflows/git-workflow.md +0 -702
- package/.agent/workflows/multi-repo-workspace.md +0 -268
- package/.agent/workflows/plans.md +0 -709
- package/.agent/workflows/postflight.md +0 -604
- package/.agent/workflows/pr.md +0 -571
- package/.agent/workflows/preflight.md +0 -278
- package/.agent/workflows/ralph-loop.md +0 -773
- package/.agent/workflows/release.md +0 -498
- package/.agent/workflows/session-manager.md +0 -254
- package/.agent/workflows/session-review.md +0 -311
- package/.agent/workflows/sql-migrations.md +0 -631
- package/.agent/workflows/version-bump.md +0 -283
- package/.agent/workflows/wiki-update.md +0 -333
- package/.agent/workflows/worktree.md +0 -477
|
@@ -1,604 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Verify release health after tag and GitHub release
|
|
3
|
-
mode: subagent
|
|
4
|
-
tools:
|
|
5
|
-
read: true
|
|
6
|
-
write: false
|
|
7
|
-
edit: false
|
|
8
|
-
bash: true
|
|
9
|
-
glob: true
|
|
10
|
-
grep: true
|
|
11
|
-
webfetch: true
|
|
12
|
-
task: true
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Postflight Verification Workflow
|
|
16
|
-
|
|
17
|
-
<!-- AI-CONTEXT-START -->
|
|
18
|
-
|
|
19
|
-
## Quick Reference
|
|
20
|
-
|
|
21
|
-
- **Purpose**: Verify release health after `release.md` completes
|
|
22
|
-
- **Trigger**: After tag creation and GitHub release publication
|
|
23
|
-
- **Timeout**: 10 minutes for CI/CD, 5 minutes for code review tools
|
|
24
|
-
- **Mode**: Manual by default, can be automated via GitHub Actions
|
|
25
|
-
- **Commands**:
|
|
26
|
-
- `gh run list --workflow=code-quality.yml --limit=5`
|
|
27
|
-
- `gh api repos/{owner}/{repo}/commits/{sha}/check-runs`
|
|
28
|
-
- `.agent/scripts/linters-local.sh`
|
|
29
|
-
- **Rollback**: See [Rollback Procedures](#rollback-procedures)
|
|
30
|
-
|
|
31
|
-
<!-- AI-CONTEXT-END -->
|
|
32
|
-
|
|
33
|
-
This workflow monitors CI/CD pipelines and code review feedback AFTER a release is published. It ensures no regressions, security issues, or quality degradations were introduced.
|
|
34
|
-
|
|
35
|
-
## Overview
|
|
36
|
-
|
|
37
|
-
Postflight verification is the final gate after release. While pre-release checks catch most issues, postflight catches:
|
|
38
|
-
|
|
39
|
-
- CI/CD failures triggered by the release tag
|
|
40
|
-
- Delayed code review tool analysis (CodeRabbit, Codacy, SonarCloud)
|
|
41
|
-
- Security vulnerabilities detected post-merge
|
|
42
|
-
- Integration issues only visible in production-like environments
|
|
43
|
-
|
|
44
|
-
## Critical: Avoiding Circular Dependencies
|
|
45
|
-
|
|
46
|
-
When checking CI/CD status, **always exclude the postflight workflow itself** to avoid circular dependencies:
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# WRONG - includes postflight workflow, causes infinite wait
|
|
50
|
-
gh api repos/{owner}/{repo}/commits/{sha}/check-runs \
|
|
51
|
-
--jq '[.check_runs[] | select(.status != "completed")] | length'
|
|
52
|
-
|
|
53
|
-
# CORRECT - excludes postflight workflow
|
|
54
|
-
SELF_NAME="Verify Release Health"
|
|
55
|
-
gh api repos/{owner}/{repo}/commits/{sha}/check-runs \
|
|
56
|
-
--jq "[.check_runs[] | select(.status != \"completed\" and .name != \"$SELF_NAME\")] | length"
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Checking Both Main and Tag Workflows
|
|
60
|
-
|
|
61
|
-
After a release, workflows run on **two different refs**:
|
|
62
|
-
1. **Main branch workflows** - triggered by the merge commit
|
|
63
|
-
2. **Tag workflows** - triggered by the release/tag creation
|
|
64
|
-
|
|
65
|
-
When running local postflight, check BOTH:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# Check main branch workflows
|
|
69
|
-
gh run list --branch=main --limit=5
|
|
70
|
-
|
|
71
|
-
# Check tag-triggered workflows (including postflight.yml)
|
|
72
|
-
gh run list --branch=v{VERSION} --limit=5
|
|
73
|
-
|
|
74
|
-
# Or check all recent runs
|
|
75
|
-
gh run list --limit=10 --json name,status,conclusion,headBranch
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Postflight Checklist
|
|
79
|
-
|
|
80
|
-
### 1. CI/CD Pipeline Status
|
|
81
|
-
|
|
82
|
-
| Check | Command | Expected |
|
|
83
|
-
|-------|---------|----------|
|
|
84
|
-
| GitHub Actions | `gh run list --limit=5` | All workflows passing |
|
|
85
|
-
| Tag-triggered workflows | `gh run list --workflow=code-quality.yml` | Success status |
|
|
86
|
-
| Version validation | `gh run list --workflow=version-validation.yml` | Success status |
|
|
87
|
-
|
|
88
|
-
### 2. Code Quality Tools
|
|
89
|
-
|
|
90
|
-
| Tool | Check Method | Threshold |
|
|
91
|
-
|------|--------------|-----------|
|
|
92
|
-
| SonarCloud | API or dashboard | No new bugs, vulnerabilities, or code smells |
|
|
93
|
-
| Codacy | Dashboard or CLI | Grade maintained (A/B) |
|
|
94
|
-
| CodeRabbit | PR comments | No blocking issues |
|
|
95
|
-
| Qlty | CLI check | No new violations |
|
|
96
|
-
|
|
97
|
-
### 3. Security Scanning
|
|
98
|
-
|
|
99
|
-
| Tool | Check Method | Threshold |
|
|
100
|
-
|------|--------------|-----------|
|
|
101
|
-
| Snyk | `snyk test` | No new high/critical vulnerabilities |
|
|
102
|
-
| Secretlint | `secretlint "**/*"` | No exposed secrets |
|
|
103
|
-
| npm audit | `npm audit` | No high/critical issues |
|
|
104
|
-
| Dependabot | GitHub Security tab | No new alerts |
|
|
105
|
-
|
|
106
|
-
## Verification Commands
|
|
107
|
-
|
|
108
|
-
### Check GitHub Actions Status
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
# List recent workflow runs (includes both main and tag branches)
|
|
112
|
-
gh run list --limit=10
|
|
113
|
-
|
|
114
|
-
# Check specific workflow
|
|
115
|
-
gh run list --workflow=code-quality.yml --limit=5
|
|
116
|
-
|
|
117
|
-
# IMPORTANT: Check tag-triggered workflows separately
|
|
118
|
-
gh run list --branch=v{VERSION} --limit=5
|
|
119
|
-
|
|
120
|
-
# Get detailed status for latest run
|
|
121
|
-
gh run view $(gh run list --limit=1 --json databaseId -q '.[0].databaseId')
|
|
122
|
-
|
|
123
|
-
# Check all workflows for a specific commit/tag (excluding postflight to avoid circular check)
|
|
124
|
-
SELF_NAME="Verify Release Health"
|
|
125
|
-
gh api repos/{owner}/{repo}/commits/{sha}/check-runs \
|
|
126
|
-
--jq ".check_runs[] | select(.name != \"$SELF_NAME\") | {name, status, conclusion}"
|
|
127
|
-
|
|
128
|
-
# Wait for workflows to complete (with timeout)
|
|
129
|
-
gh run watch $(gh run list --limit=1 --json databaseId -q '.[0].databaseId') --exit-status
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
**Important**: When running postflight locally after a release:
|
|
133
|
-
1. Wait for the GH Actions postflight.yml workflow to complete first
|
|
134
|
-
2. Check its status explicitly: `gh run list --workflow=postflight.yml --limit=1`
|
|
135
|
-
3. Only declare success if ALL workflows (including postflight.yml) passed
|
|
136
|
-
|
|
137
|
-
### Check SonarCloud Status
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
# Get project quality gate status
|
|
141
|
-
curl -s "https://sonarcloud.io/api/qualitygates/project_status?projectKey=marcusquinn_aidevops" | jq '.projectStatus.status'
|
|
142
|
-
|
|
143
|
-
# Get current issues count
|
|
144
|
-
curl -s "https://sonarcloud.io/api/issues/search?componentKeys=marcusquinn_aidevops&resolved=false&ps=1" | jq '.total'
|
|
145
|
-
|
|
146
|
-
# Get detailed metrics
|
|
147
|
-
curl -s "https://sonarcloud.io/api/measures/component?component=marcusquinn_aidevops&metricKeys=bugs,vulnerabilities,code_smells,security_hotspots" | jq '.component.measures'
|
|
148
|
-
|
|
149
|
-
# Compare with previous analysis
|
|
150
|
-
curl -s "https://sonarcloud.io/api/measures/search_history?component=marcusquinn_aidevops&metrics=bugs,vulnerabilities&ps=2" | jq '.measures'
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
### Check Codacy Status
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
# Using Codacy CLI (if configured)
|
|
157
|
-
./.agent/scripts/codacy-cli.sh status
|
|
158
|
-
|
|
159
|
-
# Check via API (requires CODACY_API_TOKEN)
|
|
160
|
-
curl -s -H "api-token: $CODACY_API_TOKEN" \
|
|
161
|
-
"https://api.codacy.com/api/v3/organizations/gh/marcusquinn/repositories/aidevops" | jq '.data.grade'
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Check Security Status
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
# Run Snyk security scan
|
|
168
|
-
./.agent/scripts/snyk-helper.sh test
|
|
169
|
-
|
|
170
|
-
# Check for secrets
|
|
171
|
-
secretlint "**/*" --format compact
|
|
172
|
-
|
|
173
|
-
# npm audit (if applicable)
|
|
174
|
-
npm audit --audit-level=high
|
|
175
|
-
|
|
176
|
-
# Full security scan
|
|
177
|
-
./.agent/scripts/snyk-helper.sh full
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Comprehensive Postflight Script
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
#!/bin/bash
|
|
184
|
-
# postflight-check.sh - Run all postflight verifications
|
|
185
|
-
|
|
186
|
-
set -euo pipefail
|
|
187
|
-
|
|
188
|
-
TIMEOUT_CI=600 # 10 minutes for CI/CD
|
|
189
|
-
TIMEOUT_TOOLS=300 # 5 minutes for code review tools
|
|
190
|
-
POLL_INTERVAL=30 # Check every 30 seconds
|
|
191
|
-
|
|
192
|
-
echo "=== Postflight Verification ==="
|
|
193
|
-
echo "Started: $(date)"
|
|
194
|
-
echo ""
|
|
195
|
-
|
|
196
|
-
# 1. Check GitHub Actions
|
|
197
|
-
echo "--- CI/CD Pipeline Status ---"
|
|
198
|
-
LATEST_RUN=$(gh run list --limit=1 --json databaseId,status,conclusion -q '.[0]')
|
|
199
|
-
RUN_ID=$(echo "$LATEST_RUN" | jq -r '.databaseId')
|
|
200
|
-
STATUS=$(echo "$LATEST_RUN" | jq -r '.status')
|
|
201
|
-
|
|
202
|
-
if [[ "$STATUS" == "in_progress" || "$STATUS" == "queued" ]]; then
|
|
203
|
-
echo "Waiting for workflow $RUN_ID to complete..."
|
|
204
|
-
timeout $TIMEOUT_CI gh run watch "$RUN_ID" --exit-status || {
|
|
205
|
-
echo "ERROR: CI/CD pipeline failed or timed out"
|
|
206
|
-
exit 1
|
|
207
|
-
}
|
|
208
|
-
fi
|
|
209
|
-
|
|
210
|
-
CONCLUSION=$(gh run view "$RUN_ID" --json conclusion -q '.conclusion')
|
|
211
|
-
if [[ "$CONCLUSION" != "success" ]]; then
|
|
212
|
-
echo "ERROR: CI/CD pipeline conclusion: $CONCLUSION"
|
|
213
|
-
gh run view "$RUN_ID" --log-failed
|
|
214
|
-
exit 1
|
|
215
|
-
fi
|
|
216
|
-
echo "CI/CD: PASSED"
|
|
217
|
-
|
|
218
|
-
# 2. Check SonarCloud
|
|
219
|
-
echo ""
|
|
220
|
-
echo "--- SonarCloud Status ---"
|
|
221
|
-
SONAR_STATUS=$(curl -s "https://sonarcloud.io/api/qualitygates/project_status?projectKey=marcusquinn_aidevops" | jq -r '.projectStatus.status')
|
|
222
|
-
if [[ "$SONAR_STATUS" != "OK" ]]; then
|
|
223
|
-
echo "WARNING: SonarCloud quality gate: $SONAR_STATUS"
|
|
224
|
-
curl -s "https://sonarcloud.io/api/issues/search?componentKeys=marcusquinn_aidevops&resolved=false&severities=BLOCKER,CRITICAL&ps=10" | jq '.issues[] | {rule, message, component}'
|
|
225
|
-
else
|
|
226
|
-
echo "SonarCloud: PASSED"
|
|
227
|
-
fi
|
|
228
|
-
|
|
229
|
-
# 3. Check for new security issues
|
|
230
|
-
echo ""
|
|
231
|
-
echo "--- Security Status ---"
|
|
232
|
-
if command -v snyk &> /dev/null; then
|
|
233
|
-
if snyk test --severity-threshold=high --json 2>/dev/null | jq -e '.vulnerabilities | length == 0' > /dev/null; then
|
|
234
|
-
echo "Snyk: PASSED (no high/critical vulnerabilities)"
|
|
235
|
-
else
|
|
236
|
-
echo "WARNING: Snyk found high/critical vulnerabilities"
|
|
237
|
-
snyk test --severity-threshold=high
|
|
238
|
-
fi
|
|
239
|
-
else
|
|
240
|
-
echo "Snyk: SKIPPED (not installed)"
|
|
241
|
-
fi
|
|
242
|
-
|
|
243
|
-
# 4. Check Secretlint
|
|
244
|
-
if command -v secretlint &> /dev/null; then
|
|
245
|
-
if secretlint "**/*" --format compact 2>/dev/null; then
|
|
246
|
-
echo "Secretlint: PASSED"
|
|
247
|
-
else
|
|
248
|
-
echo "ERROR: Secretlint found potential secrets"
|
|
249
|
-
exit 1
|
|
250
|
-
fi
|
|
251
|
-
else
|
|
252
|
-
echo "Secretlint: SKIPPED (not installed)"
|
|
253
|
-
fi
|
|
254
|
-
|
|
255
|
-
echo ""
|
|
256
|
-
echo "=== Postflight Verification Complete ==="
|
|
257
|
-
echo "Finished: $(date)"
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
## Automated Postflight (GitHub Actions)
|
|
261
|
-
|
|
262
|
-
Add this workflow to run postflight checks automatically after releases:
|
|
263
|
-
|
|
264
|
-
```yaml
|
|
265
|
-
# .github/workflows/postflight.yml
|
|
266
|
-
name: Postflight Verification
|
|
267
|
-
|
|
268
|
-
on:
|
|
269
|
-
release:
|
|
270
|
-
types: [published]
|
|
271
|
-
workflow_dispatch:
|
|
272
|
-
inputs:
|
|
273
|
-
tag:
|
|
274
|
-
description: 'Tag to verify'
|
|
275
|
-
required: false
|
|
276
|
-
|
|
277
|
-
jobs:
|
|
278
|
-
postflight:
|
|
279
|
-
name: Verify Release Health
|
|
280
|
-
runs-on: ubuntu-latest
|
|
281
|
-
timeout-minutes: 15
|
|
282
|
-
|
|
283
|
-
steps:
|
|
284
|
-
- name: Checkout
|
|
285
|
-
uses: actions/checkout@v4
|
|
286
|
-
with:
|
|
287
|
-
ref: ${{ github.event.inputs.tag || github.ref }}
|
|
288
|
-
fetch-depth: 0
|
|
289
|
-
|
|
290
|
-
- name: Wait for CI/CD Pipelines
|
|
291
|
-
run: |
|
|
292
|
-
echo "Waiting for all check runs to complete..."
|
|
293
|
-
sleep 60 # Initial wait for workflows to start
|
|
294
|
-
|
|
295
|
-
# Poll for completion
|
|
296
|
-
for i in {1..20}; do
|
|
297
|
-
PENDING=$(gh api repos/${{ github.repository }}/commits/${{ github.sha }}/check-runs \
|
|
298
|
-
--jq '[.check_runs[] | select(.status != "completed")] | length')
|
|
299
|
-
|
|
300
|
-
if [[ "$PENDING" == "0" ]]; then
|
|
301
|
-
echo "All check runs completed"
|
|
302
|
-
break
|
|
303
|
-
fi
|
|
304
|
-
|
|
305
|
-
echo "Waiting for $PENDING check runs... (attempt $i/20)"
|
|
306
|
-
sleep 30
|
|
307
|
-
done
|
|
308
|
-
env:
|
|
309
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
310
|
-
|
|
311
|
-
- name: Verify CI/CD Status
|
|
312
|
-
run: |
|
|
313
|
-
FAILED=$(gh api repos/${{ github.repository }}/commits/${{ github.sha }}/check-runs \
|
|
314
|
-
--jq '[.check_runs[] | select(.conclusion == "failure")] | length')
|
|
315
|
-
|
|
316
|
-
if [[ "$FAILED" != "0" ]]; then
|
|
317
|
-
echo "::error::$FAILED check runs failed"
|
|
318
|
-
gh api repos/${{ github.repository }}/commits/${{ github.sha }}/check-runs \
|
|
319
|
-
--jq '.check_runs[] | select(.conclusion == "failure") | "FAILED: \(.name)"'
|
|
320
|
-
exit 1
|
|
321
|
-
fi
|
|
322
|
-
|
|
323
|
-
echo "All CI/CD checks passed"
|
|
324
|
-
env:
|
|
325
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
326
|
-
|
|
327
|
-
- name: Check SonarCloud Quality Gate
|
|
328
|
-
run: |
|
|
329
|
-
STATUS=$(curl -s "https://sonarcloud.io/api/qualitygates/project_status?projectKey=marcusquinn_aidevops" \
|
|
330
|
-
| jq -r '.projectStatus.status')
|
|
331
|
-
|
|
332
|
-
if [[ "$STATUS" != "OK" ]]; then
|
|
333
|
-
echo "::warning::SonarCloud quality gate status: $STATUS"
|
|
334
|
-
|
|
335
|
-
# Get new issues since last analysis
|
|
336
|
-
curl -s "https://sonarcloud.io/api/issues/search?componentKeys=marcusquinn_aidevops&resolved=false&createdAfter=$(date -d '1 hour ago' -Iseconds)&ps=10" \
|
|
337
|
-
| jq '.issues[] | "[\(.severity)] \(.message) (\(.component))"'
|
|
338
|
-
else
|
|
339
|
-
echo "SonarCloud quality gate: PASSED"
|
|
340
|
-
fi
|
|
341
|
-
|
|
342
|
-
- name: Security Scan
|
|
343
|
-
run: |
|
|
344
|
-
# Install Snyk
|
|
345
|
-
npm install -g snyk
|
|
346
|
-
|
|
347
|
-
# Run security scan
|
|
348
|
-
snyk auth ${{ secrets.SNYK_TOKEN }} || true
|
|
349
|
-
snyk test --severity-threshold=high || echo "::warning::Security vulnerabilities found"
|
|
350
|
-
env:
|
|
351
|
-
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
352
|
-
continue-on-error: true
|
|
353
|
-
|
|
354
|
-
- name: Check for Secrets
|
|
355
|
-
run: |
|
|
356
|
-
npm install -g secretlint @secretlint/secretlint-rule-preset-recommend
|
|
357
|
-
secretlint "**/*" --format compact || {
|
|
358
|
-
echo "::error::Potential secrets detected in codebase"
|
|
359
|
-
exit 1
|
|
360
|
-
}
|
|
361
|
-
continue-on-error: true
|
|
362
|
-
|
|
363
|
-
- name: Generate Postflight Report
|
|
364
|
-
if: always()
|
|
365
|
-
run: |
|
|
366
|
-
echo "## Postflight Verification Report" >> $GITHUB_STEP_SUMMARY
|
|
367
|
-
echo "" >> $GITHUB_STEP_SUMMARY
|
|
368
|
-
echo "**Release**: ${{ github.event.release.tag_name || github.ref_name }}" >> $GITHUB_STEP_SUMMARY
|
|
369
|
-
echo "**Commit**: ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
|
|
370
|
-
echo "**Time**: $(date -u)" >> $GITHUB_STEP_SUMMARY
|
|
371
|
-
echo "" >> $GITHUB_STEP_SUMMARY
|
|
372
|
-
|
|
373
|
-
# Add check run summary
|
|
374
|
-
echo "### CI/CD Status" >> $GITHUB_STEP_SUMMARY
|
|
375
|
-
gh api repos/${{ github.repository }}/commits/${{ github.sha }}/check-runs \
|
|
376
|
-
--jq '.check_runs[] | "- **\(.name)**: \(.conclusion // .status)"' >> $GITHUB_STEP_SUMMARY
|
|
377
|
-
env:
|
|
378
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
379
|
-
|
|
380
|
-
- name: Notify on Failure
|
|
381
|
-
if: failure()
|
|
382
|
-
run: |
|
|
383
|
-
echo "::error::Postflight verification failed for release ${{ github.event.release.tag_name }}"
|
|
384
|
-
echo "Review the logs and consider rollback if critical issues found."
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
## Timeout Strategy
|
|
388
|
-
|
|
389
|
-
| Phase | Timeout | Rationale |
|
|
390
|
-
|-------|---------|-----------|
|
|
391
|
-
| CI/CD completion | 10 min | Most workflows complete in 5-7 minutes |
|
|
392
|
-
| SonarCloud analysis | 5 min | Analysis typically completes within 2-3 minutes |
|
|
393
|
-
| Security scans | 5 min | Snyk/Secretlint are fast for small-medium projects |
|
|
394
|
-
| Total postflight | 15 min | Allow buffer for retries and network latency |
|
|
395
|
-
|
|
396
|
-
### Polling Strategy
|
|
397
|
-
|
|
398
|
-
```bash
|
|
399
|
-
# Recommended polling intervals
|
|
400
|
-
INITIAL_WAIT=60 # Wait for workflows to start
|
|
401
|
-
POLL_INTERVAL=30 # Check every 30 seconds
|
|
402
|
-
MAX_ATTEMPTS=20 # 20 * 30s = 10 minutes max wait
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
## Manual vs Automatic Mode
|
|
406
|
-
|
|
407
|
-
### Manual Mode (Default)
|
|
408
|
-
|
|
409
|
-
Run postflight checks manually after release:
|
|
410
|
-
|
|
411
|
-
```bash
|
|
412
|
-
# After release.md completes
|
|
413
|
-
./.agent/scripts/postflight-check.sh
|
|
414
|
-
|
|
415
|
-
# Or individual checks
|
|
416
|
-
gh run list --limit=5
|
|
417
|
-
./.agent/scripts/linters-local.sh
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
**When to use manual mode:**
|
|
421
|
-
|
|
422
|
-
- First-time releases
|
|
423
|
-
- Major version releases
|
|
424
|
-
- When you want to review before declaring success
|
|
425
|
-
|
|
426
|
-
### Automatic Mode
|
|
427
|
-
|
|
428
|
-
Enable via GitHub Actions workflow (see above).
|
|
429
|
-
|
|
430
|
-
**When to use automatic mode:**
|
|
431
|
-
|
|
432
|
-
- Patch releases with high confidence
|
|
433
|
-
- Established CI/CD pipelines
|
|
434
|
-
- When rollback procedures are well-tested
|
|
435
|
-
|
|
436
|
-
## Rollback Procedures
|
|
437
|
-
|
|
438
|
-
If postflight verification fails, follow these rollback steps:
|
|
439
|
-
|
|
440
|
-
### 1. Assess Severity
|
|
441
|
-
|
|
442
|
-
| Severity | Indicators | Action |
|
|
443
|
-
|----------|------------|--------|
|
|
444
|
-
| **Critical** | Security vulnerability, data loss risk, service outage | Immediate rollback |
|
|
445
|
-
| **High** | Broken functionality, failed tests, quality gate failure | Rollback within 1 hour |
|
|
446
|
-
| **Medium** | Code smell increase, minor regressions | Hotfix in next release |
|
|
447
|
-
| **Low** | Style issues, documentation gaps | Fix in next release |
|
|
448
|
-
|
|
449
|
-
### 2. Rollback Commands
|
|
450
|
-
|
|
451
|
-
```bash
|
|
452
|
-
# Option A: Revert the release commit
|
|
453
|
-
git revert <release-commit-hash>
|
|
454
|
-
git push origin main
|
|
455
|
-
|
|
456
|
-
# Option B: Delete the tag and release (if not widely distributed)
|
|
457
|
-
gh release delete v{VERSION} --yes
|
|
458
|
-
git tag -d v{VERSION}
|
|
459
|
-
git push origin --delete v{VERSION}
|
|
460
|
-
|
|
461
|
-
# Option C: Create hotfix release
|
|
462
|
-
git checkout -b hotfix/v{VERSION}.1
|
|
463
|
-
# Fix the issue
|
|
464
|
-
git commit -m "fix: resolve critical issue from v{VERSION}"
|
|
465
|
-
./.agent/scripts/version-manager.sh release patch
|
|
466
|
-
```
|
|
467
|
-
|
|
468
|
-
### 3. Rollback Checklist
|
|
469
|
-
|
|
470
|
-
- [ ] Identify the specific issue causing failure
|
|
471
|
-
- [ ] Determine rollback strategy (revert, delete, or hotfix)
|
|
472
|
-
- [ ] Execute rollback commands
|
|
473
|
-
- [ ] Verify rollback was successful
|
|
474
|
-
- [ ] Notify stakeholders
|
|
475
|
-
- [ ] Document the incident
|
|
476
|
-
- [ ] Create follow-up issue for proper fix
|
|
477
|
-
|
|
478
|
-
### 4. Post-Rollback Verification
|
|
479
|
-
|
|
480
|
-
```bash
|
|
481
|
-
# Verify the rollback
|
|
482
|
-
gh run list --limit=5 # Check CI/CD passes
|
|
483
|
-
./.agent/scripts/linters-local.sh # Verify quality restored
|
|
484
|
-
|
|
485
|
-
# Check SonarCloud
|
|
486
|
-
curl -s "https://sonarcloud.io/api/qualitygates/project_status?projectKey=marcusquinn_aidevops" | jq '.projectStatus.status'
|
|
487
|
-
```
|
|
488
|
-
|
|
489
|
-
## Integration with release.md
|
|
490
|
-
|
|
491
|
-
Add postflight as the final step in the release workflow:
|
|
492
|
-
|
|
493
|
-
```markdown
|
|
494
|
-
## Release Workflow (Updated)
|
|
495
|
-
|
|
496
|
-
1. Bump version (see `workflows/version-bump.md`)
|
|
497
|
-
2. Run code quality checks
|
|
498
|
-
3. Update changelog
|
|
499
|
-
4. Commit version changes
|
|
500
|
-
5. Create version tags
|
|
501
|
-
6. Push to remote
|
|
502
|
-
7. Create GitHub/GitLab release
|
|
503
|
-
8. **Postflight verification** (see `workflows/postflight.md`)
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
### Suggested release.md Addition
|
|
507
|
-
|
|
508
|
-
Add to the "Post-Release Tasks" section:
|
|
509
|
-
|
|
510
|
-
```markdown
|
|
511
|
-
### Postflight Verification
|
|
512
|
-
|
|
513
|
-
After release publication, run postflight checks:
|
|
514
|
-
|
|
515
|
-
\`\`\`bash
|
|
516
|
-
# Wait for CI/CD and verify
|
|
517
|
-
gh run watch $(gh run list --limit=1 --json databaseId -q '.[0].databaseId') --exit-status
|
|
518
|
-
|
|
519
|
-
# Or run full postflight
|
|
520
|
-
./.agent/scripts/postflight-check.sh
|
|
521
|
-
\`\`\`
|
|
522
|
-
|
|
523
|
-
See `workflows/postflight.md` for detailed verification procedures and rollback guidance.
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
## Troubleshooting
|
|
527
|
-
|
|
528
|
-
### CI/CD Stuck in Pending
|
|
529
|
-
|
|
530
|
-
```bash
|
|
531
|
-
# Check if workflows are queued
|
|
532
|
-
gh run list --status=queued
|
|
533
|
-
|
|
534
|
-
# Check GitHub Actions status
|
|
535
|
-
curl -s https://www.githubstatus.com/api/v2/status.json | jq '.status'
|
|
536
|
-
|
|
537
|
-
# Re-run failed workflow
|
|
538
|
-
gh run rerun <run-id>
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
### SonarCloud Analysis Delayed
|
|
542
|
-
|
|
543
|
-
```bash
|
|
544
|
-
# Trigger manual analysis (if configured)
|
|
545
|
-
curl -X POST "https://sonarcloud.io/api/project_analyses/create?project=marcusquinn_aidevops" \
|
|
546
|
-
-H "Authorization: Bearer $SONAR_TOKEN"
|
|
547
|
-
|
|
548
|
-
# Check analysis queue
|
|
549
|
-
curl -s "https://sonarcloud.io/api/ce/component?component=marcusquinn_aidevops" | jq '.queue'
|
|
550
|
-
```
|
|
551
|
-
|
|
552
|
-
### Security Scan Timeout
|
|
553
|
-
|
|
554
|
-
```bash
|
|
555
|
-
# Run with increased timeout
|
|
556
|
-
snyk test --timeout=600
|
|
557
|
-
|
|
558
|
-
# Run specific scan type only
|
|
559
|
-
snyk test --all-projects=false
|
|
560
|
-
```
|
|
561
|
-
|
|
562
|
-
## Success Criteria
|
|
563
|
-
|
|
564
|
-
Postflight verification is successful when:
|
|
565
|
-
|
|
566
|
-
1. All CI/CD workflows show `success` conclusion (including postflight.yml itself)
|
|
567
|
-
2. SonarCloud quality gate status is `OK`
|
|
568
|
-
3. No new high/critical security vulnerabilities
|
|
569
|
-
4. No exposed secrets detected
|
|
570
|
-
5. Code review tools show no blocking issues
|
|
571
|
-
|
|
572
|
-
**Critical**: When running local postflight, explicitly verify the GH Actions postflight.yml workflow completed successfully:
|
|
573
|
-
|
|
574
|
-
```bash
|
|
575
|
-
# Check postflight.yml workflow status
|
|
576
|
-
gh run list --workflow=postflight.yml --limit=1 --json conclusion,status -q '.[0]'
|
|
577
|
-
|
|
578
|
-
# Expected output for success:
|
|
579
|
-
# {"conclusion":"success","status":"completed"}
|
|
580
|
-
```
|
|
581
|
-
|
|
582
|
-
If the postflight.yml workflow is still running or failed, the local postflight should NOT report success.
|
|
583
|
-
|
|
584
|
-
## Worktree Cleanup
|
|
585
|
-
|
|
586
|
-
After PR merge, clean up any worktrees used for the merged branch:
|
|
587
|
-
|
|
588
|
-
```bash
|
|
589
|
-
# Check for stale worktrees
|
|
590
|
-
~/.aidevops/agents/scripts/worktree-helper.sh list
|
|
591
|
-
|
|
592
|
-
# Auto-clean merged worktrees (detects squash merges too)
|
|
593
|
-
~/.aidevops/agents/scripts/worktree-helper.sh clean
|
|
594
|
-
```
|
|
595
|
-
|
|
596
|
-
The `clean` command detects both traditional merges and squash merges (by checking for deleted remote branches).
|
|
597
|
-
|
|
598
|
-
## Related Workflows
|
|
599
|
-
|
|
600
|
-
- `release.md` - Pre-release and release process
|
|
601
|
-
- `code-review.md` - Code review guidelines
|
|
602
|
-
- `changelog.md` - Changelog management
|
|
603
|
-
- `version-bump.md` - Version management
|
|
604
|
-
- `worktree.md` - Parallel branch development
|