Skip to content

Commit

Permalink
Merge pull request containers#271 from klihub/devel/publish-unstable-…
Browse files Browse the repository at this point in the history
…helm-charts

.github: package and publish unstable Helm charts in image registry.
  • Loading branch information
marquiz committed Mar 28, 2024
2 parents 8e4c550 + 65e1f32 commit 1a3bf05
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 2 deletions.
68 changes: 66 additions & 2 deletions .github/workflows/package-helm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,20 @@ on:
push:
tags:
- "v*.*.*"
branches:
- main

env:
CHARTS_DIR: deployment/helm/
IS_RELEASE: ${{ startsWith(github.ref, 'refs/tags/v') && 'true' || 'false' }}
UNSTABLE_CHARTS: unstable-helm-charts
REGISTRY: ghcr.io
REGISTRY_USER: ${{ github.repository_owner }}
REGISTRY_PATH: ${{ github.repository }}

jobs:
release:
if: ${{ github.env.IS_RELEASE == 'true' }}
permissions:
contents: write
runs-on: ubuntu-latest
Expand All @@ -20,7 +28,7 @@ jobs:
- name: Install Helm
uses: azure/[email protected]

- name: Package Helm charts
- name: Package Stable Helm Charts
run: |
find "$CHARTS_DIR" -name values.yaml | xargs -I '{}' \
sed -e s"/pullPolicy:.*/pullPolicy: IfNotPresent/" -i '{}'
Expand All @@ -30,10 +38,66 @@ jobs:
mv $SRC_FILE $DEST_FILE
done
- name: Upload Helm packages to GitHub releases
- name: Upload Stable Helm Charts to GitHub Release
uses: softprops/action-gh-release@v1
with:
name: ${{ github.ref_name }}
draft: true
append_body: true
files: nri-*helm-chart*.tgz

unstable:
concurrency:
group: unstable-helm-charts
cancel-in-progress: false
if: ${{ github.env.IS_RELEASE != 'true' }}
permissions:
packages: write
runs-on: ubuntu-latest
steps:
- name: Deep Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install Helm
uses: azure/[email protected]

- name: Package Unstable Helm Charts
id: package-charts
run: |
# For unstable chart verison we use:
# - chart version: x.y-unstable derived from the latest tag x.y.z
# - image version: 'unstable'.
majmin="$(git describe | sed -E 's/v([0-9]*\.[0-9]*).*$/\1/')"
CHART_VERSION="${majmin}-unstable"
APP_VERSION=unstable
# Package charts
find "$CHARTS_DIR" -name values.yaml | xargs -I '{}' \
sed -e s"/pullPolicy:.*/pullPolicy: Always/" -i '{}'
helm package --version "$CHART_VERSION" --app-version $APP_VERSION "$CHARTS_DIR"/*
find "$CHARTS_DIR" -name values.yaml | xargs -I '{}' \
git checkout '{}'
mkdir ../$UNSTABLE_CHARTS
find . -name '*.tgz' -print | while read SRC_FILE; do
DEST_FILE=$(echo $SRC_FILE | sed 's/v/helm-chart-v/g')
mv -v $SRC_FILE ../$UNSTABLE_CHARTS/$DEST_FILE
done
- name: Log In To Registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | \
helm registry login ${{ env.REGISTRY }}/${{ env.REGISTRY_PATH }} -u ${{ env.REGISTRY_USER }} --password-stdin
- name: Push Unstable Helm Charts To Registry
shell: bash
run: |
# Notes:
# Currently we only publish unstable Helm charts from main/HEAD.
# We have no active cleanup of old unstable charts in place. In
# between new tags unstable chart have the same version, though.
pushd ../$UNSTABLE_CHARTS
for i in ./*.tgz; do
helm push $i oci://${{ env.REGISTRY }}/${{ env.REGISTRY_PATH }}
done
popd
22 changes: 22 additions & 0 deletions docs/deployment/helm/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Helm

## Stable Helm Charts

All the available charts can be found in [artifacthub.io](https://artifacthub.io/packages/search?ts_query_web=nri&verified_publisher=true&official=true&sort=relevance&page=1).

**NOTE:** NRI-plugins Helm installation has been successfully verified in both local clusters and major Cloud Providers' managed clusters, including:
Expand All @@ -19,6 +21,26 @@ All the available charts can be found in [artifacthub.io](https://artifacthub.io

While Ubuntu 20.04/22.04 was used across all three CSP environments, it's worth noting that node images are not limited to Ubuntu 20.04/22.04 only. The majority of widely recognized Linux distributions should be suitable for use.

## Unstable Helm Charts

Helm charts are also published from the main/development branch after each merge.
These charts reference the latest development images tagged as `unstable` and are
are stored alongside plugin images in the OCI image registry.

### Discovering Unstable Helm Charts

Unstable charts can be discovered using [skopeo](https://github.com/containers/skopeo).
For instance, one can list the available charts for the balloons plugin using this
skopeo command:
`skopeo list-tags docker://ghcr.io/containers/nri-plugins/nri-resource-policy-balloons`

### Using Unstable Helm Charts

Once discovered, unstable Helm charts can be used like any other. For instance, to use
the `$X.$Y-unstable` version of the chart to install the development version of the
balloons plugin one can use this command:
`helm install --devel -n kube-system test oci://ghcr.io/containers/nri-plugins/nri-resource-policy-balloons --version $X.$Y-unstable --set image.tag=unstable --set image.pullPolicy=Always`

```{toctree}
---
maxdepth: 2
Expand Down

0 comments on commit 1a3bf05

Please sign in to comment.