Encryption should used wherever possible (and plausible).
The demo shows us how we can use SOPS to tick most of the boxes.
- checkout this gist
- run
./setup.sh - follow the instructions
| .DEFAULT_GOAL := help | |
| SHELL := /bin/bash | |
| MAKEFLAGS += --no-print-directory | |
| MKFILE_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) | |
| DOCKER_IMAGE := ghcr.io/tsmp-falcon-platform/ci-bundle-utils:v0.3.3 | |
| DOCKER_NAME := bundleutils | |
| .ONESHELL: | |
| .PHONY: start | |
| start: ## Start the bundleutils container |
| .DEFAULT_GOAL := help | |
| SHELL := /bin/bash | |
| MAKEFLAGS += --no-print-directory | |
| MKFILE_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) | |
| DOCKER_IMAGE := ghcr.io/tsmp-falcon-platform/ci-bundle-utils:v0.3.3 | |
| DOCKER_NAME := bundleutils | |
| .PHONY: start | |
| start: ## Start the bundleutils container | |
| @docker run \ |
Encryption should used wherever possible (and plausible).
The demo shows us how we can use SOPS to tick most of the boxes.
./setup.shI hereby claim:
To claim this, I am signing this object:
| {"component":"jenkins-operator","file":"prow/cmd/jenkins-operator/main.go:279","func":"main.gather","level":"debug","metrics-duration":"718.562µs","msg":"Metrics synced","time":"2019-09-11T15:20:07Z"} | |
| {"client":"jenkins","component":"jenkins-operator","file":"prow/jenkins/jenkins.go:675","func":"k8s.io/test-infra/prow/jenkins.(*Client).GetEnqueuedBuilds","level":"debug","msg":"GetEnqueuedBuilds","time":"2019-09-11T15:20:07Z"} | |
| {"client":"jenkins","component":"jenkins-operator","file":"prow/jenkins/jenkins.go:715","func":"k8s.io/test-infra/prow/jenkins.(*Client).GetBuilds","level":"debug","msg":"GetBuilds(myproj/view/change-requests/job/PR-1798)","time":"2019-09-11T15:20:07Z"} | |
| {"client":"jenkins","component":"jenkins-operator","file":"prow/jenkins/jenkins.go:715","func":"k8s.io/test-infra/prow/jenkins.(*Client).GetBuilds","level":"debug","msg":"GetBuilds(myproj/view/change-requests/job/PR-1801)","time":"2019-09-11T15:20:07Z"} | |
| {"client":"jenkins","component":"jenkins-operator","file":"prow/jenkins/jenkins.go:715 |
| {"component":"jenkins-operator","duration":"467.19302ms","file":"prow/cmd/jenkins-operator/main.go:227","func":"main.main","level":"info","msg":"Synced","time":"2019-09-10T16:00:07Z"} | |
| {"component":"jenkins-operator","duration":"480.632256ms","file":"prow/cmd/jenkins-operator/main.go:227","func":"main.main","level":"info","msg":"Synced","time":"2019-09-10T16:00:37Z"} | |
| {"component":"jenkins-operator","duration":"541.922802ms","file":"prow/cmd/jenkins-operator/main.go:227","func":"main.main","level":"info","msg":"Synced","time":"2019-09-10T16:01:07Z"} | |
| {"component":"jenkins-operator","duration":"443.892985ms","file":"prow/cmd/jenkins-operator/main.go:227","func":"main.main","level":"info","msg":"Synced","time":"2019-09-10T16:01:37Z"} | |
| {"component":"jenkins-operator","duration":"483.265286ms","file":"prow/cmd/jenkins-operator/main.go:227","func":"main.main","level":"info","msg":"Synced","time":"2019-09-10T16:02:07Z"} | |
| {"component":"jenkins-operator","duration":"371.763669ms","file":"prow/cmd/jenkins-operator/main.go: |
| add_custom_nexus_repos() { | |
| local dir=$1 | |
| local volumeNames subPaths repoFiles patchItemString= patchFile separator='' | |
| echo "Getting nexus deployment volume names..." | |
| volumeNames=$(kubectl get deployment jenkins-x-nexus -o 'jsonpath={ .spec.template.spec.volumes[*].name}') | |
| echo "Getting nexus deployment volumeMount subPaths..." | |
| subPaths=$(kubectl get deployment jenkins-x-nexus -o 'jsonpath={ .spec.template.spec.containers[0].volumeMounts[*].subPath}') | |
| repoFiles=$(cat "${dir}/nexus-repos/nexus-custom-repo-files.yaml" | docker run -i --rm evns/yq -j -r '.data' | docker run -i --rm imega/jq -r 'keys[]' | xargs) |
| def updateGroup(def name, def members) { | |
| if (!repository.getRepositoryManager().exists(name)) { | |
| repository.createMavenGroup(name, members) | |
| } | |
| def mgConfig = repository.getRepositoryManager().get(name).configuration.copy() | |
| mgConfig.attributes['group']['memberNames'] = members | |
| repository.repositoryManager.update(mgConfig) | |
| } | |
| updateGroup('maven-group',['maven-public', 'maven-central', 'maven-releases', 'spring-milestone', 'spring-release', 'jitpack', 'jenkins-release', 'maven-jenkinsci', 'jenkins-public', 'plugins-gradle', 'my-protected-repo']) | |
| updateGroup('maven-group-snapshots',['maven-snapshots', 'apache-org-snapshots', 'spring-io-libs-snapshot', 'oss-sonatype-snapshots']) |
| kind: ConfigMap | |
| apiVersion: v1 | |
| metadata: | |
| name: nexus-custom-repo-files | |
| namespace: jx | |
| labels: | |
| app: nexus-custom-repo-files | |
| data: | |
| redshift-maven-repository.json: | | |
| { |
| pipeline { | |
| options { ... } | |
| parameters { ... } | |
| agent { ... } | |
| stages { | |
| stage('Test') { | |
| when { |