@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.
- package/dist/bundles/catenv/index.js +45 -9
- package/dist/bundles/cli/index.js +125 -11
- package/dist/bundles/runner-images/agent-claude/Dockerfile +5 -0
- package/dist/bundles/runner-images/docker-build/Dockerfile +26 -0
- package/dist/bundles/runner-images/docker-build/scripts/ensureMeteorDockerfile +55 -0
- package/dist/bundles/runner-images/docker-build/scripts/ensureNginxDockerfile +85 -0
- package/dist/bundles/runner-images/docker-build/scripts/ensureNodeDockerfile +50 -0
- package/dist/bundles/runner-images/gcloud/Dockerfile +3 -0
- package/dist/bundles/runner-images/jobs-default/Dockerfile +22 -0
- package/dist/bundles/runner-images/jobs-meteor/Dockerfile +7 -0
- package/dist/bundles/runner-images/jobs-testing-chrome/Dockerfile +15 -0
- package/dist/bundles/runner-images/kubernetes/Dockerfile +26 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.lock +9 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.yaml +14 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/README.md +24 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mailhog-5.0.1.tgz +0 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mongodb-12.1.27.tgz +0 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/myvalues.yaml +15 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/_helpers.tpl +202 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cloudsql-proxy-credentials.yml +10 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cronjobs.yml +69 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.autoscaler.yml +19 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.yml +103 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.configmap.yml +27 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.secrets.yml +10 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.redirects.yaml +91 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.yaml +48 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.jobs.yml +70 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.service.yaml +31 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.volumes.yml +20 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.deployment.yml +104 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.service.yaml +34 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mailhog.ingress.yaml +35 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.deployment.yml +45 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.service.yml +24 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mongodb.backup.cronjob.yml +120 -0
- package/dist/bundles/runner-images/kubernetes/helm-charts/the-panter-chart/values.yaml +154 -0
- package/dist/bundles/runner-images/kubernetes/scripts/kubernetesCreateSecret +11 -0
- package/dist/bundles/runner-images/kubernetes/scripts/kubernetesDelete +5 -0
- package/dist/bundles/runner-images/kubernetes/scripts/kubernetesDeploy +57 -0
- package/dist/bundles/runner-images/kubernetes/scripts/kubernetesRollback +5 -0
- package/dist/bundles/runner-images/semantic-release/Dockerfile +24 -0
- package/dist/bundles/runner-images/semantic-release/scripts/semanticRelease +67 -0
- package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.d.ts +12 -0
- package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.js +64 -0
- package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.js.map +1 -0
- package/dist/cli/src/apps/cli/commands/project/setup/index.js +3 -0
- package/dist/cli/src/apps/cli/commands/project/setup/index.js.map +1 -1
- package/dist/cli/src/config/getProjectConfig.d.ts +6 -0
- package/dist/cli/src/config/getProjectConfig.js +10 -1
- package/dist/cli/src/config/getProjectConfig.js.map +1 -1
- package/dist/cli/src/gcloud/cloudSql/copyDb.js +6 -2
- package/dist/cli/src/gcloud/cloudSql/copyDb.js.map +1 -1
- package/dist/pipeline/src/constants.js +1 -1
- package/dist/pipeline/src/context/index.d.ts +1 -0
- package/dist/pipeline/src/context/index.js +1 -0
- package/dist/pipeline/src/context/index.js.map +1 -1
- package/dist/pipeline/src/customImages/shippedImages.js +3 -1
- package/dist/pipeline/src/customImages/shippedImages.js.map +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/schedules.js +18 -3
- package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/schedules.js.map +1 -1
- package/dist/pipeline/src/deploy/types/googleCloudRun.d.ts +5 -1
- package/dist/pipeline/src/store/index.d.ts +4 -0
- package/dist/pipeline/src/store/index.js +12 -3
- package/dist/pipeline/src/store/index.js.map +1 -1
- package/dist/runner-images/agent-claude/Dockerfile +5 -0
- package/dist/runner-images/docker-build/Dockerfile +26 -0
- package/dist/runner-images/docker-build/scripts/ensureMeteorDockerfile +55 -0
- package/dist/runner-images/docker-build/scripts/ensureNginxDockerfile +85 -0
- package/dist/runner-images/docker-build/scripts/ensureNodeDockerfile +50 -0
- package/dist/runner-images/gcloud/Dockerfile +3 -0
- package/dist/runner-images/jobs-default/Dockerfile +22 -0
- package/dist/runner-images/jobs-meteor/Dockerfile +7 -0
- package/dist/runner-images/jobs-testing-chrome/Dockerfile +15 -0
- package/dist/runner-images/kubernetes/Dockerfile +26 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.lock +9 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/Chart.yaml +14 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/README.md +24 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mailhog-5.0.1.tgz +0 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/charts/mongodb-12.1.27.tgz +0 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/myvalues.yaml +15 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/_helpers.tpl +202 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cloudsql-proxy-credentials.yml +10 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.cronjobs.yml +69 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.autoscaler.yml +19 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.deployment.yml +103 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.configmap.yml +27 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.env.secrets.yml +10 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.redirects.yaml +91 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.ingress.yaml +48 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.jobs.yml +70 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.service.yaml +31 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.volumes.yml +20 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.deployment.yml +104 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/app.worker.service.yaml +34 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mailhog.ingress.yaml +35 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.deployment.yml +45 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/maintenance.service.yml +24 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/templates/mongodb.backup.cronjob.yml +120 -0
- package/dist/runner-images/kubernetes/helm-charts/the-panter-chart/values.yaml +154 -0
- package/dist/runner-images/kubernetes/scripts/kubernetesCreateSecret +11 -0
- package/dist/runner-images/kubernetes/scripts/kubernetesDelete +5 -0
- package/dist/runner-images/kubernetes/scripts/kubernetesDeploy +57 -0
- package/dist/runner-images/kubernetes/scripts/kubernetesRollback +5 -0
- package/dist/runner-images/semantic-release/Dockerfile +24 -0
- package/dist/runner-images/semantic-release/scripts/semanticRelease +67 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.ts +61 -0
- package/src/apps/cli/commands/project/setup/index.ts +3 -0
- package/src/config/getProjectConfig.ts +9 -0
- 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,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,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
|