-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelm-package.yml
More file actions
99 lines (95 loc) · 3.38 KB
/
helm-package.yml
File metadata and controls
99 lines (95 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
spec:
inputs:
stage:
default: deploy
image:
default: debian:bookworm-slim
type: string
release_name:
type: string
chart:
type: string
repo:
type: string
default: none
helm_extra_args:
type: string
default: --atomic --wait
values_file:
type: string
default: none
as_job:
type: string
default: HELM:install
rules:
type: array
default:
# Add the job to merge request pipelines if there's an open merge request.
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: manual
# Don't add it to a *branch* pipeline if it's already in a merge request pipeline.
- if: $CI_OPEN_MERGE_REQUESTS
when: never
# Add the job to main branch pipelines.
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
---
include:
- local: .gitlab/ci/snippets.yml
publish-helm-chart:
image:
name: alpine/helm
entrypoint: [""]
stage: build
variables:
CHART_CHANNEL: stable
CHARTS_CONTEXT: charts
CHART_VERSION: 0.1.1
script:
# Package
- helm package --app-version $CI_COMMIT_SHORT_SHA --version $CHART_VERSION $CHARTS_CONTEXT
# Push via Helm
# - helm repo add --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_PROJECT_NAME ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/$CHART_CHANNEL
# - helm cm-push $CI_PROJECT_NAME-$CHART_VERSION.tgz $CI_PROJECT_NAME
# Push via curl
- curl --request POST --user gitlab-ci-token:$CI_JOB_TOKEN --form "chart=@$CI_PROJECT_NAME-$CHART_VERSION.tgz" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/helm/api/$CHART_CHANNEL/charts"
$[[ inputs.as_job ]]:
stage: "$[[ inputs.stage ]]"
image:
name: "$[[ inputs.image ]]"
entrypoint: [""]
script:
- echo "Using image $[[ inputs.image ]] on ${CI_COMMIT_REF_NAME}@${CI_COMMIT_SHORT_SHA}"
- !reference [.snippets, debian-core-tools]
- !reference [.snippets, alpine-core-tools]
- !reference [.snippets, helm-install]
- |
# Running helm install/upgrade
HELM_EXTRA_ARGS_MERGED="$[[ inputs.helm_extra_args ]] ${HELM_EXTRA_ARGS}"
HELM_VALUES_FILE=$[[ inputs.values_file ]]
HELM_REPO=$[[ inputs.repo ]]
if [ "$HELM_REPO" != "none" ]; then
echo "Adding repo ${HELM_REPO}";
helm repo add remote "${HELM_REPO}"
helm repo update
HELM_REPO_CHART="remote/$[[ inputs.chart ]]"
else
HELM_REPO_CHART="$[[ inputs.chart ]]"
fi
if [ "$HELM_VALUES_FILE" != "none" ]; then
echo "Using values file ${HELM_VALUES_FILE}";
HELM_VALUES_ARG="--values ${HELM_VALUES_FILE}"
fi
if [[ $HELM_EXTRA_ARGS_MERGED == *"dry-run"* ]]; then
echo "NOTE: Using dry-run. Changes will NOT be applied!"
fi
echo "Using helm extra args: ${HELM_EXTRA_ARGS_MERGED:-none}"
- |
# Lint if its a local chart
if [[ "$HELM_REPO" == "none" ]] && [[ "$[[ inputs.chart ]]" != *"https://"* ]]; then
echo "Adding repo ${HELM_REPO}";
echo "Linting $[[ inputs.chart ]]"
helm lint $[[ inputs.chart ]] $HELM_VALUES_ARG
fi
- echo "helm upgrade --install $[[ inputs.release_name ]] ${HELM_REPO_CHART} $HELM_VALUES_ARG $HELM_EXTRA_ARGS_MERGED"
- helm upgrade --install $[[ inputs.release_name ]] $HELM_REPO_CHART $HELM_VALUES_ARG $HELM_EXTRA_ARGS_MERGED
rules: $[[ inputs.rules ]]