I am setting up nightly build for my hobby project. I want to have a nightly release, but only when the code was changed during the day. Is there a best practice for this?
Now I set it up like following:
- A “primary” workflow, triggered by push on
master
, runs all tests, codecov, etc. - A “release” workflow, triggered by tag push.
- A “prepare-release” workflow, scheduled nightly:
# Load versionCode of last release
source version.properties
# Skip release if nothing changed since last release
git fetch --tags
[ "release-${versionCode}" = "$(git tag --list --points-at HEAD)" ] && echo "Nothing changed since release-${versionCode}. Skipping release." && exit 0
# Step versionCode and create tag
sed --regexp-extended --in-place 's/^(versionCode=)([0-9]+)$/echo "\1$((\2+1))"/ge' version.properties
source version.properties
git commit --message="Prepare for release-${versionCode}" version.properties
git tag release-${versionCode}
# By pushing this tag, "release" workflow is triggered
git push origin --tags :
The problem is, every time a new tag is pushed, the “primary” workflow is also triggered, unnecessarily. And if push with [skip ci], “release” won’t be triggered either.