Move CI to Forgejo Actions and add a release workflow #4

Merged
selu merged 5 commits from forgejo-release into master 2026-10-28 20:41:21 +00:00
Owner

Summary

  • Move CI from .github/workflows/rust_ci.yml to .forgejo/workflows/ci.yml so it runs on Forgejo Actions.
  • Add .forgejo/workflows/release.yml. On a v* tag push, it builds the firmware (ELF and a merged image) and static irbt binaries for Linux x86_64/aarch64 and Windows, then publishes a release with SHA256SUMS. It fails if the tag doesn't match the crate versions. You can also run it by hand to rebuild an existing tag.
  • README: add a Releases section on the downloads, flashing, and cutting a release.
  • Add docs/forgejo-runner.md on setting up a Forgejo runner.

Test plan

  • CI workflow runs on this PR
  • Push a prerelease tag (e.g. v0.2.1-rc1) and check the release assets

🤖 Generated with Claude Code

## Summary - Move CI from `.github/workflows/rust_ci.yml` to `.forgejo/workflows/ci.yml` so it runs on Forgejo Actions. - Add `.forgejo/workflows/release.yml`. On a `v*` tag push, it builds the firmware (ELF and a merged image) and static `irbt` binaries for Linux x86_64/aarch64 and Windows, then publishes a release with `SHA256SUMS`. It fails if the tag doesn't match the crate versions. You can also run it by hand to rebuild an existing tag. - README: add a Releases section on the downloads, flashing, and cutting a release. - Add `docs/forgejo-runner.md` on setting up a Forgejo runner. ## Test plan - [ ] CI workflow runs on this PR - [ ] Push a prerelease tag (e.g. `v0.2.1-rc1`) and check the release assets 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Move CI to Forgejo Actions and add a release workflow
Some checks failed
Continuous Integration / Firmware-1 (pull_request) Failing after 50s
Continuous Integration / Firmware (pull_request) Failing after 50s
Continuous Integration / Firmware-2 (pull_request) Failing after 47s
Continuous Integration / Host tools (pull_request) Successful in 1m36s
Continuous Integration / Host tools-1 (pull_request) Successful in 1m17s
Continuous Integration / Host tools-2 (pull_request) Successful in 1m17s
c458603164
Port the GitHub CI workflow to .forgejo/workflows/ci.yml and add
release.yml, which builds firmware and irbt binaries and publishes a
release when a v* tag is pushed. Document releases in the README and
runner setup in docs/forgejo-runner.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hide Forgejo's job token from espup
Some checks failed
Continuous Integration / Host tools (pull_request) Has been cancelled
Continuous Integration / Firmware-1 (pull_request) Failing after 54s
Continuous Integration / Firmware (pull_request) Failing after 54s
Continuous Integration / Host tools-1 (pull_request) Has been cancelled
Continuous Integration / Host tools-2 (pull_request) Has been cancelled
Continuous Integration / Firmware-2 (pull_request) Has been cancelled
98158328ee
Forgejo sets GITHUB_TOKEN to its own job token. espup sends it to the
GitHub API, which rejects it, so the Xtensa toolchain install failed.
Clear it for the toolchain step so espup queries GitHub anonymously.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Install the Xtensa toolchain without Forgejo's job token
Some checks failed
Continuous Integration / Firmware (pull_request) Successful in 7m3s
Continuous Integration / Firmware-1 (pull_request) Successful in 16m55s
Continuous Integration / Host tools (pull_request) Successful in 1m35s
Continuous Integration / Host tools-1 (pull_request) Failing after 17s
Continuous Integration / Host tools-2 (pull_request) Successful in 1m6s
Continuous Integration / Firmware-2 (pull_request) Successful in 14m47s
e2353e6636
Setting GITHUB_TOKEN to an empty value on the xtensa-toolchain step
didn't help: the runner overrides it inside the action. Replace the
action with a script that does the same thing after unsetting the
variable, with espup and ldproxy pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cache the Xtensa toolchain in CI
Some checks failed
Continuous Integration / Host tools-2 (pull_request) Successful in 1m23s
Continuous Integration / Firmware (pull_request) Successful in 11m34s
Continuous Integration / Firmware-1 (pull_request) Failing after 11m33s
Continuous Integration / Host tools (pull_request) Successful in 2m5s
Continuous Integration / Firmware-2 (pull_request) Failing after 2m53s
Continuous Integration / Host tools-1 (pull_request) Successful in 1m28s
b14d42656f
Pin the Xtensa Rust toolchain to 1.99.0.0 and cache the esp toolchain
directory, which holds Rust, LLVM and GCC, so jobs skip espup install
on a cache hit. With the version pinned, espup no longer queries the
GitHub API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pin the Xtensa toolchain to 1.97.0.0
All checks were successful
Continuous Integration / Host tools (pull_request) Successful in 46s
Continuous Integration / Firmware (pull_request) Successful in 7m39s
Continuous Integration / Firmware-1 (pull_request) Successful in 18m48s
Continuous Integration / Firmware-2 (pull_request) Successful in 12m9s
Continuous Integration / Host tools-1 (pull_request) Successful in 1m14s
Continuous Integration / Host tools-2 (pull_request) Successful in 49s
61412b3999
1.99.0.0 is a prerelease, and its std doesn't build for espidf
(libc::AT_FDCWD is missing). 1.97.0.0 is the latest release, the one
espup installed before the version was pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
selu merged commit 7199605dc0 into master 2026-10-28 20:41:21 +00: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
selu/ir-bt-bridge!4
No description provided.