Repository navigation
Upload every distribution to robostack-<distro> on anaconda.org and prefix.dev; noetic's staging copy moves here - #97
Open
Tobias-Fischer wants to merge 2 commits into
Open
Tobias-Fischer wants to merge 2 commits into
Tobias-Fischer wants to merge 2 commits into
Conversation
Tobias-Fischer
added a commit
to RoboStack/robostack.github.io
that referenced
this pull request
Oct 16, 2026
The staging copy (scripts/copy-to-distro-specific-channel.py and the hourly copy-staging-packages workflow) now lives in RoboStack/robostack#97, together with the prefix.dev -> anaconda.org mirror. With it go its tests (the last ones here: pytest, the test task and its CI step) and anaconda-client. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 16, 2026
…da.org mirror From RoboStack/robostack.github.io: tools/copy_staging_packages.py (was scripts/copy-to-distro-specific-channel.py) copies humble's and noetic's packages from robostack-staging on to their own channels, hourly as before; tools/mirror_to_anaconda.py (from RoboStack/robostack.github.io#205) uploads what a prefix.dev channel has and its old anaconda.org channel doesn't, started by hand until the prefix.dev channels exist. A job without its token secret is skipped, so nothing fails before the secrets are set here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…refix.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>
Tobias-Fischer
force-pushed
the
channels/copy-and-mirror
branch
from
October 17, 2026 02:37
7b335ee to
b08129b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every distribution uploads its packages directly to
robostack-<distro>on both anaconda.org and prefix.dev, instead of a separate mirror job, as discussed in #54. Nothing goes torobostack-staginganymore:robostack-humble, the one documented for years;-c robostack-rollingworks.Upload (
pixi run rs <distro> upload, run by the staged build workflows):rattler-build upload anaconda -o robostack-<distro> --force. The token comes from theANACONDA_API_TOKENsecret, which the generatedbuild.yamlalready passes, and goes in through the environment, never the command line.rattler-build upload prefix -c robostack-<distro> --skip-existing --generate-attestation, with trusted publishing as before.prefix.dev decides what gets built (
skip_existing), so it must never have a package that anaconda.org lacks:--forcereplaces the anaconda.org copy, so both channels end up with that build.The builds read prefix.dev.
ROBOSTACK_UPLOAD_CHANNEL(a test channel) ornonestill redirect or skip all uploads, as before.channel_nameandupload_targetleavedistro.yaml: every distribution's channel isrobostack-<distro>, andrs.channel_name()is the one place for that (also used by the ABI check, the stale and build-number lookups,new-distroandimport_distro).Staging copy for noetic:
tools/copy_staging_packages.py+ the hourlycopy-staging-packages.yamlmove here from RoboStack/robostack.github.io (RoboStack/robostack.github.io#205 removes them there). They now only copy noetic, which RoboStack/ros-noetic still uploads torobostack-staging, on torobostack-noetic. The job is skipped without itsROBOSTACK_NOETIC_ANACONDA_API_TOKENsecret.Before merging:
robostack-humbleandrobostack-jazzyare mirrors of anaconda.org today. They need to become regular channels, with Repository Access for this repository (build.yaml, read/write), like rolling and lyrical.robostack-lyrical(it doesn't exist yet). Therobostack-humble,robostack-jazzyandrobostack-rollingchannels exist.ANACONDA_API_TOKEN(an account that can upload to all fourrobostack-<distro>channels) andROBOSTACK_NOETIC_ANACONDA_API_TOKEN. Then merge Move the channel copy script to the RoboStack monorepo robostack.github.io#205.After this, the humble and jazzy sync PRs drop
channel_name/upload_targetfrom theirdistro.yamlwhen they're rebased.Tests: 6 new upload tests (order, a failed anaconda.org upload, the missing token, the override,
none); all 56 tool tests pass, and so doesrs check. The README lists both hosts per distribution, the credentials and the noetic copy. Labelledbuild:humble.🤖 Generated with Claude Code