Public Access
91 lines
3.0 KiB
Markdown
91 lines
3.0 KiB
Markdown
# deployment-coordination
|
|
|
|
How devx releases propagate to downstream repos. devx is the base
|
|
package — all other repos pin it. A devx release must complete before
|
|
consumers can bump.
|
|
|
|
## When to Invoke
|
|
|
|
Invoke this skill when:
|
|
- Changes to devx affect downstream repos (grm, sso-bridge, infra)
|
|
- Preparing a devx release that other repos depend on
|
|
- Verifying downstream repos have bumped to the latest devx version
|
|
- Coordinating a multi-repo change that starts in devx
|
|
|
|
## Prerequisites
|
|
|
|
- devx repo at `/home/emo/dev/ideas/oblachno/devx`
|
|
- `.env` with `DEVELOPER_GITEA_API_TOKEN`
|
|
- See `dependency-graph` skill for the full ecosystem map
|
|
|
|
## What devx Produces
|
|
|
|
devx publishes a Python package to the Gitea PyPI registry. Downstream
|
|
repos pin it:
|
|
```toml
|
|
"devx @ git+https://git.oblachno.oblachno.fyi/oblachno-oss/devx.git@vX.Y.Z"
|
|
```
|
|
|
|
## Release Flow
|
|
|
|
1. PR merged to master
|
|
2. Post-merge workflow runs `devx.ci.release` — classifies changes
|
|
3. If user-facing changes: git-cliff bumps version, creates tag, pushes
|
|
4. `devx.ci.publish` builds and publishes to Gitea PyPI registry
|
|
5. Downstream repos must bump their pinned devx version
|
|
|
|
## Downstream Consumers
|
|
|
|
| Repo | Pin location | Auto-bump? |
|
|
|------|-------------|------------|
|
|
| grm | `pyproject.toml` | No — manual |
|
|
| sso-bridge | `pyproject.toml` | No — manual |
|
|
| infra | `pyproject.toml` | No — manual |
|
|
|
|
devx does NOT auto-create dependency PRs in downstream repos. Bumping
|
|
is manual: create a PR in each downstream repo to update the pinned
|
|
version.
|
|
|
|
## Coordinating a devx Change
|
|
|
|
When a change to devx affects downstream repos:
|
|
|
|
1. **Merge devx PR** — wait for post-merge publish to complete
|
|
2. **Verify publish** — check the new tag exists:
|
|
```bash
|
|
curl -sS -H "Authorization: token $DEVELOPER_GITEA_API_TOKEN" \
|
|
https://git.oblachno.oblachno.fyi/api/v1/repos/oblachno-oss/devx/releases/latest \
|
|
| python3 -c "import json,sys; print(json.load(sys.stdin).get('tag_name','?'))"
|
|
```
|
|
3. **Bump downstream repos** — for each repo (grm, sso-bridge, infra):
|
|
- Update `devx @ ...@vX.Y.Z` in `pyproject.toml`
|
|
- Run `make setup` to install the new version
|
|
- Run `make pytest-cov` to verify compatibility
|
|
- Create and merge a PR
|
|
4. **Verify infra deploys** — after infra bumps, verify staging deploy
|
|
picks up the new devx version
|
|
|
|
## State Verification
|
|
|
|
Before starting a devx change, verify current state:
|
|
```bash
|
|
# Current devx version
|
|
grep '__version__' /home/emo/dev/ideas/oblachno/devx/src/devx/__init__.py
|
|
|
|
# What each repo pins
|
|
for repo in grm sso-bridge infra; do
|
|
echo -n "$repo pins: "
|
|
grep 'devx @' /home/emo/dev/ideas/oblachno/$repo/pyproject.toml | grep -oP 'v[\d.]+'
|
|
done
|
|
```
|
|
|
|
If pins are inconsistent across repos, bump them to the latest published
|
|
version before starting new work.
|
|
|
|
## Common Mistakes
|
|
|
|
- Merging a devx PR and immediately merging downstream PRs without
|
|
waiting for the publish job to complete
|
|
- Forgetting to bump infra (it has the most complex deploy pipeline)
|
|
- Bumping only one downstream repo when the change affects all three
|