diff --git a/drone/HelmChart.yml b/drone/HelmChart.yml index b9bc868..90c2615 100644 --- a/drone/HelmChart.yml +++ b/drone/HelmChart.yml @@ -6,38 +6,40 @@ CHART_PATH: "./chart" commands: - - | + - &HelmChartLintCommands | cd "$CHART_PATH" helm lint . .HelmChartPublish: &HelmChartPublish name: HelmChartPublish - image: alpine/helm:3.10.0 + 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" - CHART_PATH: "./chart" - - TAG_CHART_VERSION_ENABLE: "false" - TAG_COMMIT_ENABLE: "true" + 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: - # 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 + + - &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 - - | + # 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" @@ -47,41 +49,36 @@ fi fi - # install plugin chartmuseum/helm-push - - helm plugin install https://github.com/chartmuseum/helm-push + # 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" + # register repo + helm repo add --username="$HELM_USER" --password="$HELM_PASSWORD" "$HELM_REPO_NAME" "$HELM_ENDPOINT" - # prepare package - - | cd "$CHART_PATH" + + # lint if enabled + if [[ "$HELM_LINT" == "true" ]]; then + helm lint . + fi + + # prepare package helm package . - - | - 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 - - | + # 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 - # add tag for reference if available - - | + # 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