Skip to content

Commit be30687

Browse files
authored
add an example mounting the Openshift SA secret for internal registry (#9)
1 parent 3ebe8d8 commit be30687

File tree

2 files changed

+102
-1
lines changed

2 files changed

+102
-1
lines changed

docs/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,11 @@ The `no_proxy` variable can be used to define a list of hosts that don't use the
131131
In this [repository](https://github.com/sysdiglabs/secure-inline-scan-examples/) you can find the following examples in alphabetical order:
132132

133133
* [Google Cloud Build](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/google-cloud-build)
134-
* Jenkins
134+
* [Jenkins](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/jenkins)
135135
* [Scan from repository](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/jenkins/jenkins-scan-from-repo)
136136
* [Build and scan](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/jenkins/jenkins-build-and-scan)
137137
* [Build, push and scan from repository](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/jenkins/jenkins-build-push-scan-from-repo)
138+
* [Build, push and scan using Openshift internal registry](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/jenkins/jenkins-openshift-internal-registry)
138139
* [Tekton](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/tekton)
139140
* [Tekton alpha API](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/tekton/alpha)
140141
* [Tekton beta API](https://github.com/sysdiglabs/secure-inline-scan-examples/tree/main/tekton/beta)
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
pipeline {
2+
agent {
3+
kubernetes {
4+
yaml """
5+
apiVersion: v1
6+
kind: Pod
7+
metadata:
8+
name: inline-scan-worker
9+
spec:
10+
containers:
11+
- name: jnlp
12+
volumeMounts:
13+
# Mount the Openshift SA dockercfg secret as .dockercfg
14+
- mountPath: /home/jenkins/agent/.dockercfg
15+
name: sa-dockercfg
16+
subPath: .dockercfg
17+
- name: maven
18+
image: maven:3.6-jdk-11
19+
command: ['cat']
20+
tty: true
21+
- name: builder
22+
image: gcr.io/kaniko-project/executor:debug
23+
command: ['cat']
24+
tty: true
25+
env:
26+
- name: DOCKER_CONFIG
27+
value: /home/jenkins/agent
28+
- name: inline-scan
29+
image: quay.io/sysdig/secure-inline-scan:2
30+
command: ['cat']
31+
tty: true
32+
volumes:
33+
- name: sa-dockercfg
34+
secret:
35+
defaultMode: 420
36+
# Name of the secret in Kubernetes used by the Service Account
37+
# Requires push and pull access to the internal registry.
38+
# See https://docs.openshift.com/container-platform/4.6/registry/accessing-the-registry.html
39+
secretName: jenkins-dockercfg-nr7sd
40+
"""
41+
}
42+
}
43+
44+
parameters {
45+
string(name: 'IMAGE_NAME', defaultValue: 'image-registry.openshift-image-registry.svc.cluster.local:5000/default/test-maven-app', description: 'Name of the image to be built andscanned (e.g.: myrepo/dummy-app)')
46+
}
47+
48+
environment {
49+
SECURE_API_KEY = credentials('sysdig-secure-airadier')
50+
}
51+
52+
stages {
53+
54+
stage('Checkout') {
55+
steps {
56+
git 'https://github.com/openshift/test-maven-app'
57+
}
58+
}
59+
60+
stage('Prepare internal registry credentials') {
61+
steps {
62+
// We need to convert old .dockercfg format to config.json wrapping in "auth" field
63+
sh "echo -n \"{ \\\"auths\\\": \" > /home/jenkins/agent/config.json"
64+
sh "cat /home/jenkins/agent/.dockercfg >> /home/jenkins/agent/config.json"
65+
sh "echo \"}\" >>/home/jenkins/agent/config.json"
66+
}
67+
}
68+
69+
stage('Build app') {
70+
steps {
71+
container("maven") {
72+
sh "mvn package"
73+
}
74+
}
75+
}
76+
77+
stage('Build image and push') {
78+
steps {
79+
container("builder") {
80+
sh """cat > Dockerfile <<EOF
81+
FROM gcr.io/distroless/java:11
82+
COPY target/hello.jar /hello.jar
83+
CMD /hello.jar
84+
EOF
85+
"""
86+
sh "/kaniko/executor --context . --destination ${IMAGE_NAME} --skip-tls-verify"
87+
}
88+
}
89+
}
90+
91+
stage('Scanning Image pulled from repository') {
92+
steps {
93+
container("inline-scan") {
94+
sh "/sysdig-inline-scan.sh -k ${SECURE_API_KEY_PSW} --registry-skip-tls --registry-auth-file /home/jenkins/agent/config.json ${IMAGE_NAME}"
95+
}
96+
}
97+
}
98+
99+
}
100+
}

0 commit comments

Comments
 (0)