charts/pipelines-library/templates/tasks/helm-lint.yaml (32 lines of code) (raw):

{{ if .Values.pipelines.deployableResources.tasks }} apiVersion: tekton.dev/v1 kind: Task metadata: annotations: tekton.dev/categories: Code Quality tekton.dev/displayName: Helm-Lint tekton.dev/pipelines.minVersion: 0.12.1 tekton.dev/platforms: linux/amd64 name: helm-lint labels: {{- include "edp-tekton.labels" . | nindent 4 }} spec: description: >- This task validates Helm charts using `helm-lint` with configurable chart and configuration directories, supporting custom user environments and additional commands. workspaces: - description: A workspace that contains fetched git repo. name: source volumes: - name: ct-config-volume configMap: name: ct-config params: - name: BASE_IMAGE description: The base image for the task. default: quay.io/helmpack/chart-testing:v3.10.1 - name: EXTRA_COMMANDS description: Arguments to add to the helm-lint step default: "" - name: USER_HOME description: | Absolute path to the user's home directory. Set this explicitly if you are running the image as a non-root user type: string default: "/tekton/home" - name: CHART_DIR description: "Deploy templates directory for helm-lint" default: "deploy-templates" - name: CT_CONFIGS_DIR description: "ct-configs directory for helm-lint" default: "." steps: - image: $(params.BASE_IMAGE) name: helm-lint workingDir: $(workspaces.source.path) env: - name: HOME value: $(params.USER_HOME) - name: CHART_DIR value: $(params.CHART_DIR) - name: CT_CONFIGS_DIR value: $(params.CT_CONFIGS_DIR) - name: CT_CONFIGS_DIR_DEFAULT value: "ct-configs" script: | set -ex $(params.EXTRA_COMMANDS) CT_FILE_PATH="" LINTCONF_FILE_PATH="" CHART_SCHEMA_FILE_PATH="" if [ -f "${CT_CONFIGS_DIR}/ct.yaml" ]; then CT_FILE_PATH="${CT_CONFIGS_DIR}/ct.yaml" else CT_FILE_PATH="${CT_CONFIGS_DIR_DEFAULT}/ct.yaml" fi if [ -f "${CT_CONFIGS_DIR}/lintconf.yaml" ]; then LINTCONF_FILE_PATH="${CT_CONFIGS_DIR}/lintconf.yaml" else LINTCONF_FILE_PATH="${CT_CONFIGS_DIR_DEFAULT}/lintconf.yaml" fi if [ -f "${CT_CONFIGS_DIR}/chart_schema.yaml" ]; then CHART_SCHEMA_FILE_PATH="${CT_CONFIGS_DIR}/chart_schema.yaml" else CHART_SCHEMA_FILE_PATH="${CT_CONFIGS_DIR_DEFAULT}/chart_schema.yaml" fi echo "[TEKTON][INFO] Specific charts to test are located at \"${CT_FILE_PATH}\"" echo "[TEKTON][INFO] The config file for YAML linting is located at \"${LINTCONF_FILE_PATH}\"" echo "[TEKTON][INFO] The schema for chart.yml validation is located at \"${CHART_SCHEMA_FILE_PATH}\"" ct lint \ --charts ${CHART_DIR}/ \ --config ${CT_FILE_PATH} \ --lint-conf ${LINTCONF_FILE_PATH} \ --chart-yaml-schema ${CHART_SCHEMA_FILE_PATH} volumeMounts: - name: ct-config-volume mountPath: /workspace/source/ct-configs/ {{ end }}