1
0

158 Commits

Author SHA1 Message Date
f8de505ed6 fix (jenkins) Fix skip verify value in vault secret 2018-08-19 23:05:53 +02:00
af00229be0 Merge branch 'fix-views' of https://git.webhosting.rug.nl/p281392/molgenis-ops-docker-helm into deploy-test 2018-08-19 22:40:09 +02:00
e088ad8942 fix (jenkins): Move maven's user.home dir to /home/jenkins so that it gets shared between containers in the molgenis pod 2018-08-19 13:46:18 +02:00
2fae637eee feat (jenkins): Create new molgenis pod with vault container and without the secrets.
The new pod has label molgenisv2, the legacy one is still labeled molgenis so existing scripts will keep working.
2018-08-18 23:47:57 +02:00
3a720a8a85 feat (jenkins): Add vault secret 2018-08-18 23:40:57 +02:00
d5ed6e979b updated views 2018-08-18 23:18:10 +02:00
2d84fb08a8 updated views 2018-08-18 23:12:54 +02:00
44044b59aa updated views 2018-08-18 23:12:02 +02:00
acbd380a0c updated plugins 2018-08-18 22:36:05 +02:00
e54f958add fix views by reorder the views 2018-08-18 22:16:13 +02:00
764cda4064 Merge branch 'fix/npm-integration' of p281392/molgenis-ops-docker-helm into master 2018-08-18 21:34:23 +02:00
b36759fab2 updated docs and fixed npm integration 2018-08-06 21:44:00 +02:00
83e9a428d7 Merge branch 'add-npm-token' of p281392/molgenis-ops-docker-helm into master 2018-08-06 20:41:57 +02:00
1215e3edbe added alpine container 2018-08-06 20:40:51 +02:00
f19b014446 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm into add-npm-token 2018-08-06 20:39:13 +02:00
9443f9a0bb Merge branch 'add-ops-jobs' of p281392/molgenis-ops-docker-helm into master 2018-08-06 20:38:44 +02:00
c43bf50180 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-08-06 20:36:48 +02:00
d76aced730 update version 2018-08-06 20:31:10 +02:00
4fe58b496b Merge branch 'feature/add-gogs-settings' of p281392/molgenis-ops-docker-helm into master 2018-08-06 17:13:19 +02:00
7a54c88da1 Merge branch 'feat/add-saucelabs' of p281392/molgenis-ops-docker-helm into master 2018-08-06 16:55:51 +02:00
01b8893d5b updated saucelabs user 2018-08-02 22:31:57 +02:00
9c6865336f added saucelabs cred 2018-08-02 07:49:15 +02:00
59e42a3048 updated node container and removed alpine containers 2018-08-01 22:36:02 +02:00
87951be9c4 added ops jobs for building releases 2018-08-01 22:27:41 +02:00
b5128bc253 Merge branch 'add-icons' of p281392/molgenis-ops-docker-helm into master 2018-07-30 22:17:28 +02:00
592e93b40d fixed uppercase 2018-07-30 22:15:37 +02:00
a8a895248b updated icons for httpd and molgenis preview 2018-07-30 22:13:26 +02:00
65023d9f2d Merge branch 'updated-questions' of p281392/molgenis-ops-docker-helm into master 2018-07-30 21:29:28 +02:00
521c92f379 added group 2018-07-30 21:28:51 +02:00
91e38eab6b merge with blessed 2018-07-30 21:27:46 +02:00
936e1252fd added Java runtime question 2018-07-30 21:23:13 +02:00
ec42841aac Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-30 21:09:34 +02:00
c269997fd0 added MOLGENIS resources to questions 2018-07-30 21:08:40 +02:00
a0e11833d2 updated structure 2018-07-30 21:06:03 +02:00
557bcf5354 updated options 2018-07-30 21:05:16 +02:00
f35e8c62c1 updated helm cahrt 2018-07-30 20:56:28 +02:00
c10544c47e updated questions 2018-07-30 17:52:07 +02:00
e725951f04 Merge branch 'add-questions' of p281392/molgenis-ops-docker-helm into master 2018-07-30 17:32:40 +02:00
adfd742ecb add questions and updated post body 2018-07-30 17:23:58 +02:00
4b2a3a01d9 Merge branch 'fix/max-upload-size' of p281392/molgenis-ops-docker-helm into master 2018-07-30 15:35:19 +02:00
7ff04e01d3 updated proxy body size to nginx 2018-07-30 15:34:10 +02:00
05708f3885 Merge branch 'fix/max-upload-size' of p281392/molgenis-ops-docker-helm into master 2018-07-30 15:10:47 +02:00
114b0acbfa set max size to zero 2018-07-30 15:10:07 +02:00
91af7787b0 fix upload large files 2018-07-30 15:08:11 +02:00
6a77c1e688 added sonar token 2018-07-25 08:45:37 +02:00
63a99c2c00 add gogs settings 2018-07-23 22:21:11 +02:00
37de4f870f Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-20 00:29:09 +02:00
44f0962857 version bump to 0.6.5 2018-07-20 00:27:13 +02:00
5f04d3d505 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-20 00:20:07 +02:00
dcf6d3d137 make default view configurable 2018-07-20 00:14:25 +02:00
0afd014bf6 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-20 00:05:41 +02:00
e6523827e3 added keys to jobs 2018-07-20 00:04:46 +02:00
e436bd27b1 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-19 23:53:17 +02:00
4ebdf6e66a fix(views): missed curly braces 2018-07-19 23:51:58 +02:00
60be819212 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-19 23:44:33 +02:00
4482ebef4b forgot dollar sign 2018-07-19 23:42:39 +02:00
0a85053e15 fix(views): added key and index to loop through array 2018-07-19 23:40:57 +02:00
4d357aa1d5 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-19 23:30:16 +02:00
b31082c4f4 fix(views): get other key from values to create views 2018-07-19 23:27:38 +02:00
bc83a4f224 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-19 23:20:59 +02:00
7a262b88c0 bumped version to 0.6.0 (configurable views) 2018-07-19 23:20:10 +02:00
614b578ecd Merge branch 'make-views-configurable' of p281392/molgenis-ops-docker-helm into master 2018-07-19 23:18:26 +02:00
586e777f77 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm into make-views-configurable 2018-07-19 23:17:33 +02:00
ef59e83d5c Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-19 23:17:01 +02:00
3499710765 make views confiogurable 2018-07-19 23:15:28 +02:00
7bcfb04822 Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-07-19 22:53:34 +02:00
c673afe5cd feature (jenkins): Split off node pod 2018-07-19 22:51:27 +02:00
4667af0968 updated version to 0.3.0 2018-07-19 22:51:02 +02:00
0cf23a8d47 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-19 22:46:21 +02:00
2430354e98 bumped version to 0.5.0 2018-07-19 22:40:51 +02:00
4ad7d69169 Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-07-19 22:40:00 +02:00
85a46c5196 Merge branch 'version-bump-to-04.0' of p281392/molgenis-ops-docker-helm into master 2018-07-19 22:36:54 +02:00
2a0a9015df fix(jenkins): Make container working dir configurable 2018-07-19 22:35:53 +02:00
bc33f83b07 updated version to 0.4.0 2018-07-19 22:25:15 +02:00
bd004fd074 Merge branch 'add-node-container' of p281392/molgenis-ops-docker-helm into master 2018-07-19 22:08:09 +02:00
b20fcb5f7e Merge branch 'added-gogs' of p281392/molgenis-ops-docker-helm into master 2018-07-19 22:06:39 +02:00
0207ffdfa2 Add node container to Jenkins config 2018-07-19 21:48:38 +02:00
ed25e21817 added gogs webhook plugin 2018-07-19 21:24:53 +02:00
e3b2b08886 Merge branch 'added-views' of p281392/molgenis-ops-docker-helm into master 2018-07-19 20:31:40 +02:00
b2ffdb6835 renamed job for httpd docker 2018-07-19 19:18:38 +02:00
cdef5836d5 added views 2018-07-19 19:16:21 +02:00
249b15b777 Merge branch 'fix/scm-and-cred' of p281392/molgenis-ops-docker-helm into master 2018-07-19 18:54:45 +02:00
8a4b4c28aa bumped version of app and chart 2018-07-19 18:53:51 +02:00
9103f8ba30 fix issues with scm urls and credentials 2018-07-19 12:37:11 +02:00
e7d364d2de Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-07-16 13:41:30 +02:00
e72703003f chore (molgenis-jenkins) update version 0.3.0 -> 0.3.1 2018-07-16 12:58:06 +02:00
5596956b98 doc (molgenis-jenkins): update rancher port number 7443 -> 7777 2018-07-16 12:58:06 +02:00
90de173cc4 fix (molgenis-jenkins): Github -> GitHub 2018-07-16 12:58:06 +02:00
2306bcb908 feature (molgenis-jenkins): Add molgenis-it pod template 2018-07-16 12:57:59 +02:00
f7b4d0d581 Merge branch 'feature/molgenis-preview' of p281392/molgenis-ops-docker-helm into master 2018-07-15 12:37:58 +02:00
47056dea3a add MOLGENIS preview 2018-07-14 13:13:23 +02:00
24220fd982 Merge branch 'add-github-delegation' of p281392/molgenis-ops-docker-helm into master 2018-07-04 12:41:08 +02:00
e42be9dd2e Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-07-04 12:27:58 +02:00
d8324a937c update keys in config.tpl according to values.yml 2018-07-04 00:04:13 +02:00
79832a74cb updated docker description 2018-07-03 23:58:50 +02:00
606716abfa merge with master 2018-07-03 23:48:28 +02:00
10557d2d8f feature(github): delegation to github for user management 2018-07-03 23:44:36 +02:00
79b862d548 Merge branch 'add-docker-hub-cred' of p281392/molgenis-ops-docker-helm into master 2018-07-02 22:27:26 +02:00
238da8b22b changed name because of weird policy dockerhub 2018-07-02 20:23:09 +02:00
800d7a934c add docker hub credentials 2018-07-02 20:13:01 +02:00
b291f5450e add nexus password environment 2018-07-02 14:10:58 +02:00
e172d52f1a Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-07-02 12:41:42 +02:00
eae999a575 Request resources for the maven container to prevent overly many concurrent builds. 2018-07-02 12:34:37 +02:00
714302fde9 Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-07-02 11:53:48 +02:00
b58575be5d Forget about the integration test containers for now. 2018-07-02 11:49:08 +02:00
4fd527d024 Merge branch 'add-nexus-secret' of p281392/molgenis-ops-docker-helm into master 2018-07-02 08:40:10 +02:00
4a3b7784c5 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm into add-nexus-secret 2018-07-01 22:13:47 +02:00
fcee8f3368 Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-07-01 20:47:57 +02:00
9711660fc4 containerPort alone is enough, hostPort makes it exposed on the host node 2018-07-01 00:32:47 +02:00
4cfb7d9d26 Fix nexus yarn/npm config. 2018-06-30 21:26:19 +02:00
00a2032aea Add operations jobs 2018-06-30 17:14:20 +02:00
a5695a02d6 Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-06-30 00:22:31 +02:00
de4b3f126b Merge branch 'add-gogs-secrete' of p281392/molgenis-ops-docker-helm into master 2018-06-29 23:54:58 +02:00
547c3e2090 updated naming 2018-06-29 23:48:31 +02:00
52c64e6d29 Fine tune the jenkins config 2018-06-29 23:44:50 +02:00
633863e7f7 Fix cat and tty 2018-06-29 23:37:47 +02:00
62114aecc4 Increase container cap 2018-06-29 23:31:08 +02:00
28efad8cb8 add gogs secrets 2018-06-29 23:30:38 +02:00
22a53eca6d added jenkins secret 2018-06-29 23:02:57 +02:00
805b248a19 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm 2018-06-29 22:50:01 +02:00
840eedc5b9 update nexus docs 2018-06-29 22:21:45 +02:00
851bc64e50 Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-06-29 22:12:02 +02:00
8919984691 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm 2018-06-29 21:57:46 +02:00
eea9db7664 reset httpdservice won't work without it 2018-06-29 21:57:28 +02:00
47f5e8d1f1 Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-06-29 21:42:57 +02:00
e91ea8d22f Update values.yaml 2018-06-29 19:35:11 +02:00
f32c2e0d52 Add postgres image 2018-06-29 15:24:51 +02:00
687a1817f9 rename pod and don't namespace the label 2018-06-29 15:21:00 +02:00
28ef3d0252 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm 2018-06-29 15:10:19 +02:00
9208f4daaa enable TTY 2018-06-29 15:09:28 +02:00
21bd807b3d Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-06-29 14:56:07 +02:00
b959ae3f99 Make ports configurable in values 2018-06-29 14:54:13 +02:00
02e397b253 Now I understand what . is, I can ditch all the variable references. 2018-06-29 14:10:14 +02:00
f1616c7ed8 Merge branch 'master' of https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm 2018-06-29 14:04:25 +02:00
d1a1a2a4c6 Revert "see if removing the other templates makes the jenkins one come up again."
This reverts commit 2876973a6a.
2018-06-29 14:04:08 +02:00
a83eb0ff4f fixed icon for nexus 2018-06-29 14:03:50 +02:00
b8cceee753 Rename GithubToken => GitHubToken 2018-06-29 12:58:45 +02:00
1d1035c51d Fix #8: Make the containers in the jenkins pod template configurable through values 2018-06-29 12:52:25 +02:00
3eec43fad5 Update README. 2018-06-29 09:53:48 +02:00
523f9194fc restructure dirs 2018-06-29 08:56:49 +02:00
22a8bdb41f Merge branch 'fix-httpd-chart' of p281392/molgenis-ops-docker-helm into master 2018-06-29 08:53:12 +02:00
73a42d9fe0 fixed title 2018-06-29 08:52:21 +02:00
473a900bc1 Merge branch 'fix-httpd-chart' of p281392/molgenis-ops-docker-helm into master 2018-06-29 08:48:53 +02:00
594d3781ab fixed chart.yml 2018-06-29 08:47:38 +02:00
b0a0029c1a Merge branch 'master' of p281392/molgenis-ops-docker-helm into master 2018-06-29 07:31:04 +02:00
c91600b4e5 move README nexus 2018-06-29 07:29:37 +02:00
2876973a6a see if removing the other templates makes the jenkins one come up again. 2018-06-29 00:26:45 +02:00
f6ba15e9f5 Switch to github-branch-source plugin. 2018-06-29 00:15:41 +02:00
3ac611e69f Fix codecov step
* Add alpine container with curl to run codecov in
* Add JENKINS_URL env var so codecov recognizes that this is jenkins ci.
2018-06-29 00:15:16 +02:00
20e72c9f5c Merge branch 'master' of P129679/molgenis-ops-docker-helm into master 2018-06-28 15:25:12 +02:00
012b58ea67 Update settings.xml value. 2018-06-28 13:09:13 +02:00
19b2ff1113 Fix settings.xml filename. 2018-06-28 12:54:23 +02:00
3f812f7f74 Fix mount point. 2018-06-28 12:17:23 +02:00
b8d061487e fix(httpd): chart.yml was brokebn 2018-06-28 12:15:41 +02:00
25b592e6fe Merge branch 'updated-httpd-chart' of p281392/molgenis-ops-docker-helm into master 2018-06-28 12:13:12 +02:00
06d1880dc4 Give proper name to file secret 2018-06-28 12:10:07 +02:00
107d503976 Fix keys in values file 2018-06-28 12:05:49 +02:00
ac1669efd2 updated httpd chart 2018-06-27 22:06:41 +02:00
53 changed files with 3743 additions and 519 deletions

View File

@ -33,29 +33,51 @@ When you want to use kubernetes there are some commands you need to know. Also r
Commands that can be used to get information from a kubernetes cluster Commands that can be used to get information from a kubernetes cluster
- ```kubectl get pods``` **Pods**
- ```kubectl get pods (optional: [--all-namspaces])```
Gets alls running instances of containers from a certain deployment Gets alls running instances of containers from a certain deployment
- ```kubectl describe pod #pod name# --namespace=#namesspace#```
Describes the pod initialization, also displays error messages more accurately if they occur
- ```kubectl remove pod #pod name# --namespace=#namespace# (optional: [--force] [--grace-period=0])```
Removes a pod from the system (but will restart if the option is set in the deployment,yaml *[see note]*).
**note:** You can not do this while the deployment of the service is still there
**Services**
- ```kubectl get services``` - ```kubectl get services```
Gets all services from a deployment Gets all services from a deployment
**Volumes**
- ```kubectl get pv``` - ```kubectl get pv```
Gets all persistant volumes Gets all persistant volumes
- ```kubectl get pvc``` - ```kubectl get pvc```
Gets all persistent volume claims Gets all persistent volume claims
**Deployments**
- ```kubectl get deployments``` - ```kubectl get deployments```
Gets all deployments (comparable with docker-compose) Gets all deployments (comparable with docker-compose)
## Remote clusters ## Remote clusters
When you want to see what is running on the clusters at the CIT you have to make a context switch. When you want to see what is running on the clusters at the CIT you have to make a context switch.
You can access the cluster with kubeconfig-files. You can obtain these by downloading them from the You can access the cluster with kubeconfig-files. You can obtain these by downloading them from the
MOLGENIS kubernetes cluster. MOLGENIS kubernetes cluster.
- Go to https://rancher.molgenis.org:7443 and login - Go to https://rancher.molgenis.org:7777 and login
- Go to Rancher --> Cluster: *#name#* --> *Kubeconfig File* - Go to Rancher --> Cluster: *#name#* --> *Kubeconfig File*
- Go to a **Terminal** where ```kubectl``` is available - Go to a **Terminal** where ```kubectl``` is available
- Add this configuration to ~/.kube/config (or place a new file besides this one) - Add this configuration to ~/.kube/config (or place a new file besides this one)
@ -63,7 +85,7 @@ MOLGENIS kubernetes cluster.
*Example*: *Example*:
```bash ```bash
# When you added the MOLGENIS configuration to the original configuration # When you added the MOLGENIS configuration to the original configuration
kubectl config user-context molgenis kubectl config use-context molgenis
# or when you placed the MOLGENIS configuration besides the original one # or when you placed the MOLGENIS configuration besides the original one
kubectl config use-context molgenis --kubeconfig=*full path to molgenis config* kubectl config use-context molgenis --kubeconfig=*full path to molgenis config*
@ -82,17 +104,36 @@ This repository is serves also as a catalogue for Rancher. We have serveral apps
- [Jenkins](molgenis-jenkins/README.md) - [Jenkins](molgenis-jenkins/README.md)
- [NEXUS](molgenis-nexus/README.md) - [NEXUS](molgenis-nexus/README.md)
- [HTTPD](molgenis-httpd/README.md) - [HTTPD](molgenis-httpd/README.md)
- [MOLNIGES preview](molgenis-preview/README.md)
### Useful commands ### Useful commands
You can you need to know to easily develop and deploy helm-charts
- ```helm install .``` - ```helm lint .```
To test your helm chart for code errors.
- ```helm install . --dry-run --debug```
Check if your configuration deploys on a kubernetes cluster and check the configuration
- ```helm install . #release name# --namespace #remote namespace#```
Do it in the root of the project where the Chart.yaml is located Do it in the root of the project where the Chart.yaml is located
It installs a release of a kubernetes stack. You also store this as an artifact in a kubernetes repository It installs a release of a kubernetes stack. You also store this as an artifact in a kubernetes repository
- ```helm list``` - ```helm list```
Lists all installed releases Lists all installed releases
- ```helm delete #release#a``` - ```helm delete #release#```
Performs a sort of mvn clean on your workspace. Very handy for zombie persistent volumes or claims. Performs a sort of mvn clean on your workspace. Very handy for zombie persistent volumes or claims.
- ```install tiller on remote cluster```
To install tiller on a remote cluster you need an rbac-config.yml.
```kubectl create -f rbac-config.yaml```
When you have defined the yaml you can add the tiller to the cluster by following the steps below.
```helm init --service-account tiller```

View File

@ -1,5 +0,0 @@
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: httpd
version: 0.1.2

View File

@ -1,64 +0,0 @@
categories:
- MOLGENIS
questions:
- variable: molgenisUsername
default: "molgenis"
description: "User of the application"
type: string
required: true
label: MOLGENIS username
group: "MOLGENIS Settings"
- variable: molgenisEmail
default: "admin@molgenis.org"
description: "Admin email"
type: string
required: true
label: MOLGENIS admin email
group: "MOLGENIS Settings"
- variable: persistence.enabled
default: "false"
description: "Enable persistent volume for MOLGENIS"
type: boolean
required: true
label: MOLGENIS Persistent Volume Enabled
show_subquestion_if: true
group: "MOLGENIS Settings"
subquestions:
- variable: persistence.size
default: "10Gi"
description: "Persistent Volume Size"
type: string
label: MOLGENIS Volume Size
- variable: persistence.storageClass
default: ""
description: "If undefined or null, uses the default StorageClass. Default to null"
type: storageclass
label: Default StorageClass for MOLGENIS
- variable: ingress.hosts[0].name
default: "test.molgenis.org"
description: "Hostname for your stack"
type: hostname
required: true
group: "Services and Load Balancing"
label: Hostname
- variable: httpd.hostname
default: "test.molgenis.org"
description: "Hostname for your services (comma separated, example: [hostname]:[port])"
type: string
required: false
group: "Apache configuration"
label: Hostname
- variable: httpd.proxy
default: ""
description: "Proxy for your services (comma separated, example: [service]:[port]:[path])"
type: string
required: false
group: "Apache configuration"
label: Proxy
- variable: httpd.redirect
default: ""
description: "Redirection urls for your services (comma separated, example: [redirection_url])"
type: string
required: false
group: "Apache configuration"
label: Redirection

View File

@ -0,0 +1,8 @@
apiVersion: v1
appVersion: "1.0"
description: HTTPD for MOLGENIS
name: molgenis-httpd
version: 0.1.0
sources:
- https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm.git
icon: https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm/raw/master/molgenis-httpd/catalogIcon-molgenis-httpd.svg

15
molgenis-httpd/README.md Normal file
View File

@ -0,0 +1,15 @@
# MOLGENIS - HTTPD Helm Chart
HTTPD (web)server for kubernetes to deploy on a kubernetes cluster with NFS-share
## Chart Details
This chart will deploy:
- 1 HTTPD container
## Installing the Chart
etc.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 89 KiB

View File

@ -0,0 +1,31 @@
categories:
- MOLGENIS
questions:
- variable: ingress.hosts[0].name
default: "test.molgenis.org"
description: "Hostname for your stack"
type: hostname
required: true
group: "Services and Load Balancing"
label: Hostname
- variable: httpd.hostname
default: "test.molgenis.org"
description: "Hostname for your services (comma separated, example: [hostname]:[port])"
type: string
required: false
group: "Apache configuration"
label: Hostname
- variable: httpd.proxy
default: ""
description: "Proxy for your services (comma separated, example: [service]:[port]:[path])"
type: string
required: false
group: "Apache configuration"
label: Proxy
- variable: httpd.redirect
default: ""
description: "Redirection urls for your services (comma separated, example: [redirection_url])"
type: string
required: false
group: "Apache configuration"
label: Redirection

View File

@ -24,9 +24,8 @@ spec:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }} imagePullPolicy: {{ .Values.image.pullPolicy }}
ports: ports:
- name: http - name: {{ .Values.service.name }}
containerPort: 80 containerPort: {{ .Values.service.port }}
protocol: TCP
env: env:
- name: SERVER_NAME - name: SERVER_NAME
value: "{{ .Values.httpd.hostname }}" value: "{{ .Values.httpd.hostname }}"

View File

@ -10,10 +10,9 @@ metadata:
spec: spec:
type: {{ .Values.service.type }} type: {{ .Values.service.type }}
ports: ports:
- port: {{ .Values.service.port }} - name: {{ .Values.service.name }}
targetPort: http port: {{ .Values.service.port }}
protocol: TCP
name: http
selector: selector:
app: {{ template "httpd.name" . }} app: {{ template "httpd.name" . }}
release: {{ .Release.Name }} release: {{ .Release.Name }}

View File

@ -10,6 +10,7 @@ image:
pullPolicy: Always pullPolicy: Always
service: service:
name: httpd
type: ClusterIP type: ClusterIP
port: 80 port: 80
@ -17,12 +18,9 @@ httpd:
proxy: httpd:80:/ proxy: httpd:80:/
redirect: redirect.molgenis.local redirect: redirect.molgenis.local
hostname: test.molgenis.local hostname: test.molgenis.local
volume:
username: molgenis
email: admin@molgenis.org
ingress: ingress:
enabled: false enabled: true
annotations: {} annotations: {}
# kubernetes.io/ingress.class: nginx # kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true" # kubernetes.io/tls-acme: "true"

View File

@ -1,7 +1,7 @@
name: molgenis-jenkins name: molgenis-jenkins
home: https://jenkins.io/ home: https://jenkins.io/
version: 0.2.1 version: 0.7.0
appVersion: 2.107 appVersion: 2.121
description: Molgenis installation for the jenkins chart. description: Molgenis installation for the jenkins chart.
sources: sources:
- https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm.git - https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm.git

View File

@ -1,10 +1,7 @@
# Molgenis Jenkins Helm Chart # Molgenis Jenkins Helm Chart
Jenkins master and slave cluster utilizing the Jenkins Kubernetes plugin Jenkins master and slave cluster utilizing the Jenkins Kubernetes plugin.
Wraps [the kuberenetes jenkins chart](https://github.com/kubernetes/charts/tree/master/stable/jenkins), see documentation there!
* https://wiki.jenkins-ci.org/display/JENKINS/Kubernetes+Plugin
Inspired by the awesome work of Carlos Sanchez <mailto:carlos@apache.org>
## Chart Details ## Chart Details
@ -15,223 +12,95 @@ This chart will do the following:
## Installing the Chart ## Installing the Chart
In the rancher UI, choose the molgenis-jenkins app from the catalog and deploy it. Usually, you'll be deploying this to the molgenis cluster.
In the [Rancher Catalog](https://rancher.molgenis.org:7443/g/catalog), add the latest version of this repository.
In the [molgenis cluster management page](https://rancher.molgenis.org:7443/p/c-mhkqb:project-2pf45/apps), choose the
catalog, pick the molgenis-jenkins app from the catalog and deploy it.
## Configuration ## Configuration
The following tables list the configurable parameters of the Jenkins chart and their default values. When deploying, you can paste values into the Rancher Answers to override the defaults in this chart.
You can paste these values into the Rancher Answers if you like. Array values can be added as {value, value, value}.
Array values can be added as {value, value, value}, e.g.
``` ```
jenkins.Master.InstallPlugins={kubernetes:1.8.4, workflow-aggregator:2.5, workflow-job:2.21, credentials-binding:1.16, git:3.9.1} jenkins.Master.HostName=jenkins.molgenis.org
jenkins.Master.AdminPassword=pa$$word
jenkins.Persistence.Enabled=false
jenkins.Master.InstallPlugins={kubernetes:1.8.4, workflow-aggregator:2.5, workflow-job:2.21, credentials-binding:1.16, git:3.9.1, blueocean:1.6.2, github-oauth:0.29}
jenkins.Master.Security.UseGitHub=false
## if UseGitHub=true
jenkins.Master.Security.GitHub.ClientID=id
jenkins.Master.Security.GitHub.ClientSecret=S3cr3t
## end UseGitHub=true
PipelineSecrets.Env.PGPPassphrase=literal:S3cr3t
``` ```
> Because we use jenkins as a sub-chart, you should prefix all values with `jenkins`!
### Jenkins Master You can use [all configuration values of the jenkins subchart](https://github.com/kubernetes/charts/tree/master/stable/jenkins).
| Parameter | Description | Default | > Because we use jenkins as a sub-chart, you should prefix all value keys with `jenkins`!
| --------------------------------- | ------------------------------------ | ---------------------------------------------------------------------------- |
| `nameOverride` | Override the resource name prefix | `jenkins` |
| `fullnameOverride` | Override the full resource names | `jenkins-{release-name}` (or `jenkins` if release-name is `jenkins`) |
| `Master.Name` | Jenkins master name | `jenkins-master` |
| `Master.Image` | Master image name | `jenkinsci/jenkins` |
| `Master.ImageTag` | Master image tag | `lts` |
| `Master.ImagePullPolicy` | Master image pull policy | `Always` |
| `Master.ImagePullSecret` | Master image pull secret | Not set |
| `Master.Component` | k8s selector key | `jenkins-master` |
| `Master.UseSecurity` | Use basic security | `true` |
| `Master.AdminUser` | Admin username (and password) created as a secret if useSecurity is true | `admin` |
| `Master.Cpu` | Master requested cpu | `200m` |
| `Master.Memory` | Master requested memory | `256Mi` |
| `Master.InitContainerEnv` | Environment variables for Init Container | Not set |
| `Master.ContainerEnv` | Environment variables for Jenkins Container | Not set |
| `Master.RunAsUser` | uid that jenkins runs with | `0` |
| `Master.FsGroup` | uid that will be used for persistent volume | `0` |
| `Master.ServiceAnnotations` | Service annotations | `{}` |
| `Master.ServiceType` | k8s service type | `LoadBalancer` |
| `Master.ServicePort` | k8s service port | `8080` |
| `Master.NodePort` | k8s node port | Not set |
| `Master.HealthProbes` | Enable k8s liveness and readiness probes | `true` |
| `Master.HealthProbesLivenessTimeout` | Set the timeout for the liveness probe | `120` |
| `Master.HealthProbesReadinessTimeout` | Set the timeout for the readiness probe | `60` |
| `Master.HealthProbeLivenessFailureThreshold` | Set the failure threshold for the liveness probe | `12` |
| `Master.ContainerPort` | Master listening port | `8080` |
| `Master.SlaveListenerPort` | Listening port for agents | `50000` |
| `Master.DisabledAgentProtocols` | Disabled agent protocols | `JNLP-connect JNLP2-connect` |
| `Master.CSRF.DefaultCrumbIssuer.Enabled` | Enable the default CSRF Crumb issuer | `true` |
| `Master.CSRF.DefaultCrumbIssuer.ProxyCompatability` | Enable proxy compatibility | `true` |
| `Master.CLI` | Enable CLI over remoting | `false` |
| `Master.LoadBalancerSourceRanges` | Allowed inbound IP addresses | `0.0.0.0/0` |
| `Master.LoadBalancerIP` | Optional fixed external IP | Not set |
| `Master.JMXPort` | Open a port, for JMX stats | Not set |
| `Master.CustomConfigMap` | Use a custom ConfigMap | `false` |
| `Master.Ingress.Annotations` | Ingress annotations | `{}` |
| `Master.Ingress.TLS` | Ingress TLS configuration | `[]` |
| `Master.InitScripts` | List of Jenkins init scripts | Not set |
| `Master.CredentialsXmlSecret` | Kubernetes secret that contains a 'credentials.xml' file | Not set |
| `Master.SecretsFilesSecret` | Kubernetes secret that contains 'secrets' files | Not set |
| `Master.Jobs` | Jenkins XML job configs | Not set |
| `Master.InstallPlugins` | List of Jenkins plugins to install | `kubernetes:0.11 workflow-aggregator:2.5 credentials-binding:1.11 git:3.2.0` |
| `Master.ScriptApproval` | List of groovy functions to approve | Not set |
| `Master.NodeSelector` | Node labels for pod assignment | `{}` |
| `Master.Affinity` | Affinity settings | `{}` |
| `Master.Tolerations` | Toleration labels for pod assignment | `{}` |
| `NetworkPolicy.Enabled` | Enable creation of NetworkPolicy resources. | `false` |
| `NetworkPolicy.ApiVersion` | NetworkPolicy ApiVersion | `extensions/v1beta1` |
| `rbac.install` | Create service account and ClusterRoleBinding for Kubernetes plugin | `false` |
| `rbac.apiVersion` | RBAC API version | `v1beta1` |
| `rbac.roleRef` | Cluster role name to bind to | `cluster-admin` |
### Jenkins Agent ### GitHub Authentication delegation
You need to setup a MOLGENIS - Jenkins GitHub OAuth App. You can do this by accessing this url: [add new OAuth app](https://github.com/settings/applications/new).
| Parameter | Description | Default | ### Additional configuration
| ----------------------- | ----------------------------------------------- | ---------------------- | There is one additional group of configuration items specific for this chart, so not prefixed with `jenkins`:
| `Agent.AlwaysPullImage` | Always pull agent container image before build | `false` |
| `Agent.Enabled` | Enable Kubernetes plugin jnlp-agent podTemplate | `true` |
| `Agent.Image` | Agent image name | `jenkinsci/jnlp-slave` |
| `Agent.ImagePullSecret` | Agent image pull secret | Not set |
| `Agent.ImageTag` | Agent image tag | `2.62` |
| `Agent.Privileged` | Agent privileged container | `false` |
| `Agent.Cpu` | Agent requested cpu | `200m` |
| `Agent.Memory` | Agent requested memory | `256Mi` |
| `Agent.volumes` | Additional volumes | `nil` |
* PipelineSecrets
When deployed, the chart creates a couple of kubernetes secrets that get used by jenkins and mounted in the jenkins
build pods. The secrets, like the rest of the deployment, is namespaced so multiple instances can run beside
each other with their own secrets.
You can override the values at deploy time but otherwise also configure them
[in Rancher](https://rancher.molgenis.org:7443/p/c-mhkqb:project-2pf45/secrets) or through kubectl.
* Vault
New vault token to be used by the pods to retrieve their tokens from the vault.
| Parameter | Description | Default |
| ----------------------------------|--------------------------------------------|-----------------------------------------------|
| `PipelineSecrets.Vault.Replace` | Replace the molgenis-pipeline-vault secret |`true` |
| `PipelineSecrets.Vault.Token` | Token to log into the hashicorp vault |`xxxx` |
| `PipelineSecrets.Vault.Addr` | Address of the vault |`https:vault-operator.vault-operator.svc:8200` |
| `PipelineSecrets.Vault.skipVerify`| Skip verification of the https connection |`1` |
* Env
Environment variables stored in molgenis-pipeline-env secret, to be added as environment variables
in the slave pods.
| Parameter | Description | Default |
| -------------------------------------- | ----------------------------------------- | --------------- |
| `PipelineSecrets.Env.Replace` | Replace molgenis-pipeline-env secret | `true` |
| `PipelineSecrets.Env.PGPPassphrase` | passphrase for the pgp signing key | `literal:xxxx` |
| `PipelineSecrets.Env.CodecovToken` | token for codecov.io | `xxxx` |
| `PipelineSecrets.Env.GitHubToken` | token for GH molgenis-jenkins user | `xxxx` |
| `PipelineSecrets.Env.NexusPassword` | token for molgenis-jenkins user in NEXUS | `xxxx` |
| `PipelineSecrets.Env.DockerHubPassword`| token for molgenis user in hub.docker.com | `xxxx` |
| `PipelineSecrets.Env.SonarToken` | token for sonarcloud.io | `xxxx` |
| `PipelineSecrets.Env.NpmToken` | token for npmjs.org | `xxxx` |
| `PipelineSecrets.Env.SauceAccessKey` | token for saucelabs.com | `xxxx` |
* File
Environment variables stored in molgenis-pipeline-file secret, to be mounted as files
in the `/root/.m2` directory of the slave pods.
> The settings.xml file references the
| Parameter | Description | Default |
| -------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------- |
| `PipelineSecrets.File.Replace` | Replace molgenis-pipeline-file secret | `true` |
| `PipelineSecrets.File.PGPPrivateKeyAsc`| pgp signing key in ascii form | `-----BEGIN PGP PRIVATE KEY BLOCK-----xxxxx-----END PGP PRIVATE KEY BLOCK-----` |
| `PipelineSecrets.File.MavenSettingsXML`| Maven settings.xml file | `<settings>[...]</settings>` (see actual [values.yaml](values.yaml)) |
## Command line use
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart.
For example,
```bash ```bash
$ helm install --name my-release -f values.yaml stable/jenkins $ helm install --name jenkins -f values.yaml molgenis-jenkins
``` ```
> **Tip**: You can use the default [values.yaml](values.yaml) > **Tip**: You can use the default [values.yaml](values.yaml)
## Mounting volumes into your Agent pods
Your Jenkins Agents will run as pods, and it's possible to inject volumes where needed:
```yaml
Agent:
volumes:
- type: Secret
secretName: jenkins-mysecrets
mountPath: /var/run/secrets/jenkins-mysecrets
```
The supported volume types are: `ConfigMap`, `EmptyDir`, `HostPath`, `Nfs`, `Pod`, `Secret`. Each type supports a different set of configurable attributes, defined by [the corresponding Java class](https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes).
## NetworkPolicy
To make use of the NetworkPolicy resources created by default,
install [a networking plugin that implements the Kubernetes
NetworkPolicy spec](https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy#before-you-begin).
For Kubernetes v1.5 & v1.6, you must also turn on NetworkPolicy by setting
the DefaultDeny namespace annotation. Note: this will enforce policy for _all_ pods in the namespace:
kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}"
Install helm chart with network policy enabled:
$ helm install stable/jenkins --set NetworkPolicy.Enabled=true
## Persistence
The Jenkins image stores persistence under `/var/jenkins_home` path of the container. A dynamically managed Persistent Volume
Claim is used to keep the data across deployments, by default. This is known to work in GCE, AWS, and minikube. Alternatively,
a previously configured Persistent Volume Claim can be used.
It is possible to mount several volumes using `Persistence.volumes` and `Persistence.mounts` parameters.
### Persistence Values
| Parameter | Description | Default |
| --------------------------- | ------------------------------- | --------------- |
| `Persistence.Enabled` | Enable the use of a Jenkins PVC | `true` |
| `Persistence.ExistingClaim` | Provide the name of a PVC | `nil` |
| `Persistence.AccessMode` | The PVC access mode | `ReadWriteOnce` |
| `Persistence.Size` | The size of the PVC | `8Gi` |
| `Persistence.volumes` | Additional volumes | `nil` |
| `Persistence.mounts` | Additional mounts | `nil` |
#### Existing PersistentVolumeClaim
1. Create the PersistentVolume
1. Create the PersistentVolumeClaim
1. Install the chart
```bash
$ helm install --name my-release --set Persistence.ExistingClaim=PVC_NAME stable/jenkins
```
## Custom ConfigMap
When creating a new parent chart with this chart as a dependency, the `CustomConfigMap` parameter can be used to override the default config.xml provided.
It also allows for providing additional xml configuration files that will be copied into `/var/jenkins_home`. In the parent chart's values.yaml,
set the `jenkins.Master.CustomConfigMap` value to true like so
```yaml
jenkins:
Master:
CustomConfigMap: true
```
and provide the file `templates/config.tpl` in your parent chart for your use case. You can start by copying the contents of `config.yaml` from this chart into your parent charts `templates/config.tpl` as a basis for customization. Finally, you'll need to wrap the contents of `templates/config.tpl` like so:
```yaml
{{- define "override_config_map" }}
<CONTENTS_HERE>
{{ end }}
```
## RBAC
If running upon a cluster with RBAC enabled you will need to do the following:
* `helm install stable/jenkins --set rbac.install=true`
* Create a Jenkins credential of type Kubernetes service account with service account name provided in the `helm status` output.
* Under configure Jenkins -- Update the credentials config in the cloud section to use the service account credential you created in the step above.
## Run Jenkins as non root user
The default settings of this helm chart let Jenkins run as root user with uid `0`.
Due to security reasons you may want to run Jenkins as a non root user.
Fortunately the default jenkins docker image `jenkins/jenkins` contains a user `jenkins` with uid `1000` that can be used for this purpose.
Simply use the following settings to run Jenkins as `jenkins` user with uid `1000`.
```yaml
jenkins:
Master:
RunAsUser: 1000
FsGroup: 1000
```
Docs taken from https://github.com/jenkinsci/docker/blob/master/Dockerfile:
_Jenkins is run with user `jenkins`, uid = 1000. If you bind mount a volume from the host or a data container,ensure you use the same uid_
## Running behind a forward proxy
The master pod uses an Init Container to install plugins etc. If you are behind a corporate proxy it may be useful to set `Master.InitContainerEnv` to add environment variables such as `http_proxy`, so that these can be downloaded.
Additionally, you may want to add env vars for the Jenkins container, and the JVM (`Master.JavaOpts`).
```yaml
Master:
InitContainerEnv:
- name: http_proxy
value: "http://192.168.64.1:3128"
- name: https_proxy
value: "http://192.168.64.1:3128"
- name: no_proxy
value: ""
ContainerEnv:
- name: http_proxy
value: "http://192.168.64.1:3128"
- name: https_proxy
value: "http://192.168.64.1:3128"
JavaOpts: >-
-Dhttp.proxyHost=192.168.64.1
-Dhttp.proxyPort=3128
-Dhttps.proxyHost=192.168.64.1
-Dhttps.proxyPort=3128
```

View File

@ -15,162 +15,123 @@ data:
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"> <authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
<denyAnonymousReadAccess>true</denyAnonymousReadAccess> <denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy> </authorizationStrategy>
{{- if .Values.Master.Security.UseGitHub }}
<securityRealm class="org.jenkinsci.plugins.GithubSecurityRealm">
<githubWebUri>https://github.com</githubWebUri>
<githubApiUri>https://api.github.com</githubApiUri>
<clientID>{{ .Values.Master.Security.GitHub.ClientID }}</clientID>
<clientSecret>{{ .Values.Master.Security.GitHub.ClientSecret }}</clientSecret>
<oauthScopes>read:org,user:email</oauthScopes>
</securityRealm>
{{- else }}
<securityRealm class="hudson.security.LegacySecurityRealm"/> <securityRealm class="hudson.security.LegacySecurityRealm"/>
{{- end }}
<disableRememberMe>false</disableRememberMe> <disableRememberMe>false</disableRememberMe>
<projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/> <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir> <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir>
<buildsDir>${ITEM_ROOTDIR}/builds</buildsDir> <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
<markupFormatter class="hudson.markup.EscapedMarkupFormatter"/> <markupFormatter class="hudson.markup.EscapedMarkupFormatter"/>
<jdks/> <jdks/>
<viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
<myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
<clouds> <clouds>
<org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud plugin="kubernetes@{{ template "jenkins.kubernetes-version" . }}"> <org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud plugin="kubernetes@{{ template "jenkins.kubernetes-version" . }}">
<name>kubernetes</name> <name>kubernetes</name>
<templates> <templates>
{{- if .Values.Agent.Enabled }} {{- range $podName, $pod := .Values.Pods }}
<org.csanchez.jenkins.plugins.kubernetes.PodTemplate> <org.csanchez.jenkins.plugins.kubernetes.PodTemplate>
<inheritFrom></inheritFrom> <inheritFrom>{{ $pod.InheritFrom | default "" }}</inheritFrom>
<name>default</name> <name>{{ $podName }}</name>
<instanceCap>2147483647</instanceCap> <instanceCap>2147483647</instanceCap>
<idleMinutes>0</idleMinutes> <idleMinutes>0</idleMinutes>
<label>{{ .Release.Name }}-{{ .Values.Agent.Component }}</label> <label>{{ .Label }}</label>
<nodeSelector> <nodeSelector>
{{- $local := dict "first" true }} {{- $local := dict "first" true }}
{{- range $key, $value := .Values.Agent.NodeSelector }} {{- range $key, $value := .NodeSelector }}
{{- if not $local.first }},{{- end }} {{- if not $local.first }},{{- end }}
{{- $key }}={{ $value }} {{- $key }}={{ $value }}
{{- $_ := set $local "first" false }} {{- $_ := set $local "first" false }}
{{- end }}</nodeSelector> {{- end }}</nodeSelector>
<nodeUsageMode>EXCLUSIVE</nodeUsageMode> <nodeUsageMode>{{ .NodeUsageMode }}</nodeUsageMode>
<volumes> <volumes>
{{- range $index, $volume := .Values.Agent.volumes }} {{- range $index, $volume := .volumes }}
<org.csanchez.jenkins.plugins.kubernetes.volumes.{{ $volume.type }}Volume> <org.csanchez.jenkins.plugins.kubernetes.volumes.{{ .type }}Volume>
{{- range $key, $value := $volume }}{{- if not (eq $key "type") }} {{- range $key, $value := $volume }}{{- if not (eq $key "type") }}
<{{ $key }}>{{ $value }}</{{ $key }}> <{{ $key }}>{{ $value }}</{{ $key }}>
{{- end }}{{- end }} {{- end }}{{- end }}
</org.csanchez.jenkins.plugins.kubernetes.volumes.{{ $volume.type }}Volume> </org.csanchez.jenkins.plugins.kubernetes.volumes.{{ .type }}Volume>
{{- end }} {{- end }}
</volumes> </volumes>
<containers> <containers>
{{- range $containerName, $container := .Containers }}
<org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> <org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate>
<name>jnlp</name> <name>{{ $containerName }}</name>
<image>{{ .Values.Agent.Image }}:{{ .Values.Agent.ImageTag }}</image> <image>{{ .Image }}:{{ .ImageTag | default "latest" }}</image>
{{- if .Values.Agent.Privileged }} <ports>
{{- range $index, $envVar := .Ports }}
<org.csanchez.jenkins.plugins.kubernetes.PortMapping>
<name>{{ .name }}</name>
<containerPort>{{ .containerPort }}</containerPort>
<hostPort>{{ .hostPort }}</hostPort>
</org.csanchez.jenkins.plugins.kubernetes.PortMapping>
{{- end }}
</ports>
{{- if .Privileged }}
<privileged>true</privileged> <privileged>true</privileged>
{{- else }} {{- else }}
<privileged>false</privileged> <privileged>false</privileged>
{{- end }} {{- end }}
<alwaysPullImage>{{ .Values.Agent.AlwaysPullImage }}</alwaysPullImage> {{- if .AlwaysPullImage }}
<workingDir>/home/jenkins</workingDir> <alwaysPullImage>true</alwaysPullImage>
<command></command>
<args>${computer.jnlpmac} ${computer.name}</args>
<ttyEnabled>false</ttyEnabled>
<resourceRequestCpu>{{.Values.Agent.Cpu}}</resourceRequestCpu>
<resourceRequestMemory>{{.Values.Agent.Memory}}</resourceRequestMemory>
<resourceLimitCpu>{{.Values.Agent.Cpu}}</resourceLimitCpu>
<resourceLimitMemory>{{.Values.Agent.Memory}}</resourceLimitMemory>
<envVars>
<org.csanchez.jenkins.plugins.kubernetes.ContainerEnvVar>
<key>JENKINS_URL</key>
<value>http://{{ template "jenkins.fullname" . }}:{{.Values.Master.ServicePort}}{{ default "" .Values.Master.JenkinsUriPrefix }}</value>
</org.csanchez.jenkins.plugins.kubernetes.ContainerEnvVar>
</envVars>
</org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate>
</containers>
<envVars/>
<annotations/>
{{- if .Values.Agent.ImagePullSecret }}
<imagePullSecrets>
<org.csanchez.jenkins.plugins.kubernetes.PodImagePullSecret>
<name>{{ .Values.Agent.ImagePullSecret }}</name>
</org.csanchez.jenkins.plugins.kubernetes.PodImagePullSecret>
</imagePullSecrets>
{{- else }} {{- else }}
<imagePullSecrets/> <alwaysPullImage>false</alwaysPullImage>
{{- end }} {{- end }}
<nodeProperties/> <workingDir>{{ .WorkingDir | default "" }}</workingDir>
</org.csanchez.jenkins.plugins.kubernetes.PodTemplate> <command>{{ .Command | default "" }}</command>
{{- end -}} <args>{{ .Args | default "" }}</args>
{{- if .Values.Pod.Enabled }} {{- if .TTY }}
<org.csanchez.jenkins.plugins.kubernetes.PodTemplate>
<inheritFrom></inheritFrom>
<name>{{ .Values.Pod.Label }}</name>
<instanceCap>2147483647</instanceCap>
<idleMinutes>0</idleMinutes>
<label>{{ .Values.Pod.Label }}</label>
<nodeSelector>
{{- $local := dict "first" true }}
{{- range $key, $value := .Values.Pod.NodeSelector }}
{{- if not $local.first }},{{- end }}
{{- $key }}={{ $value }}
{{- $_ := set $local "first" false }}
{{- end }}</nodeSelector>
<nodeUsageMode>NORMAL</nodeUsageMode>
<volumes>
{{- range $index, $volume := .Values.Pod.volumes }}
<org.csanchez.jenkins.plugins.kubernetes.volumes.{{ $volume.type }}Volume>
{{- range $key, $value := $volume }}{{- if not (eq $key "type") }}
<{{ $key }}>{{ $value }}</{{ $key }}>
{{- end }}{{- end }}
</org.csanchez.jenkins.plugins.kubernetes.volumes.{{ $volume.type }}Volume>
{{- end }}
</volumes>
<containers>
<org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate>
<name>{{ .Values.Pod.Label }}</name>
<image>{{ .Values.Pod.Image }}:{{ .Values.Pod.ImageTag }}</image>
{{- if .Values.Pod.Privileged }}
<privileged>true</privileged>
{{- else }}
<privileged>false</privileged>
{{- end }}
<alwaysPullImage>{{ .Values.Pod.AlwaysPullImage }}</alwaysPullImage>
<workingDir>/home/jenkins</workingDir>
<command>{{ .Values.Pod.Command }}</command>
<args>{{ .Values.Pod.Args }}</args>
{{- if .Values.Pod.TTY }}
<ttyEnabled>true</ttyEnabled> <ttyEnabled>true</ttyEnabled>
{{- else }} {{- else }}
<ttyEnabled>false</ttyEnabled> <ttyEnabled>false</ttyEnabled>
{{- end }} {{- end }}
<resourceRequestCpu>{{.Values.Pod.Cpu}}</resourceRequestCpu> <envVars>
<resourceRequestMemory>{{.Values.Pod.Memory}}</resourceRequestMemory> {{- range $index, $envVar := .EnvVars }}
<resourceLimitCpu>{{.Values.Pod.Cpu}}</resourceLimitCpu> <org.csanchez.jenkins.plugins.kubernetes.model.{{ .type }}EnvVar>
<resourceLimitMemory>{{.Values.Pod.Memory}}</resourceLimitMemory> {{- range $key, $value := $envVar }}{{- if not (eq $key "type") }}
<{{ $key }}>{{ $value }}</{{ $key }}>
{{- end }}{{- end }}
</org.csanchez.jenkins.plugins.kubernetes.model.{{ .type }}EnvVar>
{{- end }}
</envVars>
{{- if .resources }}
{{- if .resources.requests }}
<resourceRequestCpu>{{ .resources.requests.cpu | default "" }}</resourceRequestCpu>
<resourceRequestMemory>{{ .resources.requests.memory | default "" }}</resourceRequestMemory>
{{- end }}
{{- if .resources.limits }}
<resourceLimitCpu>{{ .resources.limits.cpu | default "" }}</resourceLimitCpu>
<resourceLimitMemory>{{ .resources.limits.memory | default "" }}</resourceLimitMemory>
{{- end }}
{{- end }}
</org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate> </org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate>
{{- end }}
</containers> </containers>
<envVars> <envVars>
<org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar> <org.csanchez.jenkins.plugins.kubernetes.model.KeyValueEnvVar>
<key>PGP_PASSPHRASE</key> <key>JENKINS_URL</key>
<secretName>molgenis-pipeline-env-secret</secretName> <value>http://{{ template "jenkins.fullname" $ }}:{{$.Values.Master.ServicePort}}{{ default "" $.Values.Master.JenkinsUriPrefix }}</value>
<secretKey>pgpPassphrase</secretKey> </org.csanchez.jenkins.plugins.kubernetes.model.KeyValueEnvVar>
</org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar> {{- range $index, $envVar := .EnvVars }}
<org.csanchez.jenkins.plugins.kubernetes.model.KeyValueEnvVar> <org.csanchez.jenkins.plugins.kubernetes.model.{{ .type }}EnvVar>
<key>PGP_SECRETKEY</key> {{- range $key, $value := $envVar }}{{- if not (eq $key "type") }}
<value>keyfile:/root/.m2/key.asc</value> <{{ $key }}>{{ $value }}</{{ $key }}>
</org.csanchez.jenkins.plugins.kubernetes.model.KeyValueEnvVar> {{- end }}{{- end }}
<org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar> </org.csanchez.jenkins.plugins.kubernetes.model.{{ .type }}EnvVar>
<key>SONAR_TOKEN</key> {{- end }}
<secretName>molgenis-pipeline-env-secret</secretName>
<secretKey>sonarToken</secretKey>
</org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar>
<org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar>
<key>CODECOV_TOKEN</key>
<secretName>molgenis-pipeline-env-secret</secretName>
<secretKey>codecovToken</secretKey>
</org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar>
<org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar>
<key>GITHUB_TOKEN</key>
<secretName>molgenis-pipeline-env-secret</secretName>
<secretKey>githubToken</secretKey>
</org.csanchez.jenkins.plugins.kubernetes.model.SecretEnvVar>
</envVars> </envVars>
<annotations/> <annotations/>
{{- if .Values.Pod.ImagePullSecret }} {{- if .ImagePullSecret }}
<imagePullSecrets> <imagePullSecrets>
<org.csanchez.jenkins.plugins.kubernetes.PodImagePullSecret> <org.csanchez.jenkins.plugins.kubernetes.PodImagePullSecret>
<name>{{ .Values.Pod.ImagePullSecret }}</name> <name>{{ .ImagePullSecret }}</name>
</org.csanchez.jenkins.plugins.kubernetes.PodImagePullSecret> </org.csanchez.jenkins.plugins.kubernetes.PodImagePullSecret>
</imagePullSecrets> </imagePullSecrets>
{{- else }} {{- else }}
@ -178,31 +139,58 @@ data:
{{- end }} {{- end }}
<nodeProperties/> <nodeProperties/>
</org.csanchez.jenkins.plugins.kubernetes.PodTemplate> </org.csanchez.jenkins.plugins.kubernetes.PodTemplate>
{{- end -}} {{- end }}
</templates> </templates>
<serverUrl>https://kubernetes.default</serverUrl> <serverUrl>https://kubernetes.default</serverUrl>
<skipTlsVerify>false</skipTlsVerify> <skipTlsVerify>false</skipTlsVerify>
<namespace>{{ .Release.Namespace }}</namespace> <namespace>{{ .Release.Namespace }}</namespace>
<jenkinsUrl>http://{{ template "jenkins.fullname" . }}:{{.Values.Master.ServicePort}}{{ default "" .Values.Master.JenkinsUriPrefix }}</jenkinsUrl> <jenkinsUrl>http://{{ template "jenkins.fullname" . }}:{{.Values.Master.ServicePort}}{{ default "" .Values.Master.JenkinsUriPrefix }}</jenkinsUrl>
<jenkinsTunnel>{{ template "jenkins.fullname" . }}-agent:50000</jenkinsTunnel> <jenkinsTunnel>{{ template "jenkins.fullname" . }}-agent:50000</jenkinsTunnel>
<containerCap>10</containerCap> <containerCap>50</containerCap>
<retentionTimeout>5</retentionTimeout> <retentionTimeout>5</retentionTimeout>
<connectTimeout>0</connectTimeout> <connectTimeout>0</connectTimeout>
<readTimeout>0</readTimeout> <readTimeout>0</readTimeout>
</org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud> </org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud>
</clouds> </clouds>
<quietPeriod>5</quietPeriod>
<scmCheckoutRetryCount>0</scmCheckoutRetryCount>
<views> <views>
<hudson.model.AllView> <hudson.model.AllView>
<owner class="hudson" reference="../../.."/> <owner class="hudson" reference="../../.."/>
<name>All</name> <name>all</name>
<filterExecutors>false</filterExecutors> <filterExecutors>false</filterExecutors>
<filterQueue>false</filterQueue> <filterQueue>false</filterQueue>
<properties class="hudson.model.View$PropertyList"/> <properties class="hudson.model.View$PropertyList"/>
</hudson.model.AllView> </hudson.model.AllView>
{{- range $viewName, $view := .Values.Master.Views }}
<listView>
<owner class="hudson" reference="../../.."/>
<name>{{ $viewName }}</name>
<filterExecutors>false</filterExecutors>
<filterQueue>false</filterQueue>
<properties class="hudson.model.View$PropertyList"/>
<jobNames>
<comparator class="hudson.util.CaseInsensitiveComparator" reference="../../../listView/jobNames/comparator"/>
{{- range $index, $job := $view }}
<string>{{ $job }}</string>
{{- end }}
</jobNames>
<jobFilters/>
<columns>
<hudson.views.StatusColumn/>
<hudson.views.WeatherColumn/>
<hudson.views.JobColumn/>
<hudson.views.LastSuccessColumn/>
<hudson.views.LastFailureColumn/>
<hudson.views.LastDurationColumn/>
<hudson.views.BuildButtonColumn/>
<hudson.plugins.favorite.column.FavoriteColumn plugin="favorite@2.3.2"/>
</columns>
<recurse>false</recurse>
</listView>
{{- end }}
</views> </views>
<primaryView>All</primaryView> <primaryView>{{ .Values.Master.DefaultView }}</primaryView>
<quietPeriod>5</quietPeriod>
<scmCheckoutRetryCount>0</scmCheckoutRetryCount>
<slaveAgentPort>50000</slaveAgentPort> <slaveAgentPort>50000</slaveAgentPort>
<disabledAgentProtocols> <disabledAgentProtocols>
{{- range .Values.Master.DisabledAgentProtocols }} {{- range .Values.Master.DisabledAgentProtocols }}

View File

@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
# this is the jenkins id.
name: "molgenis-jenkins-dockerhub-secret"
labels:
# so we know what type it is.
"jenkins.io/credentials-type": "usernamePassword"
annotations: {
# description - can not be a label as spaces are not allowed
"jenkins.io/credentials-description" : "user to authenticate against Docker Hub (hub.docker.com)"
}
type: Opaque
data:
username: {{ "molgenisci" | b64enc | quote }}
password: {{ .Values.PipelineSecrets.Env.DockerHubPassword | b64enc | quote }}

View File

@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
# this is the jenkins id.
name: "molgenis-jenkins-github-secret"
labels:
# so we know what type it is.
"jenkins.io/credentials-type": "usernamePassword"
annotations: {
# description - can not be a label as spaces are not allowed
"jenkins.io/credentials-description" : "oauth token for the molgenis-jenkins github user"
}
type: Opaque
data:
username: {{ "molgenis-jenkins" | b64enc | quote }}
password: {{ .Values.PipelineSecrets.Env.GitHubToken | b64enc | quote }}

View File

@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
# this is the jenkins id.
name: "molgenis-jenkins-gogs-secret"
labels:
# so we know what type it is.
"jenkins.io/credentials-type": "usernamePassword"
annotations: {
# description - can not be a label as spaces are not allowed
"jenkins.io/credentials-description" : "user to authenticate against GOGS (git.webhosting.rug.nl)"
}
type: Opaque
data:
username: {{ "p281392" | b64enc | quote }}
password: {{ .Values.PipelineSecrets.Env.GogsToken | b64enc | quote }}

View File

@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
# this is the jenkins id.
name: "molgenis-jenkins-nexus-secret"
labels:
# so we know what type it is.
"jenkins.io/credentials-type": "usernamePassword"
annotations: {
# description - can not be a label as spaces are not allowed
"jenkins.io/credentials-description" : "user to authenticate against NEXUS"
}
type: Opaque
data:
username: {{ "admin" | b64enc | quote }}
password: {{ .Values.PipelineSecrets.Env.NexusPassword | b64enc | quote }}

View File

@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
# this is the jenkins id.
name: "molgenis-jenkins-saucelabs-secret"
labels:
# so we know what type it is.
"jenkins.io/credentials-type": "usernamePassword"
annotations: {
# description - can not be a label as spaces are not allowed
"jenkins.io/credentials-description" : "user to authenticate against Saucelabs (saucelabs.com)"
}
type: Opaque
data:
username: {{ "molgenis-jenkins" | b64enc | quote }}
password: {{ .Values.PipelineSecrets.Env.SauceAccessKey | b64enc | quote }}

View File

@ -12,6 +12,7 @@ type: Opaque
data: data:
pgpPassphrase: {{ .Values.PipelineSecrets.Env.PGPPassphrase | b64enc | quote }} pgpPassphrase: {{ .Values.PipelineSecrets.Env.PGPPassphrase | b64enc | quote }}
codecovToken: {{ .Values.PipelineSecrets.Env.CodecovToken | b64enc | quote }} codecovToken: {{ .Values.PipelineSecrets.Env.CodecovToken | b64enc | quote }}
githubToken: {{ .Values.PipelineSecrets.Env.GithubToken | b64enc | quote }} githubToken: {{ .Values.PipelineSecrets.Env.GitHubToken | b64enc | quote }}
sonarToken: {{ .Values.PipelineSecrets.Env.SonarToken | b64enc | quote }} sonarToken: {{ .Values.PipelineSecrets.Env.SonarToken | b64enc | quote }}
npmToken: {{ .Values.PipelineSecrets.Env.NpmToken | b64enc | quote }}
{{- end }} {{- end }}

View File

@ -2,7 +2,7 @@
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
name: molgenis-pipeline-env-secret name: molgenis-pipeline-file-secret
labels: labels:
app: {{ template "jenkins.fullname" . }} app: {{ template "jenkins.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
@ -10,6 +10,6 @@ metadata:
heritage: "{{ .Release.Service }}" heritage: "{{ .Release.Service }}"
type: Opaque type: Opaque
data: data:
maven.xml: {{ .Values.PipelineSecrets.File.MavenSettingsXML | b64enc | quote }}
key.asc: {{ .Values.PipelineSecrets.File.PGPPrivateKeyAsc | b64enc | quote }} key.asc: {{ .Values.PipelineSecrets.File.PGPPrivateKeyAsc | b64enc | quote }}
settings.xml: {{ .Values.PipelineSecrets.File.MavenSettingsXML | b64enc | quote }}
{{- end }} {{- end }}

View File

@ -0,0 +1,16 @@
{{- if .Values.PipelineSecrets.Vault.Replace }}
apiVersion: v1
kind: Secret
metadata:
name: molgenis-pipeline-vault-secret
labels:
app: {{ template "jenkins.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
token: {{ .Values.PipelineSecrets.Vault.Token | b64enc | quote }}
addr: {{ .Values.PipelineSecrets.Vault.Addr | b64enc | quote }}
skipVerify: {{ .Values.PipelineSecrets.Vault.SkipVerify | b64enc | quote }}
{{- end }}

View File

@ -3,63 +3,358 @@ jenkins:
HostName: jenkins.molgenis.org HostName: jenkins.molgenis.org
ServiceType: ClusterIP ServiceType: ClusterIP
InstallPlugins: InstallPlugins:
- kubernetes:1.8.4 - kubernetes:1.12.3
- workflow-aggregator:2.5 - workflow-aggregator:2.5
- workflow-job:2.21 - workflow-job:2.24
- credentials-binding:1.16 - credentials-binding:1.16
- git:3.9.1 - git:3.9.1
- github-branch-source:2.3.6
- kubernetes-credentials-provider:0.9
- blueocean:1.8.2
- github-oauth:0.29
- gogs-webhook:1.0.14
Security:
UseGitHub: false
GitHub:
ClientID: ""
ClienSecret: ""
DefaultView: dev
Views:
dev:
- molgenis
ops:
- molgenis-ops-docker-httpd
- molgenis-ops-docker-maven
- molgenis-ops-docker-node
- molgenis-ops-tools
- molgenis-ops-tomcat
Jobs: |- Jobs: |-
molgenis: |- molgenis: |-
<?xml version='1.1' encoding='UTF-8'?>
<jenkins.branch.OrganizationFolder plugin="branch-api@2.0.20">
<actions/>
<description></description>
<properties>
<org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig plugin="pipeline-model-definition@1.3.1">
<dockerLabel></dockerLabel>
<registry plugin="docker-commons@1.13"/>
</org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig>
<jenkins.branch.NoTriggerOrganizationFolderProperty>
<branches>.*</branches>
</jenkins.branch.NoTriggerOrganizationFolderProperty>
</properties>
<folderViews class="jenkins.branch.OrganizationFolderViewHolder">
<owner reference="../.."/>
</folderViews>
<healthMetrics>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.5.1">
<nonRecursive>false</nonRecursive>
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
</healthMetrics>
<icon class="jenkins.branch.MetadataActionFolderIcon">
<owner class="jenkins.branch.OrganizationFolder" reference="../.."/>
</icon>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.5.1">
<pruneDeadBranches>true</pruneDeadBranches>
<daysToKeep>-1</daysToKeep>
<numToKeep>-1</numToKeep>
</orphanedItemStrategy>
<triggers>
<com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger plugin="cloudbees-folder@6.5.1">
<spec>H H * * *</spec>
<interval>86400000</interval>
</com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger>
</triggers>
<disabled>false</disabled>
<navigators>
<org.jenkinsci.plugins.github__branch__source.GitHubSCMNavigator plugin="github-branch-source@2.3.6">
<repoOwner>molgenis</repoOwner>
<credentialsId>molgenis-jenkins-github-secret</credentialsId>
<traits>
<org.jenkinsci.plugins.github__branch__source.BranchDiscoveryTrait>
<strategyId>1</strategyId>
</org.jenkinsci.plugins.github__branch__source.BranchDiscoveryTrait>
<org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
<strategyId>1</strategyId>
</org.jenkinsci.plugins.github__branch__source.OriginPullRequestDiscoveryTrait>
<org.jenkinsci.plugins.github__branch__source.ForkPullRequestDiscoveryTrait>
<strategyId>1</strategyId>
<trust class="org.jenkinsci.plugins.github_branch_source.ForkPullRequestDiscoveryTrait$TrustPermission"/>
</org.jenkinsci.plugins.github__branch__source.ForkPullRequestDiscoveryTrait>
</traits>
</org.jenkinsci.plugins.github__branch__source.GitHubSCMNavigator>
</navigators>
<projectFactories>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProjectFactory plugin="workflow-multibranch@2.19">
<scriptPath>Jenkinsfile</scriptPath>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProjectFactory>
</projectFactories>
<buildStrategies/>
</jenkins.branch.OrganizationFolder>
molgenis-ops-docker-httpd: |-
<?xml version='1.1' encoding='UTF-8'?> <?xml version='1.1' encoding='UTF-8'?>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.19"> <org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.19">
<actions/> <actions/>
<description></description> <description>HTTPD server that can be used for redirection and proxieing</description>
<properties> <displayName>molgenis-ops-docker-httpd</displayName>
<org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig plugin="pipeline-model-definition@1.3"> <properties>
<dockerLabel></dockerLabel> <org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig plugin="pipeline-model-definition@1.3.1">
<registry plugin="docker-commons@1.13"/> <dockerLabel></dockerLabel>
</org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig> <registry plugin="docker-commons@1.13"/>
</properties> </org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig>
<folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="branch-api@2.0.20"> </properties>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> <folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="branch-api@2.0.20">
</folderViews> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<healthMetrics> </folderViews>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.5.1"> <healthMetrics>
<nonRecursive>false</nonRecursive> <com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.5.1">
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric> <nonRecursive>false</nonRecursive>
</healthMetrics> </com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
<icon class="jenkins.branch.MetadataActionFolderIcon" plugin="branch-api@2.0.20"> </healthMetrics>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> <icon class="jenkins.branch.MetadataActionFolderIcon" plugin="branch-api@2.0.20">
</icon> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.5.1"> </icon>
<pruneDeadBranches>true</pruneDeadBranches> <orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.5.1">
<daysToKeep>-1</daysToKeep> <pruneDeadBranches>true</pruneDeadBranches>
<numToKeep>-1</numToKeep> <daysToKeep>-1</daysToKeep>
</orphanedItemStrategy> <numToKeep>-1</numToKeep>
<triggers/> </orphanedItemStrategy>
<disabled>false</disabled> <triggers/>
<sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@2.0.20"> <disabled>false</disabled>
<data> <sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@2.0.20">
<jenkins.branch.BranchSource> <data>
<source class="jenkins.plugins.git.GitSCMSource" plugin="git@3.9.1"> <jenkins.branch.BranchSource>
<id>a1f535cd-ab83-4d42-8993-0c3e59cf139f</id> <source class="jenkins.plugins.git.GitSCMSource" plugin="git@3.9.1">
<remote>http://github.com/molgenis/molgenis.git</remote> <id>a756941d-6c9d-4492-bcf9-327041764be6</id>
<credentialsId></credentialsId> <remote>https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-httpd.git</remote>
<traits> <credentialsId>molgenis-jenkins-gogs-secret</credentialsId>
<jenkins.plugins.git.traits.BranchDiscoveryTrait/> <traits>
</traits> <jenkins.plugins.git.traits.BranchDiscoveryTrait/>
</source> </traits>
<strategy class="jenkins.branch.DefaultBranchPropertyStrategy"> </source>
<properties class="empty-list"/> <strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
</strategy> <properties class="empty-list"/>
</jenkins.branch.BranchSource> </strategy>
</data> </jenkins.branch.BranchSource>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> </data>
</sources> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory"> </sources>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/> <factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
<scriptPath>Jenkinsfile</scriptPath> <owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</factory> <scriptPath>Jenkinsfile</scriptPath>
</factory>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
molgenis-ops-docker-node: |-
<?xml version='1.1' encoding='UTF-8'?>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.19">
<actions/>
<description>NodeJS build container with Curl</description>
<displayName>molgenis-ops-docker-node</displayName>
<properties>
<org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig plugin="pipeline-model-definition@1.3.1">
<dockerLabel></dockerLabel>
<registry plugin="docker-commons@1.13"/>
</org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig>
</properties>
<folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</folderViews>
<healthMetrics>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.5.1">
<nonRecursive>false</nonRecursive>
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
</healthMetrics>
<icon class="jenkins.branch.MetadataActionFolderIcon" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</icon>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.5.1">
<pruneDeadBranches>true</pruneDeadBranches>
<daysToKeep>-1</daysToKeep>
<numToKeep>-1</numToKeep>
</orphanedItemStrategy>
<triggers/>
<disabled>false</disabled>
<sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@2.0.20">
<data>
<jenkins.branch.BranchSource>
<source class="jenkins.plugins.git.GitSCMSource" plugin="git@3.9.1">
<id>a756941d-6c9d-4492-bcf9-327041764be6</id>
<remote>https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-node.git</remote>
<credentialsId>molgenis-jenkins-gogs-secret</credentialsId>
<traits>
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
</traits>
</source>
<strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
<properties class="empty-list"/>
</strategy>
</jenkins.branch.BranchSource>
</data>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</sources>
<factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<scriptPath>Jenkinsfile</scriptPath>
</factory>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
molgenis-ops-docker-maven: |-
<?xml version='1.1' encoding='UTF-8'?>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.19">
<actions/>
<description>MAVEN build container with RPMbuild and Curl</description>
<displayName>molgenis-ops-docker-maven</displayName>
<properties>
<org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig plugin="pipeline-model-definition@1.3.1">
<dockerLabel></dockerLabel>
<registry plugin="docker-commons@1.13"/>
</org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig>
</properties>
<folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</folderViews>
<healthMetrics>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.5.1">
<nonRecursive>false</nonRecursive>
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
</healthMetrics>
<icon class="jenkins.branch.MetadataActionFolderIcon" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</icon>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.5.1">
<pruneDeadBranches>true</pruneDeadBranches>
<daysToKeep>-1</daysToKeep>
<numToKeep>-1</numToKeep>
</orphanedItemStrategy>
<triggers/>
<disabled>false</disabled>
<sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@2.0.20">
<data>
<jenkins.branch.BranchSource>
<source class="jenkins.plugins.git.GitSCMSource" plugin="git@3.9.1">
<id>4702479a-6988-4a85-b4b7-e77fa2d05ffa</id>
<remote>https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-maven.git</remote>
<credentialsId>molgenis-jenkins-gogs-secret</credentialsId>
<traits>
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
</traits>
</source>
<strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
<properties class="empty-list"/>
</strategy>
</jenkins.branch.BranchSource>
</data>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</sources>
<factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<scriptPath>Jenkinsfile</scriptPath>
</factory>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
molgenis-ops-tomcat: |-
<?xml version='1.1' encoding='UTF-8'?>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.19">
<actions/>
<description>MOLGENIS tomcat package to manage tomcat version on CentOS</description>
<displayName>molgenis-ops-tomcat</displayName>
<properties>
<org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig plugin="pipeline-model-definition@1.3.1">
<dockerLabel></dockerLabel>
<registry plugin="docker-commons@1.13"/>
</org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig>
</properties>
<folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</folderViews>
<healthMetrics>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.5.1">
<nonRecursive>false</nonRecursive>
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
</healthMetrics>
<icon class="jenkins.branch.MetadataActionFolderIcon" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</icon>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.5.1">
<pruneDeadBranches>true</pruneDeadBranches>
<daysToKeep>-1</daysToKeep>
<numToKeep>-1</numToKeep>
</orphanedItemStrategy>
<triggers/>
<disabled>false</disabled>
<sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@2.0.20">
<data>
<jenkins.branch.BranchSource>
<source class="jenkins.plugins.git.GitSCMSource" plugin="git@3.9.1">
<id>4702479a-6988-4a85-b4b7-e77fa2d05ffa</id>
<remote>https://git.webhosting.rug.nl/molgenis/molgenis-ops-tomcat.git</remote>
<credentialsId>molgenis-jenkins-gogs-secret</credentialsId>
<traits>
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
</traits>
</source>
<strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
<properties class="empty-list"/>
</strategy>
</jenkins.branch.BranchSource>
</data>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</sources>
<factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<scriptPath>Jenkinsfile</scriptPath>
</factory>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
molgenis-ops-tools: |-
<?xml version='1.1' encoding='UTF-8'?>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.19">
<actions/>
<description>MOLGENIS operations tools-package to configure firewall, apache, sudoers, etc.</description>
<displayName>molgenis-ops-tools</displayName>
<properties>
<org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig plugin="pipeline-model-definition@1.3.1">
<dockerLabel></dockerLabel>
<registry plugin="docker-commons@1.13"/>
</org.jenkinsci.plugins.pipeline.modeldefinition.config.FolderConfig>
</properties>
<folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</folderViews>
<healthMetrics>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.5.1">
<nonRecursive>false</nonRecursive>
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
</healthMetrics>
<icon class="jenkins.branch.MetadataActionFolderIcon" plugin="branch-api@2.0.20">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</icon>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.5.1">
<pruneDeadBranches>true</pruneDeadBranches>
<daysToKeep>-1</daysToKeep>
<numToKeep>-1</numToKeep>
</orphanedItemStrategy>
<triggers/>
<disabled>false</disabled>
<sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@2.0.20">
<data>
<jenkins.branch.BranchSource>
<source class="jenkins.plugins.git.GitSCMSource" plugin="git@3.9.1">
<id>4702479a-6988-4a85-b4b7-e77fa2d05ffa</id>
<remote>https://git.webhosting.rug.nl/molgenis/molgenis-ops-tools.git</remote>
<credentialsId>molgenis-jenkins-gogs-secret</credentialsId>
<traits>
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
</traits>
</source>
<strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
<properties class="empty-list"/>
</strategy>
</jenkins.branch.BranchSource>
</data>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</sources>
<factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<scriptPath>Jenkinsfile</scriptPath>
</factory>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject> </org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
# Kubernetes secret that contains a 'credentials.xml' for Jenkins # Kubernetes secret that contains a 'credentials.xml' for Jenkins
# CredentialsXmlSecret: jenkins-credentials # CredentialsXmlSecret: jenkins-credentials
@ -70,47 +365,207 @@ jenkins:
CustomConfigMap: true CustomConfigMap: true
rbac: rbac:
install: true install: true
# A second pod template for maven builds Pods:
Pod: molgenis:
Enabled: true Label: molgenisv2
Image: "webhost12.service.rug.nl/molgenis/molgenis-maven" NodeUsageMode: EXCLUSIVE
ImageTag: latest volumes:
# ImagePullSecret: jenkins - type: HostPath
Label: "molgenis-maven" hostPath: "/var/run/docker.sock"
Privileged: false mountPath: "/var/run/docker.sock"
Cpu: "" Containers:
Memory: "" maven:
# You may want to change this to true while testing a new image Image: "registry.webhosting.rug.nl/molgenis/maven"
AlwaysPullImage: false ImageTag: lts
Command: "/bin/sh -c" AlwaysPullImage: true
Args: "cat" Command: cat
TTY: true WorkingDir: /home/jenkins
# You can define the volumes that you want to mount for this container TTY: true
# Allowed types are: ConfigMap, EmptyDir, HostPath, Nfs, Pod, Secret resources:
# Configure the attributes as they appear in the corresponding Java class for that type requests:
# https://github.com/jenkinsci/kubernetes-plugin/tree/master/src/main/java/org/csanchez/jenkins/plugins/kubernetes/volumes cpu: "1"
volumes: memory: "4Gi"
- type: HostPath EnvVars:
hostPath: "/var/run/docker.sock" - type: KeyValue
mountPath: "/var/run/docker.sock" key: MAVEN_OPTS
- type: Secret value: "-Duser.home=/home/jenkins"
secretName: molgenis-pipeline-file-secret - type: KeyValue
mountPath: "keyfile:/root/.m2" key: MAVEN_CONFIG
NodeSelector: {} value: "/home/jenkins/.m2"
# Key Value selectors. Ex: alpine:
# jenkins-agent: v1 Image: "spotify/alpine"
Command: cat
WorkingDir: /home/jenkins
TTY: true
vault:
Image: "vault"
Command: cat
WorkingDir: /home/jenkins
TTY: true
EnvVars:
- type: Secret
key: VAULT_TOKEN
secretName: molgenis-pipeline-vault-secret
secretKey: token
- type: Secret
key: VAULT_SKIP_VERIFY
secretName: molgenis-pipeline-vault-secret
secretKey: skipVerify
- type: Secret
key: VAULT_ADDR
secretName: molgenis-pipeline-vault-secret
secretKey: addr
NodeSelector: {}
molgenis-legacy:
InheritFrom: molgenis
Label: molgenis
NodeUsageMode: NORMAL
volumes:
- type: Secret
secretName: molgenis-pipeline-file-secret
mountPath: "/home/jenkins/.m2"
Containers:
EnvVars:
- type: Secret
key: PGP_PASSPHRASE
secretName: molgenis-pipeline-env-secret
secretKey: pgpPassphrase
- type: KeyValue
key: PGP_SECRETKEY
value: "keyfile:/home.jenkins/.m2/key.asc"
- type: KeyValue
key: npm_config_registry
value: "http://nexus.molgenis-nexus:8081/repository/npm-central/"
- type: Secret
key: SONAR_TOKEN
secretName: molgenis-pipeline-env-secret
secretKey: sonarToken
- type: Secret
key: CODECOV_TOKEN
secretName: molgenis-pipeline-env-secret
secretKey: codecovToken
- type: Secret
key: GITHUB_TOKEN
secretName: molgenis-pipeline-env-secret
secretKey: githubToken
NodeSelector: {}
node:
Label: node-carbon
NodeUsageMode: EXCLUSIVE
Containers:
node:
Image: "registry.webhosting.rug.nl/molgenis/node"
ImageTag: lts
AlwaysPullImage: true
Command: cat
WorkingDir: /home/jenkins
TTY: true
EnvVars:
- type: KeyValue
key: npm_config_registry
value: "http://nexus.molgenis-nexus:8081/repository/npm-central/"
- type: Secret
key: CODECOV_TOKEN
secretName: molgenis-pipeline-env-secret
secretKey: codecovToken
- type: Secret
key: GITHUB_TOKEN
secretName: molgenis-pipeline-env-secret
secretKey: githubToken
- type: Secret
key: NPM_TOKEN
secretName: molgenis-pipeline-env-secret
secretKey: npmToken
NodeSelector: {}
molgenis-it:
InheritFrom: molgenis
Label: molgenis-it
NodeUsageMode: EXCLUSIVE
Containers:
elasticsearch:
Image: docker.elastic.co/elasticsearch/elasticsearch
ImageTag: 5.5.3
resources:
requests:
cpu: "100m"
memory: "1Gi"
limits:
cpu: "1"
memory: "1500Mi"
EnvVars:
- type: KeyValue
key: ES_JAVA_OPTS
value: "-Xms512m -Xmx512m"
- type: KeyValue
key: cluster.name
value: molgenis
- type: KeyValue
key: bootstrap.memory_lock
value: "true"
- type: KeyValue
key: xpack.security.enabled
value: "false"
- type: KeyValue
key: discovery.type
value: single-node
postgres:
Image: postgres
ImageTag: 9.6-alpine
resources:
requests:
cpu: "100m"
memory: "250Mi"
limits:
cpu: "1"
memory: "250Mi"
EnvVars:
- type: KeyValue
key: POSTGRES_USER
value: molgenis
- type: KeyValue
key: POSTGRES_PASSWORD
value: molgenis
- type: KeyValue
key: POSTGRES_DB
value: molgenis
opencpu:
Image: molgenis/opencpu
AlwaysPullImage: true
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "1"
memory: "512Mi"
NodeSelector: {}
PipelineSecrets: PipelineSecrets:
Vault:
Replace: true
Token: xxxx
Addr: "https://vault-operator.vault-operator.svc:8200"
SkipVerify: 1
Env: Env:
# Set to false to keep existing secret # Set to false to keep existing secret
Replace: true Replace: true
# Passphrase for the pgp private key file # Passphrase for the pgp private key file, prefixed with literal:
pgpPassphrase: xxxx PGPPassphrase: literal:xxxx
# Token for codecov.io service # Token for codecov.io service
codecovToken: xxxx CodecovToken: xxxx
# Token for github bot account # Token for github bot account
githubToken: xxxx GitHubToken: xxxx
# Token for github bot account
GogsToken: xxxx
# Token for sonarcloud.io # Token for sonarcloud.io
sonarToken: xxxx SonarToken: xxxx
# Token for npmjs.org
NpmToken: xxxx
# Password Local NEXUS
NexusPassword: xxxx
# Password hub.docker.com
DockerHubPassword: xxxx
# Access key for saucelabs.com
SauceAccessKey: xxxx
File: File:
# Set to false to keep existing secret # Set to false to keep existing secret
Replace: true Replace: true
@ -122,28 +577,39 @@ PipelineSecrets:
# maven.settings file # maven.settings file
MavenSettingsXML: |- MavenSettingsXML: |-
<settings> <settings>
<!-- sets the local maven repository outside of the ~/.m2 folder for easier mounting of secrets and repo -->
<localRepository>${user.home}/.mvnrepository</localRepository> <localRepository>${user.home}/.mvnrepository</localRepository>
<!-- lets disable the download progress indicator that fills up logs -->
<interactiveMode>false</interactiveMode> <interactiveMode>false</interactiveMode>
<mirrors> <mirrors>
<mirror> <mirror>
<id>nexus</id> <id>nexus</id>
<mirrorOf>external:*</mirrorOf> <mirrorOf>external:*</mirrorOf>
<url>https://registry.molgenis.org/repository/maven-central/</url> <url>http://nexus.molgenis-nexus:8081/repository/maven-central/</url>
</mirror> </mirror>
</mirrors> </mirrors>
<servers> <servers>
<!-- for snapshot builds of the master -->
<server>
<id>sonatype-nexus-staging</id>
<username>molgenis</username>
<password>xxxx</password>
</server>
<server> <server>
<id>local-nexus</id> <id>local-nexus</id>
<url>https://registry.molgenis.org/repository/maven-central/</url> <url>http://nexus.molgenis-nexus:8081/repository/maven-snapshots/</url>
<username>admin</username> <username>admin</username>
<password>xxxxx</password> <password>xxxxx</password>
</server> </server>
<!-- for docker images-->
<server> <server>
<id>oss-sonatype-staging</id> <id>registry.molgenis.org</id>
<username>molgenis</username> <username>admin</username>
<password>xxxxx</password> <password>xxxx</password>
</server>
<!-- to authenticate against GOGS for MAVEN release -->
<server>
<id>gogs</id>
<username>xxxx</username>
<password>xxxx</password>
</server> </server>
</servers> </servers>
</settings> </settings>

View File

@ -0,0 +1,8 @@
apiVersion: v1
appVersion: "1.0"
description: Nexus stack for MOLGENIS
name: molgenis-nexus
version: 0.3.0
sources:
- https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm.git
icon: https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm/raw/master/molgenis-nexus/catalogIcon-molgenis-nexus.svg

28
molgenis-nexus/README.md Normal file
View File

@ -0,0 +1,28 @@
# MOLGENIS - NEXUS Helm Chart
NEXUS repository for kubernetes to deploy on a kubernetes cluster with NFS-share
## Chart Details
This chart will deploy:
- 1 NEXUS container
- 1 MOLGENIS-httpd container ()to proxy the registry and docker to one domain)
## Installing the Chart
You can test in install the chart by executing:
```helm lint .```
To test if your helm chart-syntax is right and:
```helm install . --dry-run --debug```
To test if your hem chart works and:
```helm install .```
To deploy it on the cluster.

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.httpd.name }}
labels:
app: {{ .Values.httpd.name }}
spec:
type: {{ .Values.httpd.service.type }}
ports:
- name: {{ .Values.httpd.name }}
port: {{ .Values.httpd.port }}
selector:
app: {{ .Values.httpd.selector }}

View File

@ -5,7 +5,7 @@ metadata:
labels: labels:
app: {{ .Values.nexus.name }} app: {{ .Values.nexus.name }}
spec: spec:
type: ClusterIP type: {{ .Values.nexus.service.type }}
ports: ports:
- name: ui - name: ui
port: {{ .Values.nexus.port.ui }} port: {{ .Values.nexus.port.ui }}

View File

@ -1,6 +0,0 @@
apiVersion: v1
appVersion: "1.0"
description: Nexus stack for MOLGENIS
name: molgenis-nexus
version: 0.2.0
icon: https://github.com/sidohaakma/molgenis-docker-helm/blob/master/nexus/catalogIcon-molgenis-nexus.svg

View File

@ -6,10 +6,6 @@ replicaCount: 1
environment: production environment: production
service:
type: NodePort
port: 80
nexus: nexus:
name: nexus name: nexus
strategy: strategy:
@ -25,6 +21,8 @@ nexus:
ui: 8081 ui: 8081
path: path:
dockerV2: v2 dockerV2: v2
service:
type: ClusterIP
httpd: httpd:
name: httpd name: httpd
@ -38,6 +36,8 @@ httpd:
tag: lts tag: lts
pullPolicy: Always pullPolicy: Always
port: 80 port: 80
service:
type: LoadBalancer
ingress: ingress:

View File

@ -0,0 +1,21 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj

View File

@ -0,0 +1,8 @@
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: molgenis
version: 0.2.0
sources:
- https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm.git
icon: https://git.webhosting.rug.nl/molgenis/molgenis-ops-docker-helm/raw/master/molgenis-preview/catalogIcon-molgenis.svg

View File

@ -0,0 +1,11 @@
# MOLGENIS preview
Is used for integration testing purposes.
## Containers
This chart spins up a complete stack to run MOLGENIS. The created containers are:
- MOLGENIS
- PostgreSQL
- Elasticsearch
- OpenCPU

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,44 @@
categories:
- MOLGENIS
questions:
- variable: ingress.hosts[0].name
default: "test.molgenis.org"
description: "Hostname for your stack"
type: hostname
required: true
group: "Services and Load Balancing"
label: Hostname
- variable: molgenis.resources.limits.cpu
default: 1
description: "CPU limit for this MOLGENIS instance"
type: enum
options:
- "1"
- "2"
- "3"
- "4"
required: true
group: "MOLGENIS - Resource limits"
label: CPU limit
- variable: molgenis.resources.limits.memory
default: 1250Mi
description: "Memory limit for this MOLGENIS instance"
type: enum
options:
- "1250Mi"
- "1500Mi"
- "2000Mi"
- "2500Mi"
required: true
group: "MOLGENIS - Resource limits"
label: Memory limit
- variable: molgenis.javaOpts
default: "-Xmx1g -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
description: "Java runtime options for the MOLGENIS instance"
type: enum
options:
- "-Xmx1g -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
- "-Xmx2g -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
group: "MOLGENIS - Resource limits"
label: Java memory options

View File

@ -0,0 +1,19 @@
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range .Values.ingress.hosts }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "molgenis.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get svc -w {{ template "molgenis.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "molgenis.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "molgenis.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:80
{{- end }}

View File

@ -0,0 +1,32 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "molgenis.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "molgenis.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "molgenis.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

View File

@ -0,0 +1,124 @@
apiVersion: apps/v1beta2
kind: Deployment
metadata:
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
name: {{ template "molgenis.fullname" . }}
labels:
app: {{ template "molgenis.name" . }}
chart: {{ template "molgenis.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ template "molgenis.name" . }}
release: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ template "molgenis.name" . }}
release: {{ .Release.Name }}
spec:
containers:
- name: molgenis
{{- with .Values.molgenis }}
image: "{{ .image.repository }}:{{ .image.tag }}"
imagePullPolicy: {{ .image.pullPolicy }}
env:
- name: molgenis.home
value: /home/molgenis
- name: opencpu.uri.host
value: localhost
- name: elasticsearch.transport.addresses
value: localhost:9300
- name: elasticsearch.cluster.name
value: {{ $.Values.elasticsearch.clusterName }}
- name: db_uri
value: "jdbc:postgresql://localhost/{{ $.Values.postgres.db }}"
- name: db_user
value: {{ $.Values.postgres.user }}
- name: db_password
value: {{ $.Values.postgres.password }}
- name: admin.password
value: {{ .adminPassword }}
- name: CATALINA_OPTS
value: "{{ .javaOpts }}"
ports:
- containerPort: 8080
# livenessProbe:
# httpGet:
# path: /
# port: 8080
# readinessProbe:
# httpGet:
# path: /api/v2/version
# port: 8080
resources:
{{ toYaml .resources | indent 12 }}
{{- end }}
- name: elasticsearch
{{- with .Values.elasticsearch }}
image: "{{ .image.repository }}:{{ .image.tag }}"
imagePullPolicy: {{ .image.pullPolicy }}
env:
- name: cluster.name
value: {{ .clusterName }}
- name: bootstrap.memory_lock
value: "true"
- name: ES_JAVA_OPTS
value: "{{ .javaOpts }}"
- name: xpack.security.enabled
value: "false"
- name: discovery.type
value: single-node
ports:
- containerPort: 9200
- containerPort: 9300
resources:
{{ toYaml .resources | indent 12 }}
{{- end }}
- name: postgres
{{- with .Values.postgres }}
image: "{{ .image.repository }}:{{ .image.tag }}"
imagePullPolicy: {{ .image.pullPolicy }}
env:
- name: POSTGRES_USER
value: {{ .user }}
- name: POSTGRES_PASSWORD
value: {{ .password }}
- name: POSTGRES_DB
value: {{ .db }}
ports:
- containerPort: 5432
resources:
{{ toYaml .resources | indent 12 }}
{{- end }}
- name: opencpu
{{- with .Values.opencpu }}
image: "{{ .image.repository }}:{{ .image.tag }}"
imagePullPolicy: {{ .image.pullPolicy }}
ports:
- containerPort: 8004
resources:
{{ toYaml .resources | indent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}

View File

@ -0,0 +1,38 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "molgenis.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ template "molgenis.name" . }}
chart: {{ template "molgenis.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .name }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: 8080
{{- end }}
{{- end }}

View File

@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "molgenis.fullname" . }}
labels:
app: {{ template "molgenis.name" . }}
chart: {{ template "molgenis.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.service.type }}
ports:
- name: molgenis
port: {{ .Values.service.port }}
selector:
app: {{ template "molgenis.name" . }}
release: {{ .Release.Name }}

120
molgenis-preview/test.yaml Normal file
View File

@ -0,0 +1,120 @@
# Source: molgenis/templates/deployment.yaml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: lanky-ragdoll-molgenis
labels:
app: molgenis
chart: molgenis-0.1.0
release: lanky-ragdoll
heritage: Tiller
spec:
replicas: 1
selector:
matchLabels:
app: molgenis
release: lanky-ragdoll
template:
metadata:
labels:
app: molgenis
release: lanky-ragdoll
spec:
containers:
- name: molgenis
image: "registry.molgenis.org/molgenis/molgenis-app:latest"
imagePullPolicy: Always
env:
- name: molgenis.home
value: /home/molgenis
- name: opencpu.uri.host
value: opencpu
- name: elasticsearch.transport.addresses
value: elasticsearch:9300
- name: elasticsearch.cluster.name
value: molgenis
- name: db_uri
value: "jdbc:postgresql://postgres/molgenis"
- name: db_user
value: molgenis
- name: db_password
value: molgenis
- name: admin.password
value: admin
- name: CATALINA_OPTS
value: "-Xmx1g -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /api/v2/version
port: http
resources:
limits:
cpu: 1
memory: 1250Mi
requests:
cpu: 200m
memory: 1Gi
- name: elasticsearch
image: "docker.elastic.co/elasticsearch/elasticsearch:5.5.3"
imagePullPolicy: IfNotPresent
env:
- name: cluster.name
value: molgenis
- name: bootstrap.memory_lock
value: true
- name: ES_JAVA_OPTS
value: "-Xms512m -Xmx512m"
- name: xpack.security.enabled
value: false
- name: discovery.type
value: single-node
ports:
- containerPort: 9200
- containerPort: 9300
limits:
cpu: 1
memory: 1500Mi
requests:
cpu: 100m
memory: 1Gi
- name: postgres
image: "postgres:9.6-alpine"
imagePullPolicy: IfNotPresent
env:
- name: POSTGRES_USER
value: molgenis
- name: POSTGRES_PASSWORD
value: molgenis
- name: POSTGRES_DB
value: molgenis
ports:
- containerPort: 5432
limits:
cpu: 1
memory: 250Mi
requests:
cpu: 100m
memory: 250Mi
- name: opencpu
image: "molgenis/opencpu:latest"
imagePullPolicy: Always
ports:
- containerPort: 8004
limits:
cpu: 1
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi

View File

@ -0,0 +1,81 @@
# Default values for molgenis.
replicaCount: 1
service:
type: LoadBalancer
port: 8080
ingress:
enabled: true
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "0"
path: /
hosts:
- name: test.molgenis.org
tls: []
molgenis:
image:
repository: registry.molgenis.org/molgenis/molgenis-app
tag: 7.0.0-SNAPSHOT
pullPolicy: Always
adminPassword: admin
javaOpts: "-Xmx1g -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled"
resources:
limits:
cpu: 1
memory: 1250Mi
requests:
cpu: 200m
memory: 1Gi
postgres:
image:
repository: postgres
tag: 9.6-alpine
pullPolicy: IfNotPresent
user: molgenis
password: molgenis
db: molgenis
resources:
limits:
cpu: 1
memory: 250Mi
requests:
cpu: 100m
memory: 250Mi
elasticsearch:
image:
repository: docker.elastic.co/elasticsearch/elasticsearch
tag: 5.5.3
pullPolicy: IfNotPresent
javaOpts: "-Xms512m -Xmx512m"
clusterName: molgenis
resources:
limits:
cpu: 1
memory: 1500Mi
requests:
cpu: 100m
memory: 1Gi
opencpu:
image:
repository: molgenis/opencpu
tag: latest
pullPolicy: Always
resources:
limits:
cpu: 1
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
nodeSelector: {}
tolerations: []
affinity: {}

18
rbac-config.yml Normal file
View File

@ -0,0 +1,18 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system