From 7556a633781e32674506b2c2566d06094cb50bf9 Mon Sep 17 00:00:00 2001 From: henrygd Date: Sun, 16 Aug 2026 20:23:34 -0400 Subject: [PATCH] helm: update version to latest and automate chart app version bumps - Keep chart documentation aligned with the application version - Update app versions automatically after application releases - Restore the main application release as latest after chart publishing --- .github/workflows/release-please.yml | 11 ++++++ .github/workflows/release.yml | 48 +++++++++++++++++++++++ supplemental/helm/beszel-agent/Chart.yaml | 2 +- supplemental/helm/beszel-agent/README.md | 6 +-- supplemental/helm/beszel-hub/Chart.yaml | 2 +- supplemental/helm/beszel-hub/README.md | 6 +-- 6 files changed, 67 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index efe9ee87..42961b74 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -139,3 +139,14 @@ jobs: # Generate index.yaml for GitHub Pages args=(-o "$owner" -r "$repo" --push -t "${{ secrets.CR_TOKEN }}" --index-path docs/index.yaml --release-name-template '{{ .Name }}-v{{ .Version }}') .tmp/cr index "${args[@]}" + + - name: Restore application release as latest + if: ${{ always() }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + release_id=$(gh api "repos/${GITHUB_REPOSITORY}/releases?per_page=100" \ + --jq 'map(select(.draft == false and .prerelease == false and (.tag_name | test("^v[0-9]"))))[0].id') + test -n "$release_id" + gh api --method PATCH "repos/${GITHUB_REPOSITORY}/releases/${release_id}" \ + -f make_latest=true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78699de9..344c2bf7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -52,3 +52,51 @@ jobs: GITHUB_TOKEN: ${{ secrets.TOKEN || secrets.GITHUB_TOKEN }} WINGET_TOKEN: ${{ secrets.WINGET_TOKEN }} IS_FORK: ${{ github.repository_owner != 'henrygd' }} + + update-helm-app-version: + name: Update Helm app version + needs: goreleaser + if: ${{ github.repository_owner == 'henrygd' }} + runs-on: ubuntu-latest + + steps: + - name: Checkout main + uses: actions/checkout@v7 + with: + ref: main + token: ${{ secrets.CR_TOKEN }} + + - name: Update chart app versions + env: + RELEASE_TAG: ${{ github.ref_name }} + run: | + version="${RELEASE_TAG#v}" + if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$ ]]; then + echo "Invalid release version: $version" >&2 + exit 1 + fi + + for chart in supplemental/helm/beszel-agent supplemental/helm/beszel-hub; do + current_version=$(awk -F '"' '/^appVersion:/ { print $2 }' "$chart/Chart.yaml") + NEW_VERSION="$version" perl -pi -e 's/^appVersion:.*$/appVersion: "$ENV{NEW_VERSION}"/' "$chart/Chart.yaml" + OLD_VERSION="$current_version" NEW_VERSION="$version" \ + perl -pi -e 's/\Q$ENV{OLD_VERSION}\E/$ENV{NEW_VERSION}/g' "$chart/README.md" + done + + - name: Commit app version update + env: + RELEASE_TAG: ${{ github.ref_name }} + run: | + if git diff --quiet -- supplemental/helm; then + echo "Helm charts already use ${RELEASE_TAG#v}" + exit 0 + fi + + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add supplemental/helm/beszel-agent/Chart.yaml \ + supplemental/helm/beszel-agent/README.md \ + supplemental/helm/beszel-hub/Chart.yaml \ + supplemental/helm/beszel-hub/README.md + git commit -m "fix(helm): update app version to ${RELEASE_TAG#v}" + git push origin HEAD:main diff --git a/supplemental/helm/beszel-agent/Chart.yaml b/supplemental/helm/beszel-agent/Chart.yaml index d76f3cfa..813a5256 100644 --- a/supplemental/helm/beszel-agent/Chart.yaml +++ b/supplemental/helm/beszel-agent/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 description: Installs beszel-agent in kubernetes home: https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-agent name: beszel-agent -appVersion: "0.17.0" +appVersion: "0.18.7" # Managed automatically by Release Please; do not edit manually. version: 0.1.3 sources: diff --git a/supplemental/helm/beszel-agent/README.md b/supplemental/helm/beszel-agent/README.md index aa709948..e5b33b36 100644 --- a/supplemental/helm/beszel-agent/README.md +++ b/supplemental/helm/beszel-agent/README.md @@ -87,7 +87,7 @@ Essential parameters to configure: | `secret.sshKey` | `ssh-key` | Key name in the secret for the SSH public key | | `secret.tokenKey` | `token` | Key name in the secret for the authentication token | | `image.repository` | `henrygd/beszel-agent` | Container image | -| `image.tag` | Chart AppVersion (0.17.0) | Image version | +| `image.tag` | Chart AppVersion (0.18.7) | Image version | | `hostNetwork` | `false` | Use host network for network monitoring | | `tolerations` | Allows all taints | Tolerations for running on tainted nodes | @@ -392,7 +392,7 @@ helm upgrade beszel-agent ./beszel-agent \ # Change image version helm upgrade beszel-agent ./beszel-agent \ - --set image.tag="0.17.0" + --set image.tag="0.18.7" ``` ### Restart All Agents @@ -529,7 +529,7 @@ kubectl get secret beszel-agent -o jsonpath='{.data.ssh-key}' | base64 -d ## Chart Information - **Chart Version**: 0.1.0 -- **App Version**: 0.17.0 +- **App Version**: 0.18.7 - **Kubernetes Version**: 1.19+ - **Maintainer**: cloudwithdan (nikoloskid@pm.me) diff --git a/supplemental/helm/beszel-hub/Chart.yaml b/supplemental/helm/beszel-hub/Chart.yaml index 9dda15ad..dc799d64 100644 --- a/supplemental/helm/beszel-hub/Chart.yaml +++ b/supplemental/helm/beszel-hub/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 description: Installs beszel-hub in kubernetes home: https://github.com/henrygd/beszel/tree/main/supplemental/helm/beszel-hub name: beszel-hub -appVersion: "0.17.0" +appVersion: "0.18.7" # Managed automatically by Release Please; do not edit manually. version: 0.1.3 sources: diff --git a/supplemental/helm/beszel-hub/README.md b/supplemental/helm/beszel-hub/README.md index 97ae7ea7..7876ca9d 100644 --- a/supplemental/helm/beszel-hub/README.md +++ b/supplemental/helm/beszel-hub/README.md @@ -54,7 +54,7 @@ Key configuration options in `values.yaml`: |-----------|---------|-------------| | `replicaCount` | `1` | Number of Beszel Hub replicas | | `image.repository` | `henrygd/beszel` | Container image repository | -| `image.tag` | Chart AppVersion (0.17.0) | Container image tag | +| `image.tag` | Chart AppVersion (0.18.7) | Container image tag | | `image.pullPolicy` | `IfNotPresent` | Image pull policy | | `service.port` | `8090` | Service port | | `persistentVolumeClaim.enabled` | `true` | Enable persistent volume | @@ -176,7 +176,7 @@ tolerations: ```yaml replicaCount: 3 image: - tag: "0.17.0" + tag: "0.18.7" service: type: LoadBalancer ingress: @@ -337,7 +337,7 @@ By default, Beszel Hub uses a PersistentVolumeClaim for data storage. Ensure you ## Chart Information - **Chart Version**: 0.1.0 -- **App Version**: 0.17.0 +- **App Version**: 0.18.7 - **Kubernetes Version**: 1.19+ - **Maintainer**: cloudwithdan (nikoloskid@pm.me)