Skip to content

mcspr/espurna-nightly-builder

Repository files navigation

ESPurna Nightly Builder

latest nightly build .github/workflows/lint.yml .github/workflows/prepare.yml .github/workflows/nightly.yml

Nightly build?

This repo is used to build binary release of ESPurna from latest commit to the dev branch.

Technical info

Scheduled events are used to trigger the build. See .github/workflows/prepare.yml, .github/workflows/nightly.yml and espurna_nightly_builder helper scripts.

Both workflows can be triggered with a workflow_dispatch event.

prepare.yml

See .github/workflows/prepare.yml

This workflow is (supposed to be) triggered on a schedule. Unless the following tests pass, this stage will result in an error:

  • The commit that 'dev' branch points at is different from the 'commit.txt' contents.
  • All Checks of the target repository 'dev' branch are successful.
  • 'master' branch does not point to the same commit as 'dev', as we don't want to re-do the master release.

Finally, the 'commit.txt' is updated with the latest SHA value of the 'dev' branch.

nightly.yml

See .github/workflows/nightly.yml

When 'prepare.yml' is successful or user triggers the workflow manually:

  • 'nightly' branch is fetched with fetch depth 2, and HEAD and HEAD~1 'commit.txt' contents are saved.
  • Target repository is fetched using the HEAD commit and the generate_release_sh.py script is called (which is also used to build the master branch release)
  • New pre-release is created with a tag YYYYMMDD, based on the latest modification date of the 'commit.txt'. Body should contain the HEAD~1...HEAD comparison URL.
  • All of .bin files are uploaded as assets of the pre-release.

Known issues

Incomplete and not working right now

.gitlab-ci.yml uses the same process as original Travis build script, but with notable differences:

TODO

  • GitHub commit status / GitHub Checks for 'nightly' branch
  • Hide commit status for 'builder' branch
  • Hide releases until build is complete
  • Redo build completely when triggered by API (remove tag, release and it's assets)
  • GitLab integration