Skip to content

Commit c60218d

Browse files
committed
Remove dependencyscanner image after use / tag it per build
Tag the dependencyscanner image with a per build unique tag, so concurrent runs on the same agent don't collide on the shared `dependencyscanner:latest` tag. Previously the image was tagged `dependencyscanner` and never removed, so each run either re-tagged (orphaning the previous image as dangling) or left a fresh tagged image on the agent. CMK-33231 Change-Id: I9d2a3d4862d4a22cec6ff6f004f56d3ce7e3c390
1 parent 4b74c5a commit c60218d

1 file changed

Lines changed: 49 additions & 38 deletions

File tree

buildscripts/scripts/build-cmk-bom.groovy

Lines changed: 49 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -43,50 +43,61 @@ void main() {
4343

4444
dir("${WORKSPACE}/dependencyscanner") {
4545
def scanner_image;
46+
def sha1 = { String input ->
47+
java.security.MessageDigest.getInstance("SHA-1")
48+
.digest(input.bytes)
49+
.encodeHex()
50+
.toString()
51+
};
52+
def scanner_image_tag = "dependencyscanner:${sha1(env.BUILD_URL)}";
4653
def relative_bom_path = "omd/bill-of-materials.json";
4754
def bom_path = "${checkout_dir}/${relative_bom_path}";
4855

49-
stage("Prepare Dependencyscanner") {
50-
checkout([
51-
$class: 'GitSCM',
52-
branches: [[name: 'refs/heads/master']],
53-
browser: [
54-
$class: 'GitWeb',
55-
repoUrl: 'https://review.lan.tribe29.com/git/?p=dependencyscanner.git'
56-
],
57-
userRemoteConfigs: [
58-
[
59-
credentialsId: '058f09c4-21c9-49ae-b72b-0b9d2f465da6',
60-
url: 'ssh://jenkins@review.lan.tribe29.com:29418/dependencyscanner'
61-
]
62-
],
63-
]);
64-
scanner_image = docker.build("dependencyscanner", "--tag dependencyscanner .");
65-
}
56+
try {
57+
stage("Prepare Dependencyscanner") {
58+
checkout([
59+
$class: 'GitSCM',
60+
branches: [[name: 'refs/heads/master']],
61+
browser: [
62+
$class: 'GitWeb',
63+
repoUrl: 'https://review.lan.tribe29.com/git/?p=dependencyscanner.git'
64+
],
65+
userRemoteConfigs: [
66+
[
67+
credentialsId: '058f09c4-21c9-49ae-b72b-0b9d2f465da6',
68+
url: 'ssh://jenkins@review.lan.tribe29.com:29418/dependencyscanner'
69+
]
70+
],
71+
]);
72+
scanner_image = docker.build(scanner_image_tag, "--tag ${scanner_image_tag} .");
73+
}
6674

67-
stage('Create BOM') {
68-
// Further: the BOM image does not yet have a DISTRO label...
69-
docker.withRegistry(DOCKER_REGISTRY, 'nexus') {
70-
scanner_image.inside(
71-
"${mount_reference_repo_dir}" +
72-
" -v ${checkout_dir}:${checkout_dir}" +
73-
" --ulimit nofile=1024:1024" +
74-
" --group-add=${docker_group_id}" +
75-
" -v /var/run/docker.sock:/var/run/docker.sock"
76-
) {
77-
sh("""
78-
python3 -m dependencyscanner \
79-
--stage prod \
80-
--outfile '${bom_path}' \
81-
--research_file researched_master.yml \
82-
--license_cache license_cache_master.json \
83-
--version '${cmk_version}' \
84-
--type jsscanner --type bazel_files --type cargo --type omd --type package-lock \
85-
--type pnpm-lock --type cmk_runtime_lock --type cmk_module_bazel --type go\
86-
'${checkout_dir}'
87-
""");
75+
stage('Create BOM') {
76+
// Further: the BOM image does not yet have a DISTRO label...
77+
docker.withRegistry(DOCKER_REGISTRY, 'nexus') {
78+
scanner_image.inside(
79+
"${mount_reference_repo_dir}" +
80+
" -v ${checkout_dir}:${checkout_dir}" +
81+
" --ulimit nofile=1024:1024" +
82+
" --group-add=${docker_group_id}" +
83+
" -v /var/run/docker.sock:/var/run/docker.sock"
84+
) {
85+
sh("""
86+
python3 -m dependencyscanner \
87+
--stage prod \
88+
--outfile '${bom_path}' \
89+
--research_file researched_master.yml \
90+
--license_cache license_cache_master.json \
91+
--version '${cmk_version}' \
92+
--type jsscanner --type bazel_files --type cargo --type omd --type package-lock \
93+
--type pnpm-lock --type cmk_runtime_lock --type cmk_module_bazel --type go\
94+
'${checkout_dir}'
95+
""");
96+
}
8897
}
8998
}
99+
} finally {
100+
sh("docker image rm --force ${scanner_image_tag} || true");
90101
}
91102

92103
dir("${checkout_dir}") {

0 commit comments

Comments
 (0)