33
44source $( dirname $0 ) /version
55
6- ARCH=${ARCH:- " amd64" }
7- SUFFIX=" "
8- [ " ${ARCH} " != " amd64" ] && SUFFIX=" _${ARCH} "
9-
106cd $( dirname $0 ) /..
117
12- TAG=${TAG:- ${VERSION}${SUFFIX} }
13- REPO=${REPO:- yasker}
8+ command -v buildx > /dev/null && BUILD_CMD=(buildx) || BUILD_CMD=(docker buildx)
9+
10+ # read configurable parameters
11+ REPO=${REPO:- longhornio}
12+ IMAGE_NAME=${IMAGE_NAME:- ' kbench' }
13+ TAG=${TAG:- ${VERSION} }
14+ PUSH=${PUSH:- ' false' }
15+ IS_SECURE=${IS_SECURE:- ' false' }
16+ MACHINE=${MACHINE:- ' ' }
17+ TARGET_PLATFORMS=${TARGET_PLATFORMS:- ' ' }
18+ IID_FILE=${IID_FILE:- ' ' }
19+ IID_FILE_FLAG=${IID_FILE_FLAG:- ' ' }
20+
21+ IMAGE=" ${REPO} /${IMAGE_NAME} :${TAG} "
22+
23+ BUILDER_ARGS=()
24+ [[ ${MACHINE} ]] && BUILDER_ARGS+=(' --builder' " ${MACHINE} " )
25+
26+ IFS=' ' read -r -a IID_FILE_ARGS <<< " ${IID_FILE_FLAG}"
27+ [[ -n " ${IID_FILE} " && ${# IID_FILE_ARGS} == 0 ]] && IID_FILE_ARGS=(' --iidfile' " ${IID_FILE} " )
1428
15- if echo $TAG | grep -q dirty; then
16- TAG=dev
29+ BUILDX_ARGS=()
30+
31+ if [[ " ${PUSH} " == ' true' ]]; then
32+ BUILDX_ARGS+=(' --push' )
33+ else
34+ BUILDX_ARGS+=(' --load' )
1735fi
1836
19- IMAGE=${REPO} /kbench:${TAG}
20- docker build -t ${IMAGE} -f package/Dockerfile .
21- echo Built ${IMAGE}
37+ [[ ${IS_SECURE} == ' true' ]] && BUILDX_ARGS+=(' --sbom=true' ' --attest' ' type=provenance,mode=max' )
38+ [[ ${TARGET_PLATFORMS} ]] && BUILDX_ARGS+=(' --platform' " ${TARGET_PLATFORMS} " )
39+
40+ # update base IMAGE to get latest changes
41+ grep ' FROM.*/' package/Dockerfile | awk ' {print $2}' | while read -r BASE_IMAGE
42+ do
43+ docker pull " ${BASE_IMAGE} "
44+ done
45+
46+ IMAGE_BUILD_CMD_ARGS=(
47+ build --no-cache \
48+ " ${BUILDER_ARGS[@]} " \
49+ " ${IID_FILE_ARGS[@]} " \
50+ " ${BUILDX_ARGS[@]} " \
51+ -t " ${IMAGE} " -f package/Dockerfile .
52+ )
53+ echo " ${BUILD_CMD[@]} " " ${IMAGE_BUILD_CMD_ARGS[@]} "
54+ " ${BUILD_CMD[@]} " " ${IMAGE_BUILD_CMD_ARGS[@]} "
55+
56+ echo " Built ${IMAGE} "
57+
58+ mkdir -p ./bin
59+ echo " ${IMAGE} " > ./bin/latest_image
0 commit comments