ci: move production deploy to declarative setup#3068
Conversation
Appwrite WebsiteProject ID: Website (appwrite/website)Project ID: Tip Function scopes give you fine-grained control over API permissions |
Greptile SummaryThis PR migrates the production deployment workflow from an imperative Kubernetes/Helm approach to the same declarative GitOps pattern already used by staging, reverting #3063. It also pins all third-party action references to full commit SHAs and renames the staging target file from
Confidence Score: 3/5The core GitOps migration is straightforward and mirrors the working staging pattern, but the shared concurrency group between staging and production could silently delay production releases behind unrelated staging runs. The production deploy job now shares a concurrency group with the staging deploy job. Since staging triggers on every push to main, any active staging deployment will queue a concurrent production release with no cancellation allowed. The two workflows write to different files so there is no technical conflict — this is a coordination mistake that could cause unexpected delays for time-sensitive production releases. .github/workflows/production.yml and .github/workflows/staging.yml both need the concurrency group name corrected. Important Files Changed
Reviews (1): Last reviewed commit: "Revert "Revert "ci: move production depl..." | Re-trigger Greptile |
| concurrency: | ||
| group: declarative-deploy-website | ||
| cancel-in-progress: false |
There was a problem hiding this comment.
Shared concurrency group with staging may queue production releases
Both production.yml (this file, line 57-59) and staging.yml (line 72-74) use the exact same concurrency group name declarative-deploy-website. Because GitHub Actions concurrency groups are scoped across workflows in the same repo, a staging deploy triggered by every push to main will block a production release (and vice versa) until it finishes. With cancel-in-progress: false the queuing is silent — a production release could be delayed waiting on an unrelated staging run. Since the two environments write to different paths (staging/website/default.yaml vs production/website/default.yaml) in the target repo, there is no actual git-conflict reason to serialise them. Consider suffixing the group name with the environment, e.g. declarative-deploy-website-${{ env.ENVIRONMENT }}.


Reverts #3063