Skip to content

Commit 7787361

Browse files
committed
allow skipping of image build by specifying SKIP_IMAGE_BUILD in commit messages
Will only proceed with skipping image build for jenkins jobs configured as branches, not tags, since tags are immutable.
1 parent db0b47c commit 7787361

File tree

1 file changed

+67
-34
lines changed

1 file changed

+67
-34
lines changed

build-container.bash

Lines changed: 67 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,37 @@ shift
1616
#An array to map containers to annotations
1717
declare -A containers
1818
declare -A specs
19+
20+
# detect branch or tag
21+
IS_TAG=0
22+
DESCRIBED_TAG=$(git describe --exact-match --tags HEAD)
23+
if (( $? == 0 ))
24+
then
25+
IS_TAG=1
26+
fi
27+
echo "[CI] Is checkout a tag: ${IS_TAG} ${DESCRIBED_TAG}"
28+
29+
#Get last log message
30+
LAST_LOG=$(git log -1)
31+
echo "[CI] Last log: ${LAST_LOG}"
32+
33+
# extract any flags from last log
34+
SKIP_IMAGE_BUILD_FLAG=0
35+
GREP_SKIP_IMAGE_BUILD=$(echo $LAST_LOG | grep -i SKIP_IMAGE_BUILD)
36+
if (( $? == 0 ))
37+
then
38+
SKIP_IMAGE_BUILD_FLAG=1
39+
fi
40+
echo "[CI] Skip image build flag: ${SKIP_IMAGE_BUILD_FLAG}"
41+
42+
# skip image build? only if checkout is a branch and SKIP_IMAGE_BUILD is set
43+
SKIP_IMAGE_BUILD=0
44+
if [[ $IS_TAG -eq 0 ]] && [[ $SKIP_IMAGE_BUILD_FLAG -eq 1 ]]
45+
then
46+
SKIP_IMAGE_BUILD=1
47+
echo "[CI] Image build will be skipped."
48+
fi
49+
1950
#Use git to cleanly remove any artifacts
2051
git clean -ffdq -e repos
2152
if (( $? != 0 ))
@@ -58,40 +89,42 @@ do
5889
GZ="${TAR}.gz"
5990
#Remove previous container if exists
6091
PREV_ID=$(docker images -q $PRODUCT)
61-
if [[ ! -z "$PREV_ID" ]]
62-
then
63-
echo "[CI] Removing current image for ${PRODUCT}: ${PREV_ID}"
64-
docker rmi -f ${PREV_ID}
65-
fi
66-
#Build container
67-
echo "[CI] Build for: ${PRODUCT} and file ${NAME}"
68-
#Build docker container
69-
echo " docker build --rm --force-rm -f docker/${dockerfile} -t ${PRODUCT} $@ ."
70-
docker build --rm --force-rm -f docker/${dockerfile} -t ${PRODUCT} "$@" .
71-
if (( $? != 0 ))
72-
then
73-
echo "[ERROR] Failed to build docker container for: ${PRODUCT}" 1>&2
74-
exit 4
75-
fi
76-
#Save out the docker image
77-
docker save -o ./${TAR} ${PRODUCT}
78-
if (( $? != 0 ))
79-
then
80-
echo "[ERROR] Failed to save docker container for: ${PRODUCT}" 1>&2
81-
exit 5
82-
fi
83-
#GZIP it
84-
pigz -f ./${TAR}
85-
if (( $? != 0 ))
86-
then
87-
echo "[ERROR] Failed to GZIP container for: ${PRODUCT}" 1>&2
88-
exit 6
89-
fi
90-
${DIR}/container-met.py ${PRODUCT} ${TAG} ${GZ} ${STORAGE}
91-
if (( $? != 0 ))
92-
then
93-
echo "[ERROR] Failed to make metadata and store container for: ${PRODUCT}" 1>&2
94-
exit 7
92+
if (( ${SKIP_IMAGE_BUILD} == 0 )); then
93+
if [[ ! -z "$PREV_ID" ]]
94+
then
95+
echo "[CI] Removing current image for ${PRODUCT}: ${PREV_ID}"
96+
docker rmi -f ${PREV_ID}
97+
fi
98+
#Build container
99+
echo "[CI] Build for: ${PRODUCT} and file ${NAME}"
100+
#Build docker container
101+
echo " docker build --rm --force-rm -f docker/${dockerfile} -t ${PRODUCT} $@ ."
102+
docker build --rm --force-rm -f docker/${dockerfile} -t ${PRODUCT} "$@" .
103+
if (( $? != 0 ))
104+
then
105+
echo "[ERROR] Failed to build docker container for: ${PRODUCT}" 1>&2
106+
exit 4
107+
fi
108+
#Save out the docker image
109+
docker save -o ./${TAR} ${PRODUCT}
110+
if (( $? != 0 ))
111+
then
112+
echo "[ERROR] Failed to save docker container for: ${PRODUCT}" 1>&2
113+
exit 5
114+
fi
115+
#GZIP it
116+
pigz -f ./${TAR}
117+
if (( $? != 0 ))
118+
then
119+
echo "[ERROR] Failed to GZIP container for: ${PRODUCT}" 1>&2
120+
exit 6
121+
fi
122+
${DIR}/container-met.py ${PRODUCT} ${TAG} ${GZ} ${STORAGE}
123+
if (( $? != 0 ))
124+
then
125+
echo "[ERROR] Failed to make metadata and store container for: ${PRODUCT}" 1>&2
126+
exit 7
127+
fi
95128
fi
96129
containers[${NAME}]=${PRODUCT}
97130
#Attempt to remove dataset

0 commit comments

Comments
 (0)