2.8 KiB
2.8 KiB
deployment-coordination
How grm releases propagate to infra. grm publishes a PyPI package and auto-creates an infra dependency PR. Coordination ensures the PR is merged before infra deploys.
When to Invoke
Invoke this skill when:
- Changes to grm affect infra deployments
- Preparing a grm release that infra depends on
- Verifying infra has bumped to the latest grm version
- Coordinating a multi-repo change that includes grm
Prerequisites
- grm repo at
/home/emo/dev/ideas/oblachno/grm .envwithDEVELOPER_GITEA_API_TOKEN- See
dependency-graphskill for the full ecosystem map
What grm Produces
grm publishes a Python package to the Gitea PyPI registry. infra pins it:
"grm @ git+https://git.oblachno.oblachno.fyi/oblachno-oss/grm.git@vX.Y.Z"
Release Flow
- PR merged to master
- Post-merge workflow runs
devx.ci.release— classifies changes - If user-facing changes: git-cliff bumps version, creates tag, pushes
devx.ci.publishbuilds and publishes to Gitea PyPI registrydevx.ci.create_dependency_pr --repo oblachno/infra --package grmauto-creates an infra PR to bump the pinned grm version
Downstream Consumer
| Repo | Pin location | Auto-bump? |
|---|---|---|
| infra | pyproject.toml |
Yes — auto PR created by post-merge |
Coordinating a grm Change
- Merge grm PR — wait for post-merge publish + dependency-PR creation
- Verify publish — check the new tag:
curl -sS -H "Authorization: token $DEVELOPER_GITEA_API_TOKEN" \ https://git.oblachno.oblachno.fyi/api/v1/repos/oblachno-oss/grm/releases/latest \ | python3 -c "import json,sys; print(json.load(sys.stdin).get('tag_name','?'))" - Find the auto-created infra PR — check infra for open PRs with
dependencylabel or title containingbump grm - Review and merge the infra dependency PR — verify the version bump,
run
make pytest-covin infra, addready-to-merge - Verify infra staging deploy — after infra merges, staging deploy picks up the new grm version
State Verification
# Current grm version
grep '__version__' /home/emo/dev/ideas/oblachno/grm/src/grm/__init__.py
# What infra pins
grep 'grm @' /home/emo/dev/ideas/oblachno/infra/pyproject.toml | grep -oP 'v[\d.]+'
# Check for open infra dependency PRs
curl -sS -H "Authorization: token $DEVELOPER_GITEA_API_TOKEN" \
"https://git.oblachno.oblachno.fyi/api/v1/repos/oblachno/infra/pulls?state=open" \
| python3 -c "import json,sys; [print(p['number'],p['title']) for p in json.load(sys.stdin) if 'grm' in p.get('title','').lower()]"
Common Mistakes
- Merging the grm PR but ignoring the auto-created infra dependency PR
- Deploying infra before the dependency PR is merged — stale grm version
- Forgetting that grm also has an Ansible role used by infra at deploy time