You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7b335ee
Browse filesBrowse the repository at this point in the historyBrowse files
Upload every distribution to robostack-<distro> on anaconda.org and prefix.dev
Instead of a mirror job (#54): the build uploads each package to anaconda.org (token
ANACONDA_API_TOKEN, --force) and then to prefix.dev (trusted publishing), both
robostack-<distro>; the builds read prefix.dev. Nothing goes to robostack-staging
anymore: humble's channel is robostack-humble, and rolling and lyrical get their
anaconda.org channels populated. channel_name and upload_target leave distro.yaml.
anaconda.org goes first so that prefix.dev, which decides what is built, never has a
package anaconda.org lacks; a rebuild replaces the anaconda.org file. The staging copy
stays for noetic only (RoboStack/ros-noetic still uploads to robostack-staging).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
.claude/skills/ procedures for agents (debug a build, patches, versions/rebuilds, package selection)
@@ -120,18 +123,19 @@ label doesn't start one by itself. Nothing has to be reset before merging.
120
123
- Each selected distribution is built on all five platforms, with its own build cache. The `check` job runs `pixi run rs check`.
121
124
-**After a merge** (`main.yaml`): for every changed distribution and platform, the job regenerates the recipes and the staged build workflow, and pushes them to `buildbranch_<distro>_<platform>`.
122
125
- Each build branch carries its workflow as `.github/workflows/build.yaml`, which runs `.scripts/build_*.sh` in `distros/<distro>/work`.
123
-
- Those workflows build the packages and upload them to the distribution's channel.
126
+
- Those workflows build the packages and upload them to the distribution's channels, `robostack-<distro>` on anaconda.org and then on prefix.dev (`pixi run rs <distro> upload`). The builds read prefix.dev.
124
127
-**Repository variables:**
125
128
-`ROBOSTACK_UPLOAD_CHANNEL`: upload to this prefix.dev channel instead (for example a test channel), or `none` to build without uploading. Use the canonical reference: `<namespace>/<channel>` for a channel that isn't the namespace's primary one (e.g. `tobias-fischer/robostack-distro-test`).
126
-
- Upload credentials: prefix.dev channels use Repository Access (OIDC, no stored key). In the channel's *Settings > Repository Access*, authorize GitHub, this repository, workflow filename `build.yaml`, mode *Read/write*. There are no upload tokens: distributions whose channel is still on anaconda.org (`upload_target: anaconda`, read from there) can only upload to a prefix.dev channel set in `ROBOSTACK_UPLOAD_CHANNEL`.
129
+
- Upload credentials:
130
+
- prefix.dev channels use Repository Access (OIDC, no stored key). In the channel's *Settings > Repository Access*, authorize GitHub, this repository, workflow filename `build.yaml`, mode *Read/write*.
131
+
- anaconda.org has no trusted publishing: the secret `ANACONDA_API_TOKEN` is a token of an account that can upload to every `robostack-<distro>` channel there.
132
+
- With `ROBOSTACK_UPLOAD_CHANNEL` set, the uploads only go to that channel.
127
133
-`ROBOSTACK_BOT_CLIENT_ID` (the App's Client ID, `Iv23…`) with the secret `ROBOSTACK_BOT_PRIVATE_KEY`: the robostack-bot GitHub App. It pushes the build branches (which contain workflow files) and opens bot PRs so that CI runs on them. `GHA_PAT` works as a fallback.
128
134
129
135
The app needs repository permissions Contents, Pull requests, Issues and Workflows (read and write), with its webhook inactive.
130
136
131
137
-**Channel maintenance:**
132
-
-`copy-staging-packages.yaml` (hourly): copies humble's and noetic's packages from `robostack-staging` on to `robostack-humble` / `robostack-noetic` (`anaconda copy`). Secrets `ROBOSTACK_HUMBLE_ANACONDA_API_TOKEN`, `ROBOSTACK_NOETIC_ANACONDA_API_TOKEN`.
133
-
-`mirror-to-anaconda.yaml` (started by hand for now, dry run by default): uploads what a prefix.dev channel has and its old anaconda.org channel doesn't (humble → `robostack-staging`, jazzy → `robostack-jazzy`). Secrets `ROBOSTACK_STAGING_ANACONDA_API_TOKEN`, `ROBOSTACK_JAZZY_ANACONDA_API_TOKEN`.
134
-
- A job without its secret is skipped.
138
+
-`copy-staging-packages.yaml` (hourly): noetic (RoboStack/ros-noetic) still uploads to `robostack-staging`; this copies its packages on to `robostack-noetic` (`anaconda copy`, secret `ROBOSTACK_NOETIC_ANACONDA_API_TOKEN`; skipped without it).
0 commit comments