diff --git a/.gitlab/ci_templates/helm_package.yml b/.gitlab/ci_templates/helm_package.yml new file mode 100644 index 0000000000000000000000000000000000000000..78b87dafabecc4a336905b2ef28f1cadab0560de --- /dev/null +++ b/.gitlab/ci_templates/helm_package.yml @@ -0,0 +1,63 @@ +# Include this file if you want to package your helm chart to a helm registry. +# You'll need to set two variables: +# +# 1. CHART_NAME: the name of the helm chart. Should correspond to the name in +# Chart.yaml +# 2. CHART_DIR (optional): the directory where your helm chart is in you +# repository. HAS TO END WITH A SLASH if you choose to override it. + +variables: + CHART_DIR: "" + +.chart_release_rules: + rules: + - changes: + - ${CHART_DIR}Chart.yaml + +lint-helm: + stage: lint-helm-chart + image: + name: alpine/helm:3.7.1 + entrypoint: ["/bin/sh", "-c"] + script: + - cd ${CHART_DIR:-"."} + - helm dep update + - helm lint . + artifacts: + paths: + - '${CHART_DIR}charts/**' + expire_in: 1 week + # Even if lint fails, upload the charts/ folder as artifact + when: always + rules: + - changes: + - ${CHART_DIR}*.yaml + - ${CHART_DIR}templates/*.yaml + +package-chart: + stage: package-helm-chart + image: + name: alpine/helm:3.7.1 + entrypoint: ["/bin/sh", "-c"] + script: + - cd ${CHART_DIR:-"."} + - helm package . + artifacts: + paths: + - ${CHART_DIR}${CHART_NAME}-* + expire_in: 1 week + extends: + - .chart_release_rules + +# Push helm chart. Charts on the `main` branch are pushed to `stable`, others +# are pushed to the `unstable` channel. +release-helm: + image: "rancher/curlimages-curl:7.73.0" + stage: release-helm-chart + script: + - cd ${CHART_DIR:-"."} + - if [ "$CI_COMMIT_BRANCH" == "main" ]; then export HELM_CHANNEL='stable'; else export HELM_CHANNEL='unstable'; fi + - export CHART_FILE=$(ls ${CHART_NAME}-*.tgz) + - curl --fail --request POST --user gitlab-ci-token:$CI_JOB_TOKEN --form "chart=@${CHART_FILE}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/api/${HELM_CHANNEL}/charts" + extends: + - .chart_release_rules