Repository navigation
feat: add prerelease suite to self-hosted GitHub Pages reprepro repository - #166
rtibblesbot wants to merge 8 commits into
Conversation
rtibbles
left a comment
There was a problem hiding this comment.
The whole point of this issue is to make separable workflows for the self hosted PPA and the launchpad PPA. You've merged them together. I don't understand why you added a build of the debian either? The self hosted takes a debian build as input already. It gets built in the Kolibri release workflow then passed in as an input.
|
Fixed. Reverted all changes to The PR now contains only:
|
rtibbles
left a comment
There was a problem hiding this comment.
Confusing and ridiculous design choices.
|
The second review says "Confusing and ridiculous design choices" but doesn't point to specific problems. Before making more changes, I need to understand what to fix. The current PR after the revert contains:
The most likely source of confusion I can identify: Is that the issue? Or is there something else specifically that needs changing? |
rtibbles
left a comment
There was a problem hiding this comment.
I made a series of very pointed, line by line comments - don't ignore them
005113b to
7072f1f
Compare
rtibbles
left a comment
There was a problem hiding this comment.
This still feels very confusing. I don't know what you're doing.
602d3e4 to
3772ba2
Compare
|
All items from the latest review round have been addressed:
|
rtibbles
left a comment
There was a problem hiding this comment.
Consolidate and simplify - I know it's not a rule of three, but there's so much going on in the github pages workflows, it feels brittle to have duplication.
Remove the promote_to_stable_ppa job and the inputs/secrets that only existed to service it. promote_to_stable.yml is now a fully standalone workflow, invoked separately from the Kolibri release workflow rather than as a dependent job of release_ppa.yml. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Match the pattern in prerelease.yml: pass ${{ secrets.DEBIAN_REPO_SIGNING_KEY }}
directly into the run block rather than via an env var intermediary.
GitHub Actions masks the value at expression-evaluation time, so this
is equivalent for masking and simpler in structure.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…kflows - Rename release_launchpad_ppa.yml (was release_ppa.yml) to reflect its sole concern: Launchpad PPA promotion. - Replace publish_github_pages_ppa.yml and promote_to_stable.yml with a single github_pages_ppa.yml workflow. An `action` input (publish/promote) selects the operation; all shared steps (deps, GPG, token, checkout, distributions config, deploy) appear once. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
a06df91 to
e7ffaa1
Compare
|
Closing — superseded by learningequality/kolibri#14979, which adds the |
Summary
Launchpad PPA publish latency runs 2+ hours for prerelease builds (a recent release was buildable in 4 min but not installable for 138 min). This adds a
prereleasesuite to the self-hosted GitHub Pages reprepro repository so prerelease.debs are installable within minutes of a build, independent of Launchpad.New builds always enter via
prerelease;stableis populated exclusively byreprepro copypromotion — the exact same.deb, no rebuild. Both suites survive any publish or promotion because each CI run clones the existinggh-pagesbranch before operating. The branch is always re-deployed as an orphan commit, so old package blobs don't accumulate in git history.README docs cover adding the self-hosted repo and enabling either suite (
stable/prerelease) with thesigned-bykey.Breaking change:
release_ppa.ymlis now Launchpad-only. Itsworkflow_callremoves thedeb-file-name,deb-url, anddebian-repo-signing-key-idinputs, and theDEBIAN_REPO_SIGNING_KEY,LE_BOT_APP_ID, andLE_BOT_PRIVATE_KEYsecrets — along with the entire inlinepublish_github_pages_ppajob. GitHub Pages PPA operations are handled by the new standalonepublish_github_pages_ppa.ymlandpromote_to_stable.ymlworkflows, to be called directly from external release orchestration (e.g. the Kolibri release workflow).References
Closes #165
Reviewer guidance
Areas worth extra attention in the diff:
publish_github_pages_ppa.yml,promote_to_stable.yml): YAMLrun: |strips the common leading indent before the shell sees the heredoc, so field names reachrepreproat column 0 as required. Non-obvious.release_ppa.ymlis now Launchpad-only (release_ppa.yml): the old inlinepublish_github_pages_ppajob and all its associated inputs/secrets (deb-file-name,deb-url,DEBIAN_REPO_SIGNING_KEY, etc.) have been removed. GitHub Pages PPA operations are decoupled intopublish_github_pages_ppa.ymlandpromote_to_stable.yml, each callable independently by external orchestration.db/:publish_github_pages_ppa.ymlcommitsrepo/db/(reprepro's package database) viagit add .;promote_to_stable.ymlreads it on the next run forreprepro copy. Ifdb/were excluded, the promote step would fail with "package not found."concurrency.group: debian-repo-publish, cancel-in-progress: false, serializing concurrent publishes and promotions.To test end-to-end: trigger the prerelease workflow with a test tarball, confirm the package appears in the
prereleasesuite, dispatchpromote_to_stable.yml, then verify the same package appears instableandprereleaseis unchanged.AI usage
This PR was implemented by Claude Code running autonomously from an implementation plan. The plan was developed interactively with the user, who made all design decisions (suite naming, publish-always-to-
prereleasemodel, separate dispatchable promote workflow,reprepro copyfor promotion, orphan-commit deployment). Each workflow file was reviewed against the plan's correctness checklist before committing.@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly
How was this generated?
🟡 Waiting for feedback
Last updated: 2026-07-01 04:01 UTC