@catladder/cli 0.0.0-next-1cd29c1f → 0.0.0-next-52feb889

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/bundles/catenv/index.js +45 -9
  2. package/dist/bundles/cli/index.js +125 -11
  3. package/dist/bundles/runner-images/agent-claude/Dockerfile +5 -0
  4. package/dist/bundles/runner-images/docker-build/Dockerfile +26 -0
  5. package/dist/bundles/runner-images/docker-build/scripts/ensureMeteorDockerfile +55 -0
  6. package/dist/bundles/runner-images/docker-build/scripts/ensureNginxDockerfile +85 -0
  7. package/dist/bundles/runner-images/docker-build/scripts/ensureNodeDockerfile +50 -0
  8. package/dist/bundles/runner-images/gcloud/Dockerfile +3 -0
  9. package/dist/bundles/runner-images/jobs-default/Dockerfile +22 -0
  10. package/dist/bundles/runner-images/jobs-meteor/Dockerfile +7 -0
  11. package/dist/bundles/runner-images/jobs-testing-chrome/Dockerfile +15 -0
  12. package/dist/bundles/runner-images/kubernetes/Dockerfile +26 -0
  13. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.lock +9 -0
  14. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.yaml +14 -0
  15. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/README.md +24 -0
  16. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mailhog-5.0.1.tgz +0 -0
  17. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mongodb-12.1.27.tgz +0 -0
  18. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/myvalues.yaml +15 -0
  19. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/_helpers.tpl +202 -0
  20. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cloudsql-proxy-credentials.yml +10 -0
  21. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cronjobs.yml +69 -0
  22. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.autoscaler.yml +19 -0
  23. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.yml +103 -0
  24. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.configmap.yml +27 -0
  25. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.secrets.yml +10 -0
  26. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.redirects.yaml +91 -0
  27. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.yaml +48 -0
  28. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.jobs.yml +70 -0
  29. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.service.yaml +31 -0
  30. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.volumes.yml +20 -0
  31. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.deployment.yml +104 -0
  32. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.service.yaml +34 -0
  33. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mailhog.ingress.yaml +35 -0
  34. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.deployment.yml +45 -0
  35. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.service.yml +24 -0
  36. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mongodb.backup.cronjob.yml +120 -0
  37. package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/values.yaml +154 -0
  38. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesCreateSecret +11 -0
  39. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesDelete +5 -0
  40. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesDeploy +57 -0
  41. package/dist/bundles/runner-images/kubernetes/scripts/kubernetesRollback +5 -0
  42. package/dist/bundles/runner-images/semantic-release/Dockerfile +24 -0
  43. package/dist/bundles/runner-images/semantic-release/scripts/semanticRelease +67 -0
  44. package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.d.ts +12 -0
  45. package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.js +64 -0
  46. package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.js.map +1 -0
  47. package/dist/cli/src/apps/cli/commands/project/setup/index.js +3 -0
  48. package/dist/cli/src/apps/cli/commands/project/setup/index.js.map +1 -1
  49. package/dist/cli/src/config/getProjectConfig.d.ts +6 -0
  50. package/dist/cli/src/config/getProjectConfig.js +10 -1
  51. package/dist/cli/src/config/getProjectConfig.js.map +1 -1
  52. package/dist/cli/src/gcloud/cloudSql/copyDb.js +6 -2
  53. package/dist/cli/src/gcloud/cloudSql/copyDb.js.map +1 -1
  54. package/dist/pipeline/src/constants.js +1 -1
  55. package/dist/pipeline/src/context/index.d.ts +1 -0
  56. package/dist/pipeline/src/context/index.js +1 -0
  57. package/dist/pipeline/src/context/index.js.map +1 -1
  58. package/dist/pipeline/src/customImages/shippedImages.js +3 -1
  59. package/dist/pipeline/src/customImages/shippedImages.js.map +1 -1
  60. package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/schedules.js +18 -3
  61. package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/schedules.js.map +1 -1
  62. package/dist/pipeline/src/deploy/types/googleCloudRun.d.ts +5 -1
  63. package/dist/pipeline/src/store/index.d.ts +4 -0
  64. package/dist/pipeline/src/store/index.js +12 -3
  65. package/dist/pipeline/src/store/index.js.map +1 -1
  66. package/dist/runner-images/agent-claude/Dockerfile +5 -0
  67. package/dist/runner-images/docker-build/Dockerfile +26 -0
  68. package/dist/runner-images/docker-build/scripts/ensureMeteorDockerfile +55 -0
  69. package/dist/runner-images/docker-build/scripts/ensureNginxDockerfile +85 -0
  70. package/dist/runner-images/docker-build/scripts/ensureNodeDockerfile +50 -0
  71. package/dist/runner-images/gcloud/Dockerfile +3 -0
  72. package/dist/runner-images/jobs-default/Dockerfile +22 -0
  73. package/dist/runner-images/jobs-meteor/Dockerfile +7 -0
  74. package/dist/runner-images/jobs-testing-chrome/Dockerfile +15 -0
  75. package/dist/runner-images/kubernetes/Dockerfile +26 -0
  76. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.lock +9 -0
  77. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.yaml +14 -0
  78. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/README.md +24 -0
  79. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mailhog-5.0.1.tgz +0 -0
  80. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mongodb-12.1.27.tgz +0 -0
  81. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/myvalues.yaml +15 -0
  82. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/_helpers.tpl +202 -0
  83. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cloudsql-proxy-credentials.yml +10 -0
  84. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cronjobs.yml +69 -0
  85. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.autoscaler.yml +19 -0
  86. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.yml +103 -0
  87. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.configmap.yml +27 -0
  88. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.secrets.yml +10 -0
  89. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.redirects.yaml +91 -0
  90. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.yaml +48 -0
  91. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.jobs.yml +70 -0
  92. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.service.yaml +31 -0
  93. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.volumes.yml +20 -0
  94. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.deployment.yml +104 -0
  95. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.service.yaml +34 -0
  96. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mailhog.ingress.yaml +35 -0
  97. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.deployment.yml +45 -0
  98. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.service.yml +24 -0
  99. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mongodb.backup.cronjob.yml +120 -0
  100. package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/values.yaml +154 -0
  101. package/dist/runner-images/kubernetes/scripts/kubernetesCreateSecret +11 -0
  102. package/dist/runner-images/kubernetes/scripts/kubernetesDelete +5 -0
  103. package/dist/runner-images/kubernetes/scripts/kubernetesDeploy +57 -0
  104. package/dist/runner-images/kubernetes/scripts/kubernetesRollback +5 -0
  105. package/dist/runner-images/semantic-release/Dockerfile +24 -0
  106. package/dist/runner-images/semantic-release/scripts/semanticRelease +67 -0
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +3 -2
  109. package/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.ts +61 -0
  110. package/src/apps/cli/commands/project/setup/index.ts +3 -0
  111. package/src/config/getProjectConfig.ts +9 -0
  112. package/src/gcloud/cloudSql/copyDb.ts +7 -2
@@ -0,0 +1,120 @@
1
+ {{- if and (.Values.mongodb.enabled) (.Values.mongodb.backup.enabled) }}
2
+
3
+ apiVersion: batch/v1
4
+ kind: CronJob
5
+ metadata:
6
+ name: {{ template "fullname" . }}-mongodb-backup
7
+ labels:
8
+ app: {{ .Release.Name }}
9
+ namespace: {{ .Release.Namespace }}
10
+
11
+ spec:
12
+ schedule: {{.Values.mongodb.backup.schedule }}
13
+ jobTemplate:
14
+ spec:
15
+ template:
16
+ spec:
17
+ serviceAccountName: {{ template "fullname" . }}-mongodb-backup
18
+ restartPolicy: OnFailure
19
+ containers:
20
+ - name: backup-cron
21
+
22
+ env:
23
+ - name: M_RELEASE_NAME
24
+ value: {{ template "fullname" . }}-mongodb
25
+ - name: MONGODB_ROOT_PASSWORD
26
+ valueFrom:
27
+ secretKeyRef:
28
+ name: {{ template "fullname" $ }}-app-secrets
29
+ key: MONGODB_ROOT_PASSWORD
30
+ - name: VSC_NAME
31
+ value: {{ .Values.mongodb.backup.volumeSnapshotClass }}
32
+ image: {{ .Values.mongodb.backup.image }}
33
+ imagePullPolicy: IfNotPresent
34
+ command:
35
+ - /bin/bash
36
+ - -i
37
+ - -c
38
+ - |
39
+ set -e
40
+ echo alias M_CMD=\'mongo admin --host {{ .Values.mongodb.backup.hostToBackup }} {{- if .Values.mongodb.auth.enabled }} --authenticationDatabase admin -u root -p "\"${MONGODB_ROOT_PASSWORD}\"" {{- end }} --quiet --eval\' >> ~/.bashrc
41
+ source ~/.bashrc
42
+ echo -e "[+] Check if it is a Primary node to make it stepDown\n"
43
+ if [[ `M_CMD " db.runCommand( { isMaster: 1 } )['ismaster']"` != "false" ]]
44
+ then
45
+ echo -e "[+] Stepping Down\n"
46
+ M_CMD "rs.stepDown()"
47
+ fi
48
+ echo -e "[+] Send Slave to Freeze\n"
49
+ M_CMD "rs.freeze(99999999999)"
50
+ export E_TIME=$(date +%s)
51
+ echo -e "[+] Creating snapshot object\n"
52
+ cat <<EOF | kubectl apply -f -
53
+ apiVersion: snapshot.storage.k8s.io/v1beta1
54
+ kind: VolumeSnapshot
55
+ metadata:
56
+ name: snapshot-${M_RELEASE_NAME}-${E_TIME}
57
+ spec:
58
+ volumeSnapshotClassName: ${VSC_NAME}
59
+ source:
60
+ persistentVolumeClaimName: {{ .Values.mongodb.backup.pvcToBackup }}
61
+ EOF
62
+ echo -e "[+] Waiting for snapshot to finish\n"
63
+ while : ; do
64
+ result=$(kubectl get volumesnapshot -o custom-columns='READY:.status.readyToUse' --field-selector metadata.name=snapshot-${M_RELEASE_NAME}-${E_TIME} | grep -v READY)
65
+ [[ "${result}" == "true" ]] && break
66
+ echo "[-] still waiting for snapshot to be ready .. "
67
+ sleep 1
68
+ done
69
+ echo -e "[+] Snapshot finished, unfreeze Slave\n"
70
+ M_CMD "rs.freeze(0)"
71
+ echo -e "[+] Snapshotting finished successfully\n"
72
+ kubectl get volumesnapshots --no-headers --output=custom-columns="NAME:metadata.name,CREATED:status.creationTime" | while read name creation; do
73
+ if [[ "${name}" =~ ^snapshot-$M_RELEASE_NAME-[0-9]*$ ]] && [[ "${creation}" < "$(date --date "now 90 days ago" +%F)" ]]; then
74
+ echo "[+] Removing expired snapshot ${name} created on ${creation}"
75
+ kubectl delete volumesnapshot "${name}"
76
+ fi
77
+ done
78
+ ---
79
+
80
+ apiVersion: v1
81
+ kind: ServiceAccount
82
+ metadata:
83
+ name: {{ template "fullname" . }}-mongodb-backup
84
+ ---
85
+
86
+ apiVersion: rbac.authorization.k8s.io/v1
87
+ kind: Role
88
+ metadata:
89
+ name: {{ template "fullname" . }}-mongodb-backup
90
+ rules:
91
+ - apiGroups:
92
+ - ""
93
+ resources:
94
+ - services
95
+ verbs:
96
+ - get
97
+ - list
98
+ - watch
99
+ - apiGroups:
100
+ - "snapshot.storage.k8s.io/v1beta1"
101
+ - "snapshot.storage.k8s.io"
102
+ resources:
103
+ - "volumesnapshots"
104
+ verbs:
105
+ - "*"
106
+ ---
107
+ apiVersion: rbac.authorization.k8s.io/v1
108
+ kind: RoleBinding
109
+ metadata:
110
+ name: {{ template "fullname" . }}-mongodb-backup
111
+ roleRef:
112
+ kind: Role
113
+ name: {{ template "fullname" . }}-mongodb-backup
114
+ apiGroup: rbac.authorization.k8s.io
115
+ subjects:
116
+ - kind: ServiceAccount
117
+ name: {{ template "fullname" . }}-mongodb-backup
118
+
119
+
120
+ {{- end }}
@@ -0,0 +1,154 @@
1
+ # Default values for manulstack helm chart.
2
+ # This is a YAML-formatted file.
3
+ # Declare variables to be passed into your templates.
4
+
5
+ global:
6
+ componentName: web
7
+ ENV_SHORT: dev
8
+ BUILD_ID:
9
+ image:
10
+ repository:
11
+ name:
12
+ pullPolicy: Always
13
+ pullSecret: gitlab-registry
14
+
15
+ service:
16
+ type: ClusterIP
17
+ externalPort: 80
18
+ internalPort: 8080
19
+ additionalPorts: []
20
+
21
+ env:
22
+ public:
23
+ NODE_ENV: production
24
+ TZ: Europe/Zurich
25
+ secret: {}
26
+
27
+ ingress:
28
+ enabled: true
29
+ annotations:
30
+ kubernetes.io/ingress.class: nginx
31
+ kubernetes.io/tls-acme: "true"
32
+ nginx.ingress.kubernetes.io/affinity: cookie
33
+ nginx.ingress.kubernetes.io/affinity-mode: persistent
34
+ nginx.ingress.kubernetes.io/session-cookie-hash: sha1
35
+ nginx.ingress.kubernetes.io/session-cookie-name: route
36
+ nginx.ingress.kubernetes.io/session-cookie-path: /
37
+ tls: []
38
+
39
+ jobDefaults:
40
+ resources:
41
+ limits:
42
+ cpu: 1000m
43
+ requests:
44
+ cpu: 50m
45
+ memory: 350Mi
46
+
47
+ application:
48
+ enabled: true
49
+ replicas: 1
50
+ hostCanonical:
51
+ command:
52
+ # these requests are usually overridden by the gitlab include and values
53
+ resources:
54
+ limits:
55
+ cpu: 1000m
56
+ memory: 600Mi
57
+ requests:
58
+ cpu: 50m
59
+ memory: 150Mi
60
+ updateStrategy:
61
+ rollingUpdate:
62
+ maxSurge: 1
63
+ maxUnavailable: 0
64
+ type: RollingUpdate
65
+
66
+ worker:
67
+ enabled: false
68
+ useExclusivePool: false
69
+ service:
70
+ enabled: false
71
+ type: ClusterIP
72
+ externalPort: 80
73
+ internalPort: 8080
74
+ additionalPorts: []
75
+ livenessProbe: true
76
+ resources:
77
+ limits:
78
+ cpu: 1000m
79
+ memory: 1000Mi
80
+ requests:
81
+ cpu: 50m
82
+ memory: 350Mi
83
+ startupProbe:
84
+ httpGet:
85
+ path: /__health
86
+ port: 8080
87
+ httpHeaders:
88
+ - name: X-PAN-HEALTHCHECK
89
+ value: startup
90
+ failureThreshold: 60
91
+ timeoutSeconds: 3
92
+ periodSeconds: 5
93
+ livenessProbe:
94
+ httpGet:
95
+ path: /__health
96
+ port: 8080
97
+ httpHeaders:
98
+ - name: X-PAN-HEALTHCHECK
99
+ value: liveness
100
+ periodSeconds: 5
101
+ timeoutSeconds: 10
102
+ readinessProbe:
103
+ httpGet:
104
+ path: /__health
105
+ port: 8080
106
+ httpHeaders:
107
+ - name: X-PAN-HEALTHCHECK
108
+ value: readiness
109
+ failureThreshold: 3
110
+ timeoutSeconds: 3
111
+ periodSeconds: 5
112
+ successThreshold: 1
113
+
114
+ gitlab:
115
+ visualReviewEnabled: false
116
+ app:
117
+ env:
118
+ projectPath:
119
+ mergeRequestId:
120
+ projectId:
121
+
122
+ ## features
123
+
124
+ mongodb:
125
+ enabled: false
126
+ dbName: app
127
+ backup:
128
+ enabled: false
129
+ # see https://github.com/bitnami/charts/issues/10264#issuecomment-1181574288
130
+ livenessProbe:
131
+ enabled: false
132
+ customLivenessProbe:
133
+ exec:
134
+ command:
135
+ - sh
136
+ - -c
137
+ - mongo --port $MONGODB_PORT_NUMBER --eval "db.adminCommand('ping')"
138
+ readinessProbe:
139
+ enabled: false
140
+ customReadinessProbe:
141
+ exec:
142
+ command:
143
+ - sh
144
+ - -c
145
+ - mongo --port $MONGODB_PORT_NUMBER --eval 'db.isMaster().ismaster || db.isMaster().secondary' | grep -q 'true'
146
+
147
+ secretsFromOtherComponent: {}
148
+ mapServiceUrlToEnv: {}
149
+ cloudsql:
150
+ enabled: false
151
+
152
+ mailhog:
153
+ enabled: false
154
+ useOauth: true
@@ -0,0 +1,11 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "KUBE_NAMESPACE: '$KUBE_NAMESPACE', KUBE_DOCKER_IMAGE_PULL_SECRET: '$KUBE_DOCKER_IMAGE_PULL_SECRET'"
5
+ kubectl create secret -n "$KUBE_NAMESPACE" \
6
+ docker-registry $KUBE_DOCKER_IMAGE_PULL_SECRET \
7
+ --docker-server="$DOCKER_REGISTRY" \
8
+ --docker-username="${CI_DEPLOY_USER:-$CI_REGISTRY_USER}" \
9
+ --docker-password="${CI_DEPLOY_PASSWORD:-$CI_REGISTRY_PASSWORD}" \
10
+ --docker-email="$GITLAB_USER_EMAIL" \
11
+ -o yaml --dry-run | kubectl replace -n "$KUBE_NAMESPACE" --force -f -
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "Delete $RELEASE_NAME"
5
+ helm uninstall "$RELEASE_NAME" --namespace "$KUBE_NAMESPACE"
@@ -0,0 +1,57 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "Deploy to kubernetes"
5
+ echo "Release: $RELEASE_NAME"
6
+ echo "URL (canonical): $HOSTNAME_INTERNAL"
7
+
8
+ # this bash-brainfuck simply splits $helmArgs by newline to an array...
9
+ readarray -t helmArgsArray <<<"$HELM_ARGS"
10
+
11
+ #Log the time until selfdestruct in case of review environment
12
+ if [[ ${ENV_SHORT} == "review" ]]; then echo "NOTE - This deployment will stop itself after 2 weeks"; fi
13
+
14
+ if [[ ${ENV_SHORT} == "review" ]]; then
15
+ # auto rollback
16
+ set +e # disable fail job on error
17
+ helmStatus=$(helm status --namespace $KUBE_NAMESPACE $RELEASE_NAME 2>/dev/null | awk -F': ' -v key="STATUS" '$1==key {print $2}')
18
+ helmRevision=$(helm status --namespace $KUBE_NAMESPACE $RELEASE_NAME 2>/dev/null | awk -F': ' -v key="REVISION" '$1==key {print $2}')
19
+ if [ "$helmStatus" = "failed" ] || [ "$helmStatus" = "pending-install" ] || [ "$helmStatus" = "pending-upgrade" ]; then
20
+ # rollback
21
+ echo "helm deployment is pending or failed, rollback (only on review)..."
22
+ if [ "$helmRevision" = "1" ]; then
23
+ helm uninstall "$RELEASE_NAME" --namespace "$KUBE_NAMESPACE"
24
+ else
25
+ helm rollback "$RELEASE_NAME" --namespace "$KUBE_NAMESPACE"
26
+ fi
27
+
28
+ fi
29
+ set -e # reenable
30
+
31
+ fi
32
+
33
+ echo "doing helm upgrade"
34
+ helm upgrade --install "$RELEASE_NAME" "$HELM_GITLAB_CHART_NAME" \
35
+ --timeout="30m0s" \
36
+ --set global.appName="$KUBE_APP_NAME" \
37
+ --set global.appPrefix="$KUBE_APP_NAME_PREFIX" \
38
+ --set global.ENV_SHORT="$ENV_SHORT" \
39
+ --set global.BUILD_ID="$BUILD_INFO_ID" \
40
+ --set image.repository="$CI_REGISTRY_IMAGE" \
41
+ --set image.pullSecret="$KUBE_DOCKER_IMAGE_PULL_SECRET" \
42
+ --set image.name="$DOCKER_IMAGE_NAME" \
43
+ --set image.tag="$DOCKER_IMAGE_TAG" \
44
+ --set image.pullPolicy=IfNotPresent \
45
+ --set application.hostCanonical="$HOSTNAME_INTERNAL" \
46
+ --set mongodb.fullnameOverride=$KUBE_APP_NAME-mongodb \
47
+ --set mailhog.fullnameOverride=$KUBE_APP_NAME-mailhog \
48
+ --set gitlab.visualReviewEnabled="$GITLAB_VISUAL_REVIEW_ENABLED" \
49
+ --set gitlab.app="$CI_PROJECT_PATH_SLUG" \
50
+ --set gitlab.projectPath="$CI_PROJECT_PATH" \
51
+ --set gitlab.mergeRequestId="$CI_MERGE_REQUEST_IID" \
52
+ --set gitlab.projectId="$CI_PROJECT_ID" \
53
+ --set gitlab.env="$CI_ENVIRONMENT_SLUG" \
54
+ --set namespace="$KUBE_NAMESPACE" \
55
+ --namespace="$KUBE_NAMESPACE" \
56
+ ${helmArgsArray[@]} \
57
+ --values __all_values.yml
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "Rolling back $RELEASE_NAME"
5
+ helm rollback "$RELEASE_NAME" --namespace "$KUBE_NAMESPACE"
@@ -0,0 +1,24 @@
1
+ # build context is the root directory
2
+ FROM node:lts-alpine
3
+
4
+ RUN apk add --no-cache bash git git-lfs
5
+
6
+ RUN mkdir /packages
7
+ COPY ./cli /packages/cli
8
+
9
+ # add semantic release
10
+ RUN yarn global add \
11
+ semantic-release@^19 \
12
+ @semantic-release/commit-analyzer \
13
+ @semantic-release/release-notes-generator \
14
+ https://github.com/panter/git.git#b4037626cc583d3e9f7995ea0604b23730d0a22e \
15
+ @semantic-release/changelog \
16
+ @semantic-release/gitlab@9 \
17
+ @semantic-release/exec@6 \
18
+ /packages/cli
19
+
20
+ RUN mkdir -p /scripts
21
+ COPY ./runner-images/semantic-release/scripts/* /scripts/
22
+ RUN chmod +x /scripts/*
23
+
24
+ ENV PATH="/scripts:${PATH}"
@@ -0,0 +1,67 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # 0. check and evalaute security audit or create MR with security audit template (and exit 1)
5
+ # 1. create "@semantic-release/changelog"
6
+ # 2. commit it to git (and push)
7
+ # 3. optional: update package.json
8
+
9
+ # better branches settings: https://github.com/semantic-release/semantic-release/issues/1581
10
+
11
+ echo "doing security audit check"
12
+ catladder security audit ci-job ./ "$GL_TOKEN" "$CI_DEFAULT_BRANCH" "$CI_PROJECT_ID" "$GITLAB_USER_ID"
13
+
14
+ echo "doing semantic release"
15
+
16
+ if [ ! -e .releaserc ]; then
17
+ cat >.releaserc <<EOF
18
+ {
19
+ "plugins": [
20
+ [
21
+ "@semantic-release/commit-analyzer",
22
+ {
23
+ preset: "angular",
24
+ releaseRules: [
25
+ { breaking: true, release: "major" },
26
+ { revert: true, release: "patch" },
27
+
28
+ { type: "feat", release: "minor" },
29
+ { type: "docs", release: "patch" },
30
+ { type: "fix", release: "patch" },
31
+ { type: "perf", release: "patch" },
32
+ # always fall back to a patch release
33
+ {
34
+ header: "**",
35
+ release: "patch",
36
+ },
37
+ ],
38
+ },
39
+ ],
40
+ "@semantic-release/release-notes-generator",
41
+ "@semantic-release/changelog",
42
+ ["@semantic-release/git", {
43
+ "message": "chore(\${branch.type}): \${nextRelease.version}\n\n\${nextRelease.notes}"
44
+ }],
45
+ ["@semantic-release/gitlab", {
46
+ "gitlabUrl": "https://git.panter.ch"
47
+ }]
48
+ ],
49
+ "branches": [
50
+ "+([0-9])?(.{+([0-9]),x}).x",
51
+ "master",
52
+ "main",
53
+ "next",
54
+ "next-major",
55
+ {
56
+ "name": "beta",
57
+ "prerelease": true
58
+ },
59
+ {
60
+ "name": "alpha",
61
+ "prerelease": true
62
+ }
63
+ ],
64
+ }
65
+ EOF
66
+ fi
67
+ semantic-release