Move installation and releases from GitHub to code.iterative.works #399

Open
opened 2026-06-30 10:38:46 +00:00 by mph · 0 comments
Owner

Context

iw-cli's home is now our self-hosted Forgejo at code.iterative.worksorigin points there and CI runs on the Forgejo runner. GitHub is only a mirror (github remote). The remaining GitHub couplings are user-facing installation and the release pipeline; this issue moves both to Forgejo so we can fully drop GitHub.

Current state (GitHub-coupled)

InstallationREADME.md:

  • Install one-liner pulls the bootstrap from the GitHub vlatest release:
    curl -L https://github.com/iterative-works/iw-cli/releases/latest/download/iw-bootstrap -o iw
  • git clone https://github.com/iterative-works/iw-cli.git (README:263)
  • iw-bootstrap itself likely fetches iw-cli-latest.tar.gz from a GitHub release URL — needs auditing.

Releases.github/workflows/release.yml (triggered on v* tags):

  • Publishes via gh release create/upload/view to GitHub releases:
    • versioned iw-cli-${VERSION}.tar.gz
    • vlatest release with iw-cli-latest.tar.gz + iw-bootstrap (force-moves the vlatest tag)
  • Builds in ghcr.io/iterative-works/iw-cli-ci:latest (GitHub Container Registry).
  • Helper scripts: scripts/package-release.sh, scripts/release-prepare.sh, scripts/release-publish.sh.

Goal

A v* tag pushed to code.iterative.works produces a Forgejo release (versioned + vlatest) carrying the tarball and iw-bootstrap, and the documented install command pulls from code.iterative.works — with no GitHub dependency.

Tasks

  • Install source — update the README install one-liner and git clone URL to https://code.iterative.works/iterative-works/iw-cli/....
  • Bootstrap script — audit iw-bootstrap (and any self-update path) for hardcoded github.com/release URLs; repoint downloads to the Forgejo release asset URLs.
  • Release publishing — replace the gh release steps with Forgejo release publishing (a Forgejo Actions release action, the Forgejo API, or forgejo-cli); reproduce the versioned + vlatest behaviour including force-moving vlatest.
  • Run on the Forgejo runner — port the release workflow off GitHub Actions onto the Forgejo runner (mirror the CI workflow that already moved).
  • CI/release image — swap ghcr.io/iterative-works/iw-cli-ci:latest for the image hosted on the Forgejo registry (depends on the registry cutover).
  • Release scripts — audit scripts/{package-release,release-prepare,release-publish}.sh for gh/GitHub assumptions.
  • Verify end-to-end — cut a test release from a tag on Forgejo and install via the new one-liner on a clean machine.

Acceptance criteria

  • Pushing a v* tag to origin (code.iterative.works) publishes the versioned release and updates vlatest with iw-cli-latest.tar.gz + iw-bootstrap as assets.
  • curl -L https://code.iterative.works/iterative-works/iw-cli/releases/latest/download/iw-bootstrap -o iw installs a working iw-cli.
  • No step in the release path depends on github.com, ghcr.io, or gh.

Notes / dependencies

  • Depends on the container registry cutover (hosting iw-cli-ci on the Forgejo registry).
  • GitHub stays as a read-only mirror (github remote) — we're not deleting it, just no longer depending on it for install/releases.
## Context iw-cli's home is now our self-hosted Forgejo at **code.iterative.works** — `origin` points there and CI runs on the Forgejo runner. GitHub is only a mirror (`github` remote). The remaining GitHub couplings are **user-facing installation** and the **release pipeline**; this issue moves both to Forgejo so we can fully drop GitHub. ## Current state (GitHub-coupled) **Installation** — `README.md`: - Install one-liner pulls the bootstrap from the GitHub `vlatest` release: `curl -L https://github.com/iterative-works/iw-cli/releases/latest/download/iw-bootstrap -o iw` - `git clone https://github.com/iterative-works/iw-cli.git` (README:263) - `iw-bootstrap` itself likely fetches `iw-cli-latest.tar.gz` from a GitHub release URL — needs auditing. **Releases** — `.github/workflows/release.yml` (triggered on `v*` tags): - Publishes via `gh release create/upload/view` to GitHub releases: - versioned `iw-cli-${VERSION}.tar.gz` - `vlatest` release with `iw-cli-latest.tar.gz` + `iw-bootstrap` (force-moves the `vlatest` tag) - Builds in `ghcr.io/iterative-works/iw-cli-ci:latest` (GitHub Container Registry). - Helper scripts: `scripts/package-release.sh`, `scripts/release-prepare.sh`, `scripts/release-publish.sh`. ## Goal A `v*` tag pushed to code.iterative.works produces a Forgejo release (versioned + `vlatest`) carrying the tarball and `iw-bootstrap`, and the documented install command pulls from code.iterative.works — with no GitHub dependency. ## Tasks - [ ] **Install source** — update the README install one-liner and `git clone` URL to `https://code.iterative.works/iterative-works/iw-cli/...`. - [ ] **Bootstrap script** — audit `iw-bootstrap` (and any self-update path) for hardcoded `github.com`/release URLs; repoint downloads to the Forgejo release asset URLs. - [ ] **Release publishing** — replace the `gh release` steps with Forgejo release publishing (a Forgejo Actions release action, the Forgejo API, or `forgejo-cli`); reproduce the versioned + `vlatest` behaviour including force-moving `vlatest`. - [ ] **Run on the Forgejo runner** — port the release workflow off GitHub Actions onto the Forgejo runner (mirror the CI workflow that already moved). - [ ] **CI/release image** — swap `ghcr.io/iterative-works/iw-cli-ci:latest` for the image hosted on the Forgejo registry (depends on the registry cutover). - [ ] **Release scripts** — audit `scripts/{package-release,release-prepare,release-publish}.sh` for `gh`/GitHub assumptions. - [ ] **Verify end-to-end** — cut a test release from a tag on Forgejo and install via the new one-liner on a clean machine. ## Acceptance criteria - Pushing a `v*` tag to `origin` (code.iterative.works) publishes the versioned release and updates `vlatest` with `iw-cli-latest.tar.gz` + `iw-bootstrap` as assets. - `curl -L https://code.iterative.works/iterative-works/iw-cli/releases/latest/download/iw-bootstrap -o iw` installs a working iw-cli. - No step in the release path depends on github.com, ghcr.io, or `gh`. ## Notes / dependencies - Depends on the **container registry cutover** (hosting `iw-cli-ci` on the Forgejo registry). - GitHub stays as a read-only mirror (`github` remote) — we're not deleting it, just no longer depending on it for install/releases.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
iterative-works/iw-cli#399
No description provided.