Release AA Backend to Production
Inputs
| Input | Type | Default | Purpose |
|---|---|---|---|
commit_sha |
string | required | Full SHA1 commit to release (must exist in repo and Quay) |
release_date |
string | today | Release date for Jira title (YYYY-MM-DD) |
include_billing |
bool | false | Also promote billing component |
Workflow
1. Bootstrap
persona_load("release")— git, quay, appinterface toolscheck_known_issues("quay", ""),check_known_issues("app-interface", "")- Load config from
config.json— backend path, app-interface path, deploy file, Quay repo
2. Verification
- Verify commit exists:
git cat-file -t {commit_sha}in backend repo quay_get_tag(repository="aap-aa-tenant/aap-aa-main/automation-analytics-backend-main", tag="{commit_sha}", namespace="redhat-services-prod")— image must exist
3. Get Current State
- Read
deploy-clowder.ymlfrom app-interface:data/services/insights/tower-analytics/cicd/deploy-clowder.yml - Parse current prod SHA from
tower-analytics-prodref git log --oneline {current_prod_sha}..{commit_sha}— changelog
4. Create Jira Issue
persona_load("developer")— for Jira toolsjira_create_issue(summary="{release_date} Analytics HCC Service Release", issue_type="Story", project="AAP", labels="release,production")
5. Prepare App-Interface
persona_load("release")git_status(repo="{appinterface_repo}")— must be cleangit_checkout(target="master"),git_fetch(remote="upstream"),git_rebase(onto="upstream/master")- Create branch:
aa-release-{release_date}oraa-release-{date}-v{N}if exists - Update deploy-clowder.yml: replace
tower-analytics-prodref with{commit_sha} - If
include_billing: updatetower-analytics-prod-billingref too
6. Commit and Push
git_add(files="{deploy_file}")git_commit(message="chore(release): release {sha} to production", issue_key="{jira_key}", commit_type="chore", scope="release")git_push(branch="{branch_name}", set_upstream=true)
7. Create MR
persona_load("developer")gitlab_mr_create(project="app-interface", title="{jira_key} - {release_date} Analytics HCC Service Release", description="...", target_branch="master", source_branch="{branch_name}", draft=false)
8. Post-Release
jira_add_comment(issue_key="{jira_key}", comment="App-Interface MR created: {mr_url}")skill_run("notify_team", '{"template": "release", "template_data": {...}}')memory_session_log("Prepared production release", "SHA: {sha}, Jira: {jira_key}")
9. Failure Learning
- Image not found →
learn_tool_fix("quay_check_image_exists", "image not found", "Build not complete", "Check konflux_list_builds()") - No such host →
learn_tool_fix("gitlab_mr_create", "no such host", "VPN not connected", "Run vpn_connect()") - Unauthorized →
learn_tool_fix("jira_create_issue", "unauthorized", "Jira auth failed", "Check config.json")
Key MCP Tools
persona_load,git_status,git_checkout,git_fetch,git_rebase,git_add,git_commit,git_pushquay_get_tag,jira_create_issue,jira_add_commentgitlab_mr_create,skill_run,check_known_issues,learn_tool_fixmemory_session_log,knowledge_query
Config Resolution
- Paths from
config.json→ repositories, app_interface, deploy_file - Quay:
quay.io/redhat-services-prod/aap-aa-tenant/aap-aa-main/automation-analytics-backend-main - Deploy file:
data/services/insights/tower-analytics/cicd/deploy-clowder.yml
Next Steps After MR
- Review MR
- Get team approval
- Merge to trigger deployment
- Monitor ArgoCD/App-Interface
- Verify pods in
tower-analytics-prod
Converted and distributed by TomeVault — claim your Tome and manage your conversions.