Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/release_chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Release Charts

on:
push:
tags:
- "v*.*.*"

jobs:
release-charts:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Checkout helm-charts
uses: actions/checkout@v3
with:
repository: "${{ github.repository_owner }}/helm-charts"
# use token for helm-charts repo
token: "${{ secrets.HELM_CHARTER_TOKEN }}"
path: "helm-charts"
fetch-depth: 0

- name: Get chart version
run: |
echo "chart_version=$(echo ${GITHUB_REF##*/v})" >> $GITHUB_ENV

- name: Make charts
shell: bash
run: |
TAG=${{ env.chart_version }} make generate-charts

- name: Install chart-releaser
uses: helm/chart-releaser-action@v1.5.0
with:
install_only: true

# upload charts to helm-charts repos's release
- name: Upload charts
shell: bash
run: |
cr upload -o ${{ github.repository_owner }}
env:
# GitHub repository
CR_GIT_REPO: "helm-charts"
# Path to directory with chart packages (default ".cr-release-packages")
CR_PACKAGE_PATH: "_output/release/chart/"
# use token for helm-charts repo
CR_TOKEN: "${{ secrets.HELM_CHARTER_TOKEN }}"

# copy artifacts to helm-charts repo, we need those for update index
- name: Copy artifacts
run: |
cp -r _output/ helm-charts/

- name: Configure Git
working-directory: helm-charts
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

# this step will directly push to the main branch, so make sure you have the right permissions
- name: Update index
working-directory: helm-charts
run: |
rm -rf index.yaml
rm -rf .cr-index
mkdir -p .cr-index
cr index -o ${{ github.repository_owner }} --push
env:
# GitHub repository
CR_GIT_REPO: "helm-charts"
# The GitHub pages branch (default "gh-pages")
CR_PAGES_BRANCH: "main"
# Path to directory with chart packages (default ".cr-release-packages")
CR_PACKAGE_PATH: "_output/release/chart/"
# use token for helm-charts repo
CR_TOKEN: "${{ secrets.HELM_CHARTER_TOKEN }}"
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ gen-client: ## Generate client-go code for CRDs
.PHONY: gen-all
gen-all: generate gen-client ## Generate all code (CRDs, DeepCopy methods, and client-go)

.PHONY: generate-charts
generate-charts: ## Generate Helm charts
bash ./hack/generate-charts.sh

.PHONY: gen-check
gen-check: gen-all ## Check if generated code is up to date
git diff --exit-code
Expand Down
87 changes: 87 additions & 0 deletions hack/generate-charts.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/bin/bash

#
# Copyright 2026 The Volcano Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

set -o errexit
set -o nounset
set -o pipefail

AC_ROOT=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/..
BIN_DIR=${BIN_DIR:-bin}
RELEASE_DIR=${RELEASE_DIR:-_output/release}
export HELM_BIN_DIR=${AC_ROOT}/${BIN_DIR}
export RELEASE_FOLDER=${AC_ROOT}/${RELEASE_DIR}

export HELM_VER=${HELM_VER:-v3.6.3}
export AGENTCUBE_CHART_VERSION=${TAG:-"latest"}
export AGENTCUBE_IMAGE_TAG=${AGENTCUBE_CHART_VERSION}
# Add a v prefix to AGENTCUBE_IMAGE_TAG if it doesn't have one
if [[ ! ${AGENTCUBE_IMAGE_TAG} =~ ^v ]]; then
AGENTCUBE_IMAGE_TAG="v${AGENTCUBE_IMAGE_TAG}"
fi

LOCAL_OS=${OSTYPE}
case $LOCAL_OS in
"linux"*)
LOCAL_OS='linux'
alias sed_i='sed -i'
;;
"darwin"*)
LOCAL_OS='darwin'
alias sed_i='sed -i ""'
;;
*)
echo "This system's OS ${LOCAL_OS} isn't recognized/supported"
exit 1
;;
esac

# Enable the alias function in the Shell
shopt -s expand_aliases
ARCH=$(go env GOARCH)

# Step1. install helm binary
if [[ ! -f "${HELM_BIN_DIR}/version.helm.${HELM_VER}" ]] || [[ ! -f "${HELM_BIN_DIR}/helm" ]] ; then
mkdir -p "${HELM_BIN_DIR}"
TD=$(mktemp -d)
(
cd "${TD}"
curl -Lo "helm.tgz" "https://get.helm.sh/helm-${HELM_VER}-${LOCAL_OS}-${ARCH}.tar.gz"
tar xfz helm.tgz
mv "${LOCAL_OS}-${ARCH}/helm" "${HELM_BIN_DIR}/helm-${HELM_VER}"
)
cp "${HELM_BIN_DIR}/helm-${HELM_VER}" "${HELM_BIN_DIR}/helm"
chmod +x "${HELM_BIN_DIR}/helm"
rm -rf "${TD}"

if [[ ! -f "${HELM_BIN_DIR}/version.helm.${HELM_VER}" ]] ; then
touch "${HELM_BIN_DIR}/version.helm.${HELM_VER}"
fi
fi

echo "generate chart"
CHART_ORIGIN_PATH=${AC_ROOT}/manifests/charts/base
CHART_OUT_PATH=${RELEASE_FOLDER}/chart
rm -rf ${RELEASE_FOLDER}/chart
mkdir -p ${CHART_OUT_PATH}
cp -r "${CHART_ORIGIN_PATH}" "${CHART_OUT_PATH}/agentcube"

# Update image tags in values.yaml
sed_i "s|tag: \"latest\"|tag: \"${AGENTCUBE_IMAGE_TAG}\"|g" "${CHART_OUT_PATH}/agentcube/values.yaml"

${HELM_BIN_DIR}/helm package --version ${AGENTCUBE_CHART_VERSION} --app-version ${AGENTCUBE_CHART_VERSION} "${CHART_OUT_PATH}/agentcube" -d "${CHART_OUT_PATH}"
echo "helm package end, charts is in ${CHART_OUT_PATH}"
Loading