gitea/DroneHelm: support commands anchor, support publishing chart yaml version, support lint+publish in a single step, unified helm repo auth
This commit is contained in:
parent
9f151bb1cf
commit
b453904a4d
@ -6,38 +6,40 @@
|
|||||||
CHART_PATH: "./chart"
|
CHART_PATH: "./chart"
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
- |
|
- &HelmChartLintCommands |
|
||||||
cd "$CHART_PATH"
|
cd "$CHART_PATH"
|
||||||
helm lint .
|
helm lint .
|
||||||
|
|
||||||
.HelmChartPublish: &HelmChartPublish
|
.HelmChartPublish: &HelmChartPublish
|
||||||
name: HelmChartPublish
|
name: HelmChartPublish
|
||||||
image: alpine/helm:3.10.0
|
image: alpine/helm:3.10.1
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
|
CHART_PATH: "./chart"
|
||||||
HELM_REPO_NAME: "" # defaults to project name
|
HELM_REPO_NAME: "" # defaults to project name
|
||||||
HELM_ENDPOINT: "" # defaults to gitea organization helm registry if running in gitea
|
HELM_ENDPOINT: "" # defaults to gitea organization helm registry if running in gitea
|
||||||
HELM_USER: "" # defaults to CI_REGISTRY_USER
|
HELM_USER: "" # defaults to CI_REGISTRY_USER
|
||||||
HELM_PASSWORD: "" # defaults to CI_REGISTRY_PASSWORD
|
HELM_PASSWORD: "" # defaults to CI_REGISTRY_PASSWORD
|
||||||
|
HELM_LINT: "false"
|
||||||
|
|
||||||
CHART_PATH: "./chart"
|
TAG_COMMIT_ENABLE: "false"
|
||||||
|
|
||||||
TAG_CHART_VERSION_ENABLE: "false"
|
|
||||||
TAG_COMMIT_ENABLE: "true"
|
|
||||||
TAG_COMMIT_BASE_VERSION: "0.0.0"
|
TAG_COMMIT_BASE_VERSION: "0.0.0"
|
||||||
TAG_COMMIT_PREFIX: "commit-"
|
TAG_COMMIT_PREFIX: "commit-"
|
||||||
|
|
||||||
TAG_REF_SLUG_ENABLE: "true"
|
TAG_REF_SLUG_ENABLE: "true"
|
||||||
TAG_REF_SLUG_BASE_VERSION: "0.0.0"
|
TAG_REF_SLUG_BASE_VERSION: "0.0.0"
|
||||||
|
|
||||||
|
TAG_CHART_YAML_VERSION: "false"
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
|
|
||||||
|
- &HelmChartPublishCommands |
|
||||||
# drone does not support expanding vars in environment values, set defaults via bash
|
# 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_REPO_NAME" ]]; then HELM_REPO_NAME=$CI_PROJECT_NAME; fi
|
||||||
- if [[ -z "$HELM_USER" ]]; then HELM_USER=$CI_REGISTRY_USER; fi
|
if [[ -z "$HELM_USER" ]]; then HELM_USER=$CI_REGISTRY_USER; fi
|
||||||
- if [[ -z "$HELM_PASSWORD" ]]; then HELM_PASSWORD=$CI_REGISTRY_PASSWORD; fi
|
if [[ -z "$HELM_PASSWORD" ]]; then HELM_PASSWORD=$CI_REGISTRY_PASSWORD; fi
|
||||||
|
|
||||||
# add default chart endpoints for gitea
|
# add default chart endpoints for gitea
|
||||||
- |
|
|
||||||
if [[ -z "$HELM_ENDPOINT" ]]; then
|
if [[ -z "$HELM_ENDPOINT" ]]; then
|
||||||
if [[ ! -z "$GITEA_PACKAGES_API" ]]; then
|
if [[ ! -z "$GITEA_PACKAGES_API" ]]; then
|
||||||
HELM_ENDPOINT="$GITEA_PACKAGES_API/$CI_PROJECT_NAMESPACE/helm"
|
HELM_ENDPOINT="$GITEA_PACKAGES_API/$CI_PROJECT_NAMESPACE/helm"
|
||||||
@ -48,40 +50,35 @@
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# install plugin chartmuseum/helm-push
|
# install plugin chartmuseum/helm-push
|
||||||
- helm plugin install https://github.com/chartmuseum/helm-push
|
helm plugin install https://github.com/chartmuseum/helm-push
|
||||||
|
|
||||||
# register repo
|
# register repo
|
||||||
- helm repo add --username="$HELM_USER" --password="$HELM_PASSWORD" "$HELM_REPO_NAME" "$HELM_ENDPOINT"
|
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
|
# prepare package
|
||||||
- |
|
|
||||||
cd "$CHART_PATH"
|
|
||||||
helm package .
|
helm package .
|
||||||
|
|
||||||
- |
|
# publish version for commit
|
||||||
if [[ "$GITLAB_HELM_REPO_AUTH" == "true" ]]; then
|
|
||||||
helm repo add --username="${CI_REGISTRY_USER}" --password="${CI_REGISTRY_PASSWORD}" "$HELM_REPO_NAME" $HELM_STABLE_ENDPOINT
|
|
||||||
fi
|
|
||||||
|
|
||||||
# tag based on chart version, install jq first
|
|
||||||
- |
|
|
||||||
if [[ "$TAG_CHART_VERSION_ENABLE" == "true" ]]; then
|
|
||||||
apk add jq
|
|
||||||
CHART_VERSION=$(cat Chart.yaml | yq .version)
|
|
||||||
helm cm-push . "$HELM_REPO_NAME" --version=$CHART_VERSION
|
|
||||||
fi
|
|
||||||
|
|
||||||
# default tag based on commit
|
|
||||||
- |
|
|
||||||
if [[ "$TAG_COMMIT_ENABLE" == "true" ]]; then
|
if [[ "$TAG_COMMIT_ENABLE" == "true" ]]; then
|
||||||
helm cm-push . "$HELM_REPO_NAME" --version=$TAG_COMMIT_BASE_VERSION-$IMAGE_COMMIT_PREFIX$CI_COMMIT_SHA
|
helm cm-push . "$HELM_REPO_NAME" --version=$TAG_COMMIT_BASE_VERSION-$IMAGE_COMMIT_PREFIX$CI_COMMIT_SHA
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# add tag for reference if available
|
# publish version for git branch/tag
|
||||||
- |
|
|
||||||
if [[ "$TAG_REF_SLUG_ENABLE" == "true" ]] && [[ ! -z $DRONE_TAG ]]; then
|
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
|
# 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"}"
|
helm cm-push . "$HELM_REPO_NAME" --version="${DRONE_TAG#"v"}"
|
||||||
elif [[ "$TAG_REF_SLUG_ENABLE" == "true" ]] && [[ -z "$DRONE_PULL_REQUEST" ]] && [[ ! -z $DRONE_BRANCH ]]; then
|
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
|
helm cm-push . "$HELM_REPO_NAME" --version=$TAG_REF_SLUG_BASE_VERSION-$DRONE_BRANCH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# publish version specified in Chart.yaml
|
||||||
|
if [[ "$TAG_CHART_YAML_VERSION" == "true" ]]; then
|
||||||
|
helm cm-push . "$HELM_REPO_NAME"
|
||||||
|
fi
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user