ci: drop OCI image build, keep binary publish only #8

Merged
David merged 1 commit from chore/remove-container-from-ci into main 2026-05-13 15:55:34 +02:00
Owner

Summary

youtrack-cli is a standalone CLI, not a container; CI no longer builds or pushes an OCI image. The build-oci-image.yml workflow is renamed to publish-binary.yml and stripped down to: cargo build the release binary on the runner, then upload it as a Generic Package at the existing URL (/api/packages/<owner>/generic/youtrack-cli/<tag>/youtrack-cli-linux-x86_64). Tag computation still goes through oci-build/get-tags.nu, so vX.Y.Z + latest behavior is unchanged.

CLAUDE.md's workflow inventory is updated to match.

Out of scope (intentional)

  • oci-build/Dockerfile, compose.yml, compose.dev.yml, the just build-docker / just build-docker-export / just check-docker recipes, and the dev container recipes are left in place. They are useful for matching CI's Rust toolchain locally and were not in scope for this change. If you want them gone too, that's a follow-up.

Behavior change to flag

The previous OCI build produced a musl-static binary via the rust-builder-musl image. The new workflow runs cargo build --release --locked directly on the opensuse runner, so the published binary is glibc-linked against the runner's glibc. That is portable to most modern Linux distros but not to alpine or to systems with significantly older glibc than the runner. If the milestone-2 installer needs to support those, reintroduce a musl target on the release path (either rustup target add x86_64-unknown-linux-musl + a musl C linker on the runner, or a one-off Docker step kept just for the release).

Test plan

  • Check workflow stays green on this PR (unchanged).
  • After merge, Publish binary runs on push to main and produces youtrack-cli-linux-x86_64 at https://dev.a8n.run/api/packages/pandoras-box/generic/youtrack-cli/latest/youtrack-cli-linux-x86_64.
  • Download the published binary and confirm youtrack-cli --version reports the expected git hash and build date.
  • Cut a release/vX.Y.Z PR to confirm the Create release workflow still tags + releases as before.
## Summary youtrack-cli is a standalone CLI, not a container; CI no longer builds or pushes an OCI image. The `build-oci-image.yml` workflow is renamed to `publish-binary.yml` and stripped down to: cargo build the release binary on the runner, then upload it as a Generic Package at the existing URL (`/api/packages/<owner>/generic/youtrack-cli/<tag>/youtrack-cli-linux-x86_64`). Tag computation still goes through `oci-build/get-tags.nu`, so `vX.Y.Z` + `latest` behavior is unchanged. CLAUDE.md's workflow inventory is updated to match. ## Out of scope (intentional) - `oci-build/Dockerfile`, `compose.yml`, `compose.dev.yml`, the `just build-docker` / `just build-docker-export` / `just check-docker` recipes, and the dev container recipes are left in place. They are useful for matching CI's Rust toolchain locally and were not in scope for this change. If you want them gone too, that's a follow-up. ## Behavior change to flag The previous OCI build produced a musl-static binary via the rust-builder-musl image. The new workflow runs `cargo build --release --locked` directly on the opensuse runner, so the published binary is glibc-linked against the runner's glibc. That is portable to most modern Linux distros but not to alpine or to systems with significantly older glibc than the runner. If the milestone-2 installer needs to support those, reintroduce a musl target on the release path (either `rustup target add x86_64-unknown-linux-musl` + a musl C linker on the runner, or a one-off Docker step kept just for the release). ## Test plan - [ ] `Check` workflow stays green on this PR (unchanged). - [ ] After merge, `Publish binary` runs on push to main and produces `youtrack-cli-linux-x86_64` at `https://dev.a8n.run/api/packages/pandoras-box/generic/youtrack-cli/latest/youtrack-cli-linux-x86_64`. - [ ] Download the published binary and confirm `youtrack-cli --version` reports the expected git hash and build date. - [ ] Cut a `release/vX.Y.Z` PR to confirm the `Create release` workflow still tags + releases as before.
ci: drop OCI image build, keep binary publish only
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 6s
Create release / Create release from merged PR (pull_request) Has been skipped
57999f87c2
youtrack-cli is a standalone CLI, not a container. The previous workflow built and pushed an alpine runtime image alongside the bare binary; only the binary is needed for the milestone-2 installer. The renamed workflow builds the release binary directly on the runner with `cargo build --release --locked` and uploads it to the Forgejo Generic Package registry as before. OCI tag computation in `oci-build/get-tags.nu` is reused for the package tags (`vX.Y.Z` plus `latest`). Local Docker build paths (`oci-build/Dockerfile`, `compose.yml`, `compose.dev.yml`, `just build-docker`, `just check-docker`, dev container recipes) are left in place for now since they are useful for matching CI's Rust toolchain locally; remove them in a follow-up if they're no longer wanted. Note: the runner-built binary is glibc-linked, not the musl-static binary the OCI export stage produced; if downstream installers need to support older or alpine-based distros, reintroduce a musl target (or a one-off Docker build step) for the release path.
David merged commit f9b790ccbc into main 2026-05-13 15:55:34 +02:00
David deleted branch chore/remove-container-from-ci 2026-05-13 15:55:34 +02:00
Sign in to join this conversation.
No reviewers
No labels
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
pandoras-box/youtrack-cli!8
No description provided.