Skip to content

CI: run only quick checks on GitHub, and the builds on the local computer - #38

Merged
strikeout merged 4 commits into
mainfrom
amman/ci-minutes-reduction
Oct 27, 2026
Merged

strikeout merged 4 commits into
mainfrom
amman/ci-minutes-reduction

Conversation

@strikeout

Copy link
Copy Markdown
Owner

GitHub now runs only quick checks. The builds run on the local computer.

Changes

  • ci.yml runs for a pull request and for a push to main. It ran for each push to each branch and again for the pull request, so each commit ran two times.
  • A pull request runs one Linux job. The job checks the format (cargo fmt, and rustfmt for esp32/), runs cargo clippy -- -D warnings and runs cargo test.
  • The Windows and macOS jobs run cargo check after a merge to main or on a manual start. They do not build a release. release.yml builds all targets from a tag, as before.
  • esp32-ci.yml builds one firmware image after a merge to main or on a manual start. It does not run for a pull request. The workflow has no dmx build and no artifact upload now.
  • A newer push cancels the running workflow of the same branch (concurrency). Only main writes the Rust cache.
  • A change to Markdown or docs/ only does not start ci.yml.
  • scripts/check.sh runs the checks of CI on the local computer. When the branch changes esp32/, crates/ or webui/, it also builds the firmware with and without dmx. On an M-series Mac, a full run with the firmware takes about 4 minutes.
  • .githooks/pre-push runs the script. Enable it once for each clone: git config core.hooksPath .githooks.
  • One commit formats all the code with rustfmt. One commit fixes the clippy warnings without a change in behaviour. An open branch can get conflicts on the formatted lines. Rebase it, then run cargo fmt --all.

Runner time for each commit of a pull request

Before After
ci.yml 2 × (Linux test + Windows release build + macOS release build), about 13 minutes 1 Linux job, about 2 to 3 minutes
esp32-ci.yml 2 firmware builds, about 5 to 7 minutes none

Test

  • sh scripts/check.sh --esp32 passes on the local computer: format, clippy, 240 tests, and the firmware with and without dmx.
  • actionlint reports no error for the two workflow files.
  • main has no branch protection, so the renamed and removed checks block no pull request.

This commit changes only the format. CI checks the format from now on.
The changes keep the behaviour. Most changes come from cargo clippy --fix. Two functions with many arguments get an allow attribute. CI checks clippy from now on.
A pull request runs one Linux job. The job checks the format, runs clippy and runs the tests.
CI ran for each push and again for the pull request. Now it runs for the pull request and for main only.
The Windows and macOS jobs run cargo check after a merge to main. They do not build a release.
The firmware workflow builds one image after a merge to main.
scripts/check.sh runs the same checks and the two firmware builds on the local computer.
The pre-push hook in .githooks runs the script.
A dated rule in AGENTS.md asks for a local build after each merge to main. GitHub Actions runs only quick checks.
@strikeout
strikeout merged commit 7029dac into main Oct 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant