forked from k8snetworkplumbingwg/sriov-network-operator
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request k8snetworkplumbingwg#706 from adrianchiris/chart-r…
…elease-automation Helm Chart release automation
- Loading branch information
Showing
27 changed files
with
162 additions
and
2 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,34 @@ | ||
name: "Push helm chart on release" | ||
|
||
env: | ||
IMAGE_NAME: ghcr.io/${{ github.repository }} | ||
|
||
on: | ||
push: | ||
tags: | ||
- v* | ||
jobs: | ||
package-and-push-helm-chart: | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- name: install helm | ||
uses: azure/[email protected] | ||
with: | ||
version: latest | ||
|
||
- name: Check out the repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: update chart | ||
env: | ||
GITHUB_TAG: ${{ github.ref_name }} | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
GITHUB_REPO_OWNER: ${{ github.repository_owner }} | ||
run: make chart-prepare-release | ||
|
||
- name: push chart | ||
env: | ||
GITHUB_TAG: ${{ github.ref_name }} | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
GITHUB_REPO_OWNER: ${{ github.repository_owner }} | ||
run: make chart-push-release |
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
File renamed without changes.
2 changes: 1 addition & 1 deletion
2
deployment/sriov-network-operator/Chart.yaml → ...t/sriov-network-operator-chart/Chart.yaml
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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
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,42 @@ | ||
#!/bin/bash | ||
set -ex | ||
|
||
# github repo owner: e.g k8snetworkplumbingwg | ||
GITHUB_REPO_OWNER=${GITHUB_REPO_OWNER:-} | ||
# github api token with package:write permissions | ||
GITHUB_TOKEN=${GITHUB_TOKEN:-} | ||
# github tag e.g v1.2.3 | ||
GITHUB_TAG=${GITHUB_TAG:-} | ||
|
||
BASE=${PWD} | ||
HELM_CHART=${BASE}/deployment/sriov-network-operator-chart | ||
HELM_CHART_VERSION=${GITHUB_TAG#"v"} | ||
HELM_CHART_TARBALL="sriov-network-operator-chart-${HELM_CHART_VERSION}.tgz" | ||
|
||
# make sure helm is installed | ||
set +e | ||
which helm | ||
if [ $? -ne 0 ]; then | ||
echo "ERROR: helm must be installed" | ||
exit 1 | ||
fi | ||
set -e | ||
|
||
if [ -z "$GITHUB_REPO_OWNER" ]; then | ||
echo "ERROR: GITHUB_REPO_OWNER must be provided as env var" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "$GITHUB_TOKEN" ]; then | ||
echo "ERROR: GITHUB_TOKEN must be provided as env var" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "$GITHUB_TAG" ]; then | ||
echo "ERROR: GITHUB_TAG must be provided as env var" | ||
exit 1 | ||
fi | ||
|
||
helm package ${HELM_CHART} | ||
helm registry login ghcr.io -u ${GITHUB_REPO_OWNER} -p ${GITHUB_TOKEN} | ||
helm push ${HELM_CHART_TARBALL} oci://ghcr.io/${GITHUB_REPO_OWNER} |
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,68 @@ | ||
#!/bin/bash | ||
set -ex | ||
|
||
# github tag e.g v1.2.3 | ||
GITHUB_TAG=${GITHUB_TAG:-} | ||
# github api token (needed only for read access) | ||
GITHUB_TOKEN=${GITHUB_TOKEN:-} | ||
# github repo owner e.g k8snetworkplumbingwg | ||
GITHUB_REPO_OWNER=${GITHUB_REPO_OWNER:-} | ||
|
||
BASE=${PWD} | ||
YQ_CMD="${BASE}/bin/yq" | ||
HELM_VALUES=${BASE}/deployment/sriov-network-operator-chart/values.yaml | ||
HELM_CHART=${BASE}/deployment/sriov-network-operator-chart/Chart.yaml | ||
|
||
|
||
if [ -z "$GITHUB_TAG" ]; then | ||
echo "ERROR: GITHUB_TAG must be provided as env var" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "$GITHUB_TOKEN" ]; then | ||
echo "ERROR: GITHUB_TOKEN must be provided as env var" | ||
exit 1 | ||
fi | ||
|
||
if [ -z "$GITHUB_REPO_OWNER" ]; then | ||
echo "ERROR: GITHUB_REPO_OWNER must be provided as env var" | ||
exit 1 | ||
fi | ||
|
||
get_latest_github_tag() { | ||
local owner="$1" | ||
local repo="$2" | ||
local latest_tag | ||
|
||
# Fetch the latest tags using GitHub API and extract the latest tag name | ||
latest_tag=$(curl -s "https://api.github.com/repos/$owner/$repo/tags" --header "Authorization: Bearer ${GITHUB_TOKEN}" | jq -r '.[0].name') | ||
|
||
echo "$latest_tag" | ||
} | ||
|
||
# tag provided via env var | ||
OPERATOR_TAG=${GITHUB_TAG} | ||
IB_SRIOV_CNI_TAG=$(get_latest_github_tag k8snetworkplumbingwg ib-sriov-cni) | ||
SRIOV_CNI_TAG=$(get_latest_github_tag k8snetworkplumbingwg sriov-cni) | ||
OVS_CNI_TAG=$(get_latest_github_tag k8snetworkplumbingwg ovs-cni) | ||
NETWORK_RESOURCE_INJECTOR_TAG=$(get_latest_github_tag k8snetworkplumbingwg network-resources-injector) | ||
SRIOV_DEVICE_PLUGIN_TAG=$(get_latest_github_tag k8snetworkplumbingwg sriov-network-device-plugin) | ||
|
||
# patch values.yaml in-place | ||
|
||
# sriov-network-operator images: | ||
OPERATOR_REPO=${GITHUB_REPO_OWNER} # this is used to allow to release sriov-network-operator from forks | ||
$YQ_CMD -i ".images.operator = \"ghcr.io/${OPERATOR_REPO}/sriov-network-operator:${OPERATOR_TAG}\"" ${HELM_VALUES} | ||
$YQ_CMD -i ".images.sriovConfigDaemon = \"ghcr.io/${OPERATOR_REPO}/sriov-network-operator-config-daemon:${OPERATOR_TAG}\"" ${HELM_VALUES} | ||
$YQ_CMD -i ".images.webhook = \"ghcr.io/${OPERATOR_REPO}/sriov-network-operator-webhook:${OPERATOR_TAG}\"" ${HELM_VALUES} | ||
|
||
# other images that sriov-network-operator uses: | ||
$YQ_CMD -i ".images.sriovCni = \"ghcr.io/k8snetworkplumbingwg/sriov-cni:${SRIOV_CNI_TAG}\"" ${HELM_VALUES} | ||
$YQ_CMD -i ".images.ibSriovCni = \"ghcr.io/k8snetworkplumbingwg/ib-sriov-cni:${IB_SRIOV_CNI_TAG}\"" ${HELM_VALUES} | ||
$YQ_CMD -i ".images.ovsCni = \"ghcr.io/k8snetworkplumbingwg/ovs-cni:${OVS_CNI_TAG}\"" ${HELM_VALUES} | ||
$YQ_CMD -i ".images.sriovDevicePlugin = \"ghcr.io/k8snetworkplumbingwg/sriov-network-device-plugin:${SRIOV_DEVICE_PLUGIN_TAG}\"" ${HELM_VALUES} | ||
$YQ_CMD -i ".images.resourcesInjector = \"ghcr.io/k8snetworkplumbingwg/network-resources-injector:${NETWORK_RESOURCE_INJECTOR_TAG}\"" ${HELM_VALUES} | ||
|
||
# patch Chart.yaml in-place | ||
$YQ_CMD -i ".version = \"${OPERATOR_TAG#"v"}\"" ${HELM_CHART} | ||
$YQ_CMD -i ".appVersion = \"${OPERATOR_TAG}\"" ${HELM_CHART} |