Skip to content

Release Helm chart

Release Helm chart #7

Workflow file for this run

---
name: Release Helm chart
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
env:
BIN_PATH: bin
PACKAGE_PATH: package
INDEX_PATH: index
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout grafana/k8s-monitoring-helm
uses: actions/checkout@v4
with:
fetch-depth: 0
path: source
- name: Checkout grafana/helm-charts
uses: actions/checkout@v4
with:
fetch-depth: 0
repository: grafana/helm-charts
path: helm-charts
token: "${{ secrets.GH_BOT_ACCESS_TOKEN }}"
- name: Set up Helm
uses: azure/setup-helm@v4
- name: Install CR tool
env:
GH_TOKEN: ${{ github.token }}
run: |
mkdir "${BIN_PATH}"
mkdir "${PACKAGE_PATH}"
mkdir "${INDEX_PATH}"
crVersion=$(gh release list --repo helm/chart-releaser --exclude-pre-releases --json tagName --jq '.[0].tagName' | sed 's/v//')
curl -sSLo cr.tar.gz "https://github.com/helm/chart-releaser/releases/download/v${crVersion}/chart-releaser_${crVersion}_linux_amd64.tar.gz"
tar -xzf cr.tar.gz -C "${BIN_PATH}"
rm -f cr.tar.gz
- name: Configure Git
run: |
cd source
git config user.name "$GITHUB_ACTOR"
git config user.email "[email protected]"
cd ../helm-charts
git config user.name "$GITHUB_ACTOR"
git config user.email "[email protected]"
- name: Parse Chart.yaml
id: parse-chart
working-directory: source
run: |
name="$(yq ".name" charts/k8s-monitoring/Chart.yaml)"
version="$(yq ".version" charts/k8s-monitoring/Chart.yaml)"
{
echo "description=$(yq ".description" charts/k8s-monitoring/Chart.yaml)"
echo "version=${version}"
echo "tagVersion=v${version}"
echo "packageName=${name}-${version}"
} >> "${GITHUB_OUTPUT}"
- name: Parse version
id: parse-version
uses: booxmedialtd/ws-action-parse-semver@v1
with:
input_string: ${{ steps.parse-chart.outputs.version }}
- name: Create Helm package
working-directory: source
run: |
helm repo add grafana https://grafana.github.io/helm-charts
helm repo add kepler https://sustainable-computing-io.github.io/kepler-helm-chart
helm repo add opencost https://opencost.github.io/opencost-helm-chart
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm package charts/k8s-monitoring --destination "../${PACKAGE_PATH}"
- name: Create release on grafana/k8s-monitoring-helm
uses: softprops/action-gh-release@v2
with:
name: ${{ steps.parse-chart.outputs.tagVersion }}
repository: grafana/k8s-monitoring-helm
tag_name: ${{ steps.parse-chart.outputs.tagVersion }}
prerelease: ${{ steps.parse-version.outputs.prerelease != '' }}
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
generate_release_notes: true
files: ${{ env.PACKAGE_PATH }}/${{ steps.parse-chart.outputs.packagename }}.tgz
fail_on_unmatched_files: true
# Note that this creates a release in grafana/helm-charts GitHub Repository with a new tag.
# The tag name in grafana/helm-charts is <package>-<version>, while the
# tag name for grafana/k8s-monitoring-helm is <version>.
- name: Create release on grafana/helm-charts
uses: softprops/action-gh-release@v2
with:
name: ${{ steps.parse-chart.outputs.packagename }}
repository: grafana/helm-charts
tag_name: ${{ steps.parse-chart.outputs.packagename }}
prerelease: ${{ steps.parse-version.outputs.prerelease != '' }}
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
body: |
${{ steps.parse-chart.outputs.desc }}
Source commit: https://github.com/${{ github.repository }}/commit/${{ github.sha }}
Tag on source: https://github.com/${{ github.repository }}/releases/tag/${{ steps.parse-chart.outputs.tagname }}
files: ${{ env.PACKAGE_PATH }}/${{ steps.parse-chart.outputs.packagename }}.tgz
fail_on_unmatched_files: true
- name: Update Helm repository index
env:
CR_OWNER: grafana
CR_GIT_REPO: helm-charts
CR_PACKAGE_PATH: ${{ env.PACKAGE_PATH }}
CR_SKIP_EXISTING: true
CR_TOKEN: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
run: |
"${BIN_PATH}/cr" index --index-path "${INDEX_PATH}" --push