build-scripts/drone/HelmChart.yml

85 lines
2.8 KiB
YAML

.HelmChartLint: &HelmChartLint
name: HelmChartLint
image: alpine/helm:3.10.0
environment:
CHART_PATH: "./chart"
commands:
- &HelmChartLintCommands |
cd "$CHART_PATH"
helm lint .
.HelmChartPublish: &HelmChartPublish
name: HelmChartPublish
image: alpine/helm:3.10.1
environment:
CHART_PATH: "./chart"
HELM_REPO_NAME: "" # defaults to project name
HELM_ENDPOINT: "" # defaults to gitea organization helm registry if running in gitea
HELM_USER: "" # defaults to CI_REGISTRY_USER
HELM_PASSWORD: "" # defaults to CI_REGISTRY_PASSWORD
HELM_LINT: "false"
TAG_COMMIT_ENABLE: "false"
TAG_COMMIT_BASE_VERSION: "0.0.0"
TAG_COMMIT_PREFIX: "commit-"
TAG_REF_SLUG_ENABLE: "true"
TAG_REF_SLUG_BASE_VERSION: "0.0.0"
TAG_CHART_YAML_VERSION: "false"
commands:
- &HelmChartPublishCommands |
# drone does not support expanding vars in environment values, set defaults via bash
if [[ -z "$HELM_REPO_NAME" ]]; then HELM_REPO_NAME=$CI_PROJECT_NAME; fi
if [[ -z "$HELM_USER" ]]; then HELM_USER=$CI_REGISTRY_USER; fi
if [[ -z "$HELM_PASSWORD" ]]; then HELM_PASSWORD=$CI_REGISTRY_PASSWORD; fi
# add default chart endpoints for gitea
if [[ -z "$HELM_ENDPOINT" ]]; then
if [[ ! -z "$GITEA_PACKAGES_API" ]]; then
HELM_ENDPOINT="$GITEA_PACKAGES_API/$CI_PROJECT_NAMESPACE/helm"
else
echo "ERROR: no helm endpoint defined"
exit 1
fi
fi
# install plugin chartmuseum/helm-push
helm plugin install https://github.com/chartmuseum/helm-push
# register repo
helm repo add --username="$HELM_USER" --password="$HELM_PASSWORD" "$HELM_REPO_NAME" "$HELM_ENDPOINT"
cd "$CHART_PATH"
# lint if enabled
if [[ "$HELM_LINT" == "true" ]]; then
helm lint .
fi
# prepare package
helm package .
# publish version for commit
if [[ "$TAG_COMMIT_ENABLE" == "true" ]]; then
helm cm-push . "$HELM_REPO_NAME" --version=$TAG_COMMIT_BASE_VERSION-$IMAGE_COMMIT_PREFIX$CI_COMMIT_SHA
fi
# publish version for git branch/tag
if [[ "$TAG_REF_SLUG_ENABLE" == "true" ]] && [[ ! -z $DRONE_TAG ]]; then
# special handling for tags: strip leading "v" character if present to allow tags with or without leading "v" to work
helm cm-push . "$HELM_REPO_NAME" --version="${DRONE_TAG#"v"}"
elif [[ "$TAG_REF_SLUG_ENABLE" == "true" ]] && [[ -z "$DRONE_PULL_REQUEST" ]] && [[ ! -z $DRONE_BRANCH ]]; then
helm cm-push . "$HELM_REPO_NAME" --version=$TAG_REF_SLUG_BASE_VERSION-$DRONE_BRANCH
fi
# publish version specified in Chart.yaml
if [[ "$TAG_CHART_YAML_VERSION" == "true" ]]; then
helm cm-push . "$HELM_REPO_NAME"
fi