Skip to content

Commit ab7402b

Browse files
author
Maurice Faber
authored
feat: drone job (#298)
also added gcp-key to drone env
1 parent 2216866 commit ab7402b

13 files changed

+96
-25
lines changed

bin/common.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ function hf_values() {
9090
}
9191

9292
function prepare_crypt() {
93-
[[ -z "$GCLOUD_SERVICE_KEY" ]] && err "The GCLOUD_SERVICE_KEY environment variable is not set" && exit 2
93+
[ -n "$GOOGLE_APPLICATION_CREDENTIALS" ] && return 0
94+
[ -z "$GCLOUD_SERVICE_KEY" ] && err "The GCLOUD_SERVICE_KEY environment variable is not set" && exit 2
9495
GOOGLE_APPLICATION_CREDENTIALS="/tmp/key.json"
9596
echo $GCLOUD_SERVICE_KEY >$GOOGLE_APPLICATION_CREDENTIALS
9697
export GOOGLE_APPLICATION_CREDENTIALS

charts/drone/templates/deployment-agent.yaml

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ spec:
6262
secretKeyRef:
6363
name: {{ template "drone.fullname" . }}
6464
key: secret
65+
- name: DRONE_RUNNER_ENV_FILE
66+
value: /etc/drone/env
6567
- name: DRONE_NAMESPACE_DEFAULT
6668
value: {{ .Values.kubernetes.namespace }}
6769
{{- range $key, $value := .Values.kubernetes.env }}
@@ -76,13 +78,18 @@ spec:
7678
volumeMounts:
7779
- mountPath: /var/run/docker.sock
7880
name: docker-socket
81+
- name: envfile
82+
mountPath: /etc/drone
7983
{{- with .Values.kubernetes.volumeMounts }}
8084
{{- toYaml . | nindent 10 }}
8185
{{- end }}
8286
volumes:
8387
- name: docker-socket
8488
hostPath:
8589
path: /var/run/docker.sock
90+
- name: envfile
91+
secret:
92+
secretName: {{ template "drone.fullname" . }}-envfile
8693
{{- else }}
8794
{{- with .Values.kubernetes.volumeMounts }}
8895
volumeMounts:
@@ -98,12 +105,12 @@ spec:
98105
args: {{ .Values.dind.args }}
99106
{{ end }}
100107
env:
101-
- name: DOCKER_DRIVER
102-
value: {{ .Values.dind.driver }}
103-
{{ range $key, $value := .Values.dind.env }}
104-
- name: {{ $key }}
105-
value: {{ $value | quote }}
106-
{{ end }}
108+
- name: DOCKER_DRIVER
109+
value: {{ .Values.dind.driver }}
110+
{{ range $key, $value := .Values.dind.env }}
111+
- name: {{ $key }}
112+
value: {{ $value | quote }}
113+
{{ end }}
107114
securityContext:
108115
privileged: true
109116
resources:
@@ -115,9 +122,9 @@ spec:
115122
{{- toYaml . | nindent 10 }}
116123
{{- end }}
117124
volumes:
118-
- name: docker-graph-storage
119-
emptyDir: {}
125+
- name: docker-graph-storage
126+
emptyDir: {}
120127
{{- end }}
121-
{{- with .Values.kubernetes.volumes }}
128+
{{- with .Values.kubernetes.volumes }}
122129
{{- toYaml . | nindent 6 }}
123-
{{- end }}
130+
{{- end }}

charts/drone/templates/deployment-server.yaml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,6 @@ spec:
6969
value: {{ template "drone.fullname" . }}.{{ template "drone.namespace" . }}:{{ .Values.service.httpPort }}
7070
- name: DRONE_SERVER_PROTO
7171
value: {{ .Values.server.protocol }}
72-
{{- if .Values.server.adminUser }}
73-
- name: DRONE_USER_CREATE
74-
value: username:{{ .Values.server.adminUser }},machine:false,admin:true
75-
{{- end }}
7672
- name: DRONE_RPC_SECRET
7773
valueFrom:
7874
secretKeyRef:
@@ -87,6 +83,13 @@ spec:
8783
key: {{ . | quote }}
8884
{{- end }}
8985
{{- end }}
86+
{{- if .Values.server.adminUser }}
87+
- name: DRONE_USER_CREATE
88+
valueFrom:
89+
secretKeyRef:
90+
name: {{ template "drone.fullname" . }}-envfile
91+
key: DRONE_USER_CREATE
92+
{{- end }}
9093
{{- range $key, $value := .Values.server.env }}
9194
- name: {{ $key }}
9295
value: {{ $value | quote }}

charts/drone/templates/secrets.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
apiVersion: v1
22
kind: Secret
3+
metadata:
4+
name: {{ template "drone.fullname" . }}-envfile
5+
namespace: {{ template "drone.namespace" . }}
6+
labels:
7+
app: {{ template "drone.name" . }}
8+
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
9+
release: "{{ .Release.Name }}"
10+
heritage: "{{ .Release.Service }}"
11+
type: Opaque
12+
data:
13+
env: "{{ .Values.kubernetes.envFile | b64enc }}"
14+
DRONE_USER_CREATE: {{ printf "username:%s,machine:true,admin:true,token:%s" .Values.server.adminUser (.Values.server.adminToken | default (randAlphaNum 32)) | b64enc }}
15+
---
16+
apiVersion: v1
17+
kind: Secret
318
metadata:
419
name: {{ template "drone.fullname" . }}
520
namespace: {{ template "drone.namespace" . }}

charts/jobs/templates/configmap.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
apiVersion: v1
55
kind: ConfigMap
66
metadata:
7-
name: {{ $name }}
7+
name: job-{{ $name }}
88
labels: {{- include "jobs.labels" $ | nindent 4 }}
99
data: {{- toYaml $spec.env | nindent 2 }}
1010
---

charts/jobs/templates/cronjob.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ spec:
3636
envFrom:
3737
{{- if $spec.secret }}
3838
- secretRef:
39-
name: {{ $name }}
39+
name: job-{{ $name }}
4040
{{- end }}
4141
{{- if $spec.env }}
4242
- configMapRef:
43-
name: {{ $name }}
43+
name: job-{{ $name }}
4444
{{- end }}
4545
restartPolicy: Never
4646
---

charts/jobs/templates/job.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
apiVersion: batch/v1
66
kind: Job
77
metadata:
8-
name: {{ $name }}
8+
name: job-{{ $name }}
99
labels: {{- include "jobs.labels" $ | nindent 4 }}
1010
spec:
1111
template:
@@ -38,11 +38,11 @@ spec:
3838
envFrom:
3939
{{- if $spec.secret }}
4040
- secretRef:
41-
name: {{ $name }}
41+
name: job-{{ $name }}
4242
{{- end }}
4343
{{- if $spec.env }}
4444
- configMapRef:
45-
name: {{ $name }}
45+
name: job-{{ $name }}
4646
{{- end }}
4747
volumeMounts:
4848
- name: fakeroot

charts/jobs/templates/secret.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ apiVersion: v1
66
kind: Secret
77
metadata:
88
labels: {{- include "jobs.labels" $ | nindent 4 }}
9-
name: {{ $name }}
9+
name: job-{{ $name }}
1010
data:
1111
{{- range $key, $val := $spec.secret }}
1212
{{ $key }}: "{{ $val | b64enc }}"

helmfile.d/helmfile-30.admin.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@ releases:
99
- name: drone
1010
installed: {{ $c | get "drone.enabled" true }}
1111
namespace: team-admin
12+
labels:
13+
pkg: drone
1214
<<: *default
1315
- name: drone-admit-members
1416
installed: {{ and ($c | get "drone.enabled" true) (eq ($c | get "drone.sourceControl.provider" "github") "github") }}
1517
namespace: team-admin
18+
labels:
19+
pkg: drone
1620
chart: ../charts/drone-admit-members
1721
values:
1822
- ../values/drone/drone-admit-members.gotmpl

helmfile.d/helmfile-99.post.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,8 @@ releases:
1919
- name: jobs-certs-aws
2020
installed: {{ eq $v.cluster.provider "aws" }}
2121
<<: *jobs
22+
- name: jobs-drone
23+
installed: false # {{ $c.drone.enabled }}
24+
labels:
25+
pkg: drone
26+
<<: *jobs

values-schema.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,10 @@ properties:
660660
properties:
661661
adminUser:
662662
type: string
663+
adminToken:
664+
type: string
665+
pattern: '^[0-9a-z-]{32}$'
666+
description: 32 byte token. Generate one with openssl rand -hex 16.
663667
debug:
664668
default: false
665669
type: boolean
@@ -677,6 +681,10 @@ properties:
677681
type: string
678682
orgsFilter:
679683
type: string
684+
owner:
685+
$ref: '#/definitions/idName'
686+
repo:
687+
$ref: '#/definitions/idName'
680688
repoFilter:
681689
type: string
682690
resources:

values/drone/drone.gotmpl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ server:
1717
host: {{ $host }}
1818
protocol: https
1919
adminUser: {{ $d.adminUser }}
20+
adminToken: {{ $d | get "adminToken" nil }}
2021
dind:
2122
enabled: false
2223
resources:
@@ -31,9 +32,6 @@ server:
3132
cpu: 200m
3233
{{- end }}
3334
env:
34-
CLOUD: {{ $v.cluster.provider }}
35-
CLUSTER: {{ $v.cluster.name }}
36-
GCLOUD_SERVICE_KEY: '{{ $v | get "google.kmsAccount" "" | nospace }}'
3735
DRONE_LOGS_DEBUG: {{ $debug }}
3836
DRONE_LOGS_TRACE: {{ $debug }}
3937
DRONE_LOGS_PRETTY: false
@@ -61,6 +59,9 @@ kubernetes:
6159
# DRONE_TRACE: true
6260
# DRONE_DEBUG: true
6361
DRONE_RUNNER_ENVIRON: "CLOUD:{{ $v.cluster.provider }},CLUSTER:{{ $v.cluster.name }}"
62+
envFile: |
63+
GCLOUD_SERVICE_KEY='{{ $v | get "google.kmsAccount" "" | replace "\n" "" }}'
64+
6465
persistence:
6566
enabled: true
6667
storageClass: fast

values/jobs/drone.gotmpl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{{- $v := .Environment.Values }}
2+
{{- $c := $v.charts }}
3+
{{- $d := $c | get "drone" dict }}
4+
{{- $teams := keys $v.teamConfig.teams }}
5+
{{- $teamNames := list -}}
6+
{{- range $teams -}}
7+
{{- $teamNames = print "team-" . | append $teamNames -}}
8+
{{- end -}}
9+
10+
tasks:
11+
drone:
12+
type: job
13+
enabled: true
14+
description: Configure Drone to use the right pipeline file
15+
image:
16+
repository: "otomi/tasks"
17+
tag: "drone"
18+
pullPolicy: "Always"
19+
secret:
20+
DRONE_TOKEN: {{ $d | get "adminToken" }}
21+
env:
22+
DRONE_CONFIG_PATH: env/clouds/{{ $v.cluster.provider }}/{{ $v.cluster.name }}/.drone.yml
23+
DRONE_OWNER: {{ $d | get "owner" }}
24+
DRONE_REPO: {{ $d | get "repo" }}
25+
DRONE_URL: http://drone.team-admin
26+
script: npm run tasks:drone
27+

0 commit comments

Comments
 (0)