Skip to content

feat: force update, multi-device releases and CI smoke test - #348

Merged
pixincreate merged 4 commits into
mainfrom
chore/release-pipeline-overhaul
Sep 6, 2026
Merged

feat: force update, multi-device releases and CI smoke test#348
pixincreate merged 4 commits into
mainfrom
chore/release-pipeline-overhaul

Conversation

@pixincreate

Copy link
Copy Markdown
Owner

What

  • Scheduled runs can rebuild the current GrapheneOS version when a module gets an update. Opt in with FORCE_UPDATE = "true" in env.toml. Superseded release assets are removed after the new upload.
  • New multi-release.yml workflow: one release run per device. Device list comes from the devices input or DEVICES in env.toml. Each entry can carry its own Magisk preinit device, for example bluejay:sda8.
  • Release workflow shell logic moved to src/ci/ scripts. release.yml is now glue only and callable per device.
  • New CI workflow on pull requests: shell syntax, shellcheck, env.toml parsing, and a check that every download URL still resolves.

Fixes

  • Magisk version resolution could pick a ^{} tag entry and break the download URL
  • GRAPHENEOS[UPDATE_TYPE] guard compared literal text and never fired
  • Signature verification accepted any signature in the directory instead of the tool's own
  • Patch skip check tested a quoted glob and could never match
  • gh-pages update info was skipped when only the asset URL changed

Closes #66
Closes #301

- Ignore `^{}` entries from annotated tags when resolving the latest
  Magisk version. The next annotated tag would have produced a broken
  download URL.
- Fix the `GRAPHENEOS[UPDATE_TYPE]` guard that compared literal text
  and never fired.
- Fetch versions in `download_ota` only when the OTA URL is not set,
  the inverted check fetched everything twice.
- Verify the signature of the current tool instead of accepting any
  signature in the directory. Also fix the `my-avbrot-setup` typo.

Assisted-by: Claude Fable 5
Signed-off-by: PiX <69745008+pixincreate@users.noreply.github.com>
- Split `construct_url` out of `url_constructor` so URLs can be built
  without downloading. Groundwork for the CI smoke test.
- Fix the patch skip check that tested a quoted glob and could never
  match.
- Assign env.toml values with `printf -v` to keep values with spaces
  or commas intact.
- Resolve shellcheck warnings and drop the unused `pkmd` variable.

Assisted-by: Claude Fable 5
Signed-off-by: PiX <69745008+pixincreate@users.noreply.github.com>
Scheduled runs can now rebuild the current GrapheneOS version when a
module gets an update. Set `FORCE_UPDATE = "true"` in env.toml to opt
in. The check compares module versions against the commit that built
the existing release asset, and superseded assets are removed after
the new upload. The update info on gh-pages is copied on content
change instead of version match, so rebuilds with an unchanged
version reach the OTA server.

A new multi-release workflow starts one release run per device from a
comma-separated list, read from the `devices` input or `DEVICES` in
env.toml. Each entry can carry its own Magisk preinit device, for
example `bluejay:sda8`. release.yml is callable per device through
workflow_call, and the publish step rebases before pushing to survive
parallel device builds.

The release workflow shell logic now lives in `src/ci/` scripts. This
keeps the workflow file small and makes the logic testable locally.

Assisted-by: Claude Fable 5
Signed-off-by: PiX <69745008+pixincreate@users.noreply.github.com>
Check shell syntax, run shellcheck, parse env.toml, and verify that
every constructed download URL still resolves. Catches renamed
release assets and version drift before a release run does.

Assisted-by: Claude Fable 5
Signed-off-by: PiX <69745008+pixincreate@users.noreply.github.com>
@pixincreate pixincreate self-assigned this Sep 6, 2026
@pixincreate pixincreate added bug Something isn't working enhancement New feature or request labels Sep 6, 2026
@pixincreate
pixincreate merged commit 5b3ea27 into main Sep 6, 2026
2 checks passed
@pixincreate
pixincreate deleted the chore/release-pipeline-overhaul branch September 6, 2026 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Building for multiple devices (and also root+nonroot) and env.toml ? feat: allow user to trigger build for same version(force build)

1 participant