Skip to content

Commit d305c59

Browse files
siwydk8s-ci-robot
authored andcommitted
[stable/jenkins] Provision credentials.xml, secrets files and jobs (helm#3316)
In order to allow for a more immutable deployment, this commit adds support to allow provisioning of the following: - credentials.xml - secrets files - jobs Bump version to 0.13.0.
1 parent da7d836 commit d305c59

File tree

6 files changed

+85
-1
lines changed

6 files changed

+85
-1
lines changed

stable/jenkins/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: jenkins
22
home: https://jenkins.io/
3-
version: 0.12.1
3+
version: 0.13.0
44
appVersion: 2.73
55
description: Open source continuous integration server. It supports multiple SCM tools
66
including CVS, Subversion and Git. It can execute Apache Ant and Apache Maven-based

stable/jenkins/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ The following tables lists the configurable parameters of the Jenkins chart and
5555
| `Master.Ingress.Annotations` | Ingress annotations | `{}` |
5656
| `Master.Ingress.TLS` | Ingress TLS configuration | `[]` |
5757
| `Master.InitScripts` | List of Jenkins init scripts | Not set |
58+
| `Master.CredentialsXmlSecret` | Kubernetes secret that contains a 'credentials.xml' file | Not set |
59+
| `Master.SecretsFilesSecret` | Kubernetes secret that contains 'secrets' files | Not set |
60+
| `Master.Jobs` | Jenkins XML job configs | Not set |
5861
| `Master.InstallPlugins` | List of Jenkins plugins to install | `kubernetes:0.11 workflow-aggregator:2.5 credentials-binding:1.11 git:3.2.0` |
5962
| `Master.ScriptApproval` | List of groovy functions to approve | Not set |
6063
| `Master.NodeSelector` | Node labels for pod assignment | `{}` |

stable/jenkins/templates/config.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,18 @@ data:
156156
mkdir -p /var/jenkins_home/init.groovy.d/;
157157
cp -n /var/jenkins_config/*.groovy /var/jenkins_home/init.groovy.d/
158158
{{- end }}
159+
{{- if .Values.Master.CredentialsXmlSecret }}
160+
cp -n /var/jenkins_credentials/credentials.xml /var/jenkins_home;
161+
{{- end }}
162+
{{- if .Values.Master.SecretsFilesSecret }}
163+
cp -n /var/jenkins_secrets/* /usr/share/jenkins/ref/secrets;
164+
{{- end }}
165+
{{- if .Values.Master.Jobs }}
166+
for job in $(ls /var/jenkins_jobs); do
167+
mkdir -p /var/jenkins_home/jobs/$job
168+
cp -n /var/jenkins_jobs/$job /var/jenkins_home/jobs/$job/config.xml
169+
done
170+
{{- end }}
159171
{{- range $key, $val := .Values.Master.InitScripts }}
160172
init{{ $key }}.groovy: |-
161173
{{ $val | indent 4 }}

stable/jenkins/templates/jenkins-master-deployment.yaml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,24 @@ spec:
5353
-
5454
mountPath: /var/jenkins_config
5555
name: jenkins-config
56+
{{- if .Values.Master.CredentialsXmlSecret }}
57+
-
58+
mountPath: /var/jenkins_credentials
59+
name: jenkins-credentials
60+
readOnly: true
61+
{{- end }}
62+
{{- if .Values.Master.SecretsFilesSecret }}
63+
-
64+
mountPath: /var/jenkins_secrets
65+
name: jenkins-secrets
66+
readOnly: true
67+
{{- end }}
68+
{{- if .Values.Master.Jobs }}
69+
-
70+
mountPath: /var/jenkins_jobs
71+
name: jenkins-jobs
72+
readOnly: true
73+
{{- end }}
5674
-
5775
mountPath: /usr/share/jenkins/ref/plugins/
5876
name: plugin-dir
@@ -120,6 +138,24 @@ spec:
120138
mountPath: /var/jenkins_config
121139
name: jenkins-config
122140
readOnly: true
141+
{{- if .Values.Master.CredentialsXmlSecret }}
142+
-
143+
mountPath: /var/jenkins_credentials
144+
name: jenkins-credentials
145+
readOnly: true
146+
{{- end }}
147+
{{- if .Values.Master.SecretsFilesSecret }}
148+
-
149+
mountPath: /var/jenkins_secrets
150+
name: jenkins-secrets
151+
readOnly: true
152+
{{- end }}
153+
{{- if .Values.Master.Jobs }}
154+
-
155+
mountPath: /var/jenkins_jobs
156+
name: jenkins-jobs
157+
readOnly: true
158+
{{- end }}
123159
-
124160
mountPath: /usr/share/jenkins/ref/plugins/
125161
name: plugin-dir
@@ -135,6 +171,21 @@ spec:
135171
- name: jenkins-config
136172
configMap:
137173
name: {{ template "jenkins.fullname" . }}
174+
{{- if .Values.Master.CredentialsXmlSecret }}
175+
- name: jenkins-credentials
176+
secret:
177+
secretName: {{ .Values.Master.CredentialsXmlSecret }}
178+
{{- end }}
179+
{{- if .Values.Master.SecretsFilesSecret }}
180+
- name: jenkins-secrets
181+
secret:
182+
secretName: {{ .Values.Master.SecretsFilesSecret }}
183+
{{- end }}
184+
{{- if .Values.Master.Jobs }}
185+
- name: jenkins-jobs
186+
configMap:
187+
name: {{ template "jenkins.fullname" . }}-jobs
188+
{{- end }}
138189
- name: plugin-dir
139190
emptyDir: {}
140191
- name: secrets-dir

stable/jenkins/templates/jobs.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{{- if .Values.Master.Jobs }}
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: {{ template "jenkins.fullname" . }}-jobs
6+
data:
7+
{{ .Values.Master.Jobs | indent 2 }}
8+
{{- end -}}

stable/jenkins/values.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ Master:
6464
InitScripts:
6565
# - |
6666
# print 'adding global pipeline libraries, register properties, bootstrap jobs...'
67+
# Kubernetes secret that contains a 'credentials.xml' for Jenkins
68+
# CredentialsXmlSecret: jenkins-credentials
69+
# Kubernetes secret that contains files to be put in the Jenkins 'secrets' directory,
70+
# useful to manage encryption keys used for credentials.xml for instance (such as
71+
# master.key and hudson.util.Secret)
72+
# SecretsFilesSecret: jenkins-secrets
73+
# Jenkins XML job configs to provision
74+
# Jobs: |-
75+
# test: |-
76+
# <<xml here>>
6777
CustomConfigMap: false
6878
# Node labels and tolerations for pod assignment
6979
# ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector

0 commit comments

Comments
 (0)