-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Split build and release workflow (#50)
Cleanly separate the build (push on main) and release (new version number) workflow. The build workflow should work like it did before the release workflow was introduced. The release workflow is not supposed to build a new image, but instead to take the latest built image and apply the tag of the new version to it.
- Loading branch information
Showing
3 changed files
with
66 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Garden Linux Builder CI Workflows | ||
|
||
## `build.yml` | ||
|
||
Build container images on all branches. | ||
|
||
For pushes on the `main` branch, tags based on the git sha are created and pushed to the container registry and a pseudo-release called `latest` is updated on GitHub. | ||
This allows users to follow a rolling-release approach if they desire. | ||
|
||
## `release.yml` | ||
|
||
Tag container images and create GitHub Releases. | ||
This workflow only runs on demand (workflow dispatch). | ||
It should be run if a new release is desired. | ||
The workflow dispatch needs a parameter `component` which specifies which version component should be increased. | ||
This is either `minor` (the default) or `major`. | ||
`major` should be picked in cases where the new version has breaking changes (for example between the `build` script and the container image). | ||
|
||
## `differential-shellcheck.yml` | ||
|
||
Finds new warnings using [shellcheck](https://www.shellcheck.net) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
name: Release | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
component: | ||
description: 'Version component to increment (Use *minor* unless we have breaking changes)' | ||
required: true | ||
type: choice | ||
options: | ||
- minor | ||
- major | ||
jobs: | ||
release-new-version: | ||
runs-on: ubuntu-latest | ||
if: github.ref == 'refs/heads/main' && github.event.inputs.component != '' | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
- run: echo Version Component to Increase is ${{ github.event.inputs.component }} | ||
- name: get next version number | ||
run: .github/workflows/bump.py ${{ github.event.inputs.component }} | ||
id: bump | ||
- run: echo New version number ${{ steps.bump.outputs.newVersion }} | ||
- name: tag container image | ||
run: | | ||
SHA=$(git rev-parse HEAD) | ||
podman login -u token -p ${{ github.token }} ghcr.io | ||
podman pull ghcr.io/${{ github.repository }}:amd64-"$SHA" | ||
podman pull ghcr.io/${{ github.repository }}:arm64-"$SHA" | ||
podman manifest create ghcr.io/${{ github.repository }}:${{ steps.bump.outputs.newVersion }} | ||
podman manifest add ghcr.io/${{ github.repository }}:${{ steps.bump.outputs.newVersion }} ghcr.io/${{ github.repository }}:amd64-"$SHA" | ||
podman manifest add ghcr.io/${{ github.repository }}:${{ steps.bump.outputs.newVersion }} ghcr.io/${{ github.repository }}:arm64-"$SHA" | ||
podman manifest push ghcr.io/${{ github.repository }}:${{ steps.bump.outputs.newVersion }} | ||
sed -i 's|container_image=localhost/builder|container_image=ghcr.io/${{ github.repository }}:${{ steps.bump.outputs.newVersion }}|' build | ||
- name: git tag | ||
run: | | ||
git tag ${{ steps.bump.outputs.newVersion }} | ||
git push origin ${{ steps.bump.outputs.newVersion }} | ||
- name: create release (new version) | ||
run: | | ||
release="$(.github/workflows/release.sh ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} create ${{ steps.bump.outputs.newVersion }} "Builder (${{ steps.bump.outputs.newVersion }})")" | ||
.github/workflows/release.sh ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} upload "$release" download/build |