Skip to content

Commit f924d1c

Browse files
authored
Merge pull request Kaggle#394 from Kaggle/package-diff-ci
Show package versions diff in the docker build pipeline
2 parents bf0bac6 + fd1f373 commit f924d1c

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

Jenkinsfile

+22
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,28 @@ pipeline {
9696
'''
9797
}
9898
}
99+
100+
stage('Package Versions') {
101+
parallel {
102+
stage('CPU Diff') {
103+
steps {
104+
slackSend color: 'none', message: "*<${env.BUILD_URL}console|${JOB_NAME} diff CPU image>* ${GIT_COMMIT_SUMMARY}", channel: env.SLACK_CHANNEL
105+
sh '''#!/bin/bash
106+
./diff
107+
'''
108+
}
109+
}
110+
stage('GPU Diff') {
111+
agent { label 'ephemeral-linux-gpu' }
112+
steps {
113+
slackSend color: 'none', message: "*<${env.BUILD_URL}console|${JOB_NAME} diff GPU image>* ${GIT_COMMIT_SUMMARY}", channel: env.SLACK_CHANNEL
114+
sh '''#!/bin/bash
115+
./diff --gpu
116+
'''
117+
}
118+
}
119+
}
120+
}
99121
}
100122

101123
post {

diff

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#!/bin/bash
2+
set -e
3+
4+
usage() {
5+
cat << EOF
6+
Usage: $0 [OPTIONS]
7+
Compare the locally built Docker image package versions against the prod image.
8+
9+
Options:
10+
-g, --gpu Compare GPU images.
11+
EOF
12+
}
13+
14+
15+
BASE_IMAGE_TAG="gcr.io/kaggle-images/python:latest"
16+
TARGET_IMAGE_TAG="kaggle/python-build"
17+
18+
while :; do
19+
case "$1" in
20+
-h|--help)
21+
usage
22+
exit
23+
;;
24+
-g|--gpu)
25+
BASE_IMAGE_TAG="gcr.io/kaggle-private-byod/python:latest"
26+
TARGET_IMAGE_TAG="kaggle/python-gpu-build"
27+
;;
28+
-?*)
29+
usage
30+
printf 'ERROR: Unknown option: %s\n' "$1" >&2
31+
exit
32+
;;
33+
*)
34+
break
35+
esac
36+
37+
shift
38+
done
39+
40+
readonly BASE_IMAGE_TAG
41+
readonly TARGET_IMAGE_TAG
42+
43+
echo "Base: $BASE_IMAGE_TAG"
44+
echo "Target: $TARGET_IMAGE_TAG"
45+
46+
docker pull "$BASE_IMAGE_TAG"
47+
48+
CMDS=('dpkg-query --show -f "${Package}==${Version}\n"' 'pip freeze')
49+
for cmd in "${CMDS[@]}"; do
50+
echo "== Comparing $cmd =="
51+
diff --suppress-common-lines --side-by-side \
52+
<(docker run --rm "$BASE_IMAGE_TAG" $cmd) \
53+
<(docker run --rm "$TARGET_IMAGE_TAG" $cmd) \
54+
&& echo "No diff" || true
55+
done

0 commit comments

Comments
 (0)