build: Makefile + Cloudflare R2 release pipeline #5

Merged
hugooconnor merged 0 commits from refs/pull/5/head into main 2026-06-21 13:29:41 +00:00
hugooconnor commented 2026-06-21 12:48:41 +00:00 (Migrated from codeberg.org)

Adds a build + distribution setup for ar-edit, modeled on the hence project.

What's included

  • Makefile — adds install/uninstall (to $PREFIX/bin, default ~/.local) and a host-platform dist tarball target; keeps existing build/test/check targets. make help documents everything.
  • install.sh — curl-pipeable installer: curl -fsSL https://files.anuna.io/ar-edit/latest/install.sh | bash. Detects OS/arch, reads version.json, downloads the matching archive.
  • release.sh./release.sh X.Y.Z bumps the workspace version, runs tests/fmt/clippy, commits, tags vX.Y.Z, pushes → triggers the release pipeline.
  • .woodpecker/ci.yaml — test + fmt + clippy on push/PR.
  • .woodpecker/release.yaml — on tag: cross-compiles linux-x86_64, macos-arm64, macos-x86_64, windows-x86_64 and uploads to the Cloudflare R2 bucket anuna-files, served at https://files.anuna.io/ar-edit/.

Build-time considerations (Codeberg 60-min limit)

  • macOS uses the prebuilt joseluisq/rust-linux-darwin-builder image instead of building osxcross from source (saves ~30 min/target).
  • All platform builds run in parallel (depends_on: []) with a per-step CARGO_TARGET_DIR to avoid cargo lock contention on the shared workspace.
  • Estimated wall-clock: ~10-15 min.

Before first real tag

  • CI secrets cf_r2_access_key_id, cf_r2_secret_access_key, cf_account_id must be set on this repo in Woodpecker.
  • Consider pinning the rust-linux-darwin-builder tag (currently :latest) to track the project's Rust version.

🤖 Generated with Claude Code

Adds a build + distribution setup for ar-edit, modeled on the `hence` project. ## What's included - **Makefile** — adds `install`/`uninstall` (to `$PREFIX/bin`, default `~/.local`) and a host-platform `dist` tarball target; keeps existing build/test/check targets. `make help` documents everything. - **install.sh** — curl-pipeable installer: `curl -fsSL https://files.anuna.io/ar-edit/latest/install.sh | bash`. Detects OS/arch, reads `version.json`, downloads the matching archive. - **release.sh** — `./release.sh X.Y.Z` bumps the workspace version, runs tests/fmt/clippy, commits, tags `vX.Y.Z`, pushes → triggers the release pipeline. - **.woodpecker/ci.yaml** — test + fmt + clippy on push/PR. - **.woodpecker/release.yaml** — on tag: cross-compiles linux-x86_64, macos-arm64, macos-x86_64, windows-x86_64 and uploads to the Cloudflare R2 bucket `anuna-files`, served at https://files.anuna.io/ar-edit/. ## Build-time considerations (Codeberg 60-min limit) - macOS uses the prebuilt `joseluisq/rust-linux-darwin-builder` image instead of building osxcross from source (saves ~30 min/target). - All platform builds run in **parallel** (`depends_on: []`) with a per-step `CARGO_TARGET_DIR` to avoid cargo lock contention on the shared workspace. - Estimated wall-clock: ~10-15 min. ## Before first real tag - CI secrets `cf_r2_access_key_id`, `cf_r2_secret_access_key`, `cf_account_id` must be set on this repo in Woodpecker. - Consider pinning the `rust-linux-darwin-builder` tag (currently `:latest`) to track the project's Rust version. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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
anuna-research/ar-edit!5
No description provided.