From f1566b8e4a17a9802282f42b668ba224b6cd858f Mon Sep 17 00:00:00 2001 From: Cyrille Nofficial Date: Tue, 12 Oct 2021 22:18:00 +0200 Subject: [PATCH] build: add script to build images with buildah --- .gitignore | 1 + build-docker.sh | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100755 build-docker.sh diff --git a/.gitignore b/.gitignore index ebe588b..7845f5f 100644 --- a/.gitignore +++ b/.gitignore @@ -284,3 +284,4 @@ local.properties ./rc-* rc-simulator +rc-simulator.* diff --git a/build-docker.sh b/build-docker.sh new file mode 100755 index 0000000..39cd1c7 --- /dev/null +++ b/build-docker.sh @@ -0,0 +1,49 @@ +#! /bin/bash + +IMAGE_NAME=robocar-simulator +TAG=$(git describe) +FULL_IMAGE_NAME=docker.io/cyrilix/${IMAGE_NAME}:${TAG} +BINARY=rc-simulator + +GOTAGS="-tags netgo" + +image_build(){ + local platform=$1 + + + GOOS=$(echo $platform | cut -f1 -d/) && \ + GOARCH=$(echo $platform | cut -f2 -d/) && \ + GOARM=$(echo $platform | cut -f3 -d/ | sed "s/v//" ) + VARIANT="--variant $(echo $platform | cut -f3 -d/ )" + if [[ -z "$GOARM" ]] ; + then + VARIANT="" + fi + + local binary_suffix="$GOARCH$(echo $platform | cut -f3 -d/ )" + + local containerName="$IMAGE_NAME-$GOARCH$GOARM" + + + printf "\n\nBuild go binary %s\n\n" "${BINARY}.${binary_suffix}" + CGO_ENABLED=0 GOOS=${GOOS} GOARCH=${GOARCH} GOARM=${GOARM} go build -mod vendor -a ${GOTAGS} -o "${BINARY}.${binary_suffix}" ./cmd/${BINARY}/ + + buildah --os "$GOOS" --arch "$GOARCH" $VARIANT --name "$containerName" from gcr.io/distroless/static + buildah config --user 1234 "$containerName" + buildah copy "$containerName" "${BINARY}.${binary_suffix}" /go/bin/$BINARY + buildah config --entrypoint '["/go/bin/'$BINARY'"]' "${containerName}" + + buildah commit --rm --manifest $IMAGE_NAME "${containerName}" "${containerName}" +} + +buildah rmi localhost/$IMAGE_NAME +buildah manifest rm localhost/${IMAGE_NAME} + +image_build linux/amd64 +image_build linux/arm64 +image_build linux/arm/v7 + + +# push image +printf "\n\nPush manifest to %s\n\n" ${FULL_IMAGE_NAME} +buildah manifest push --rm -f v2s2 "localhost/$IMAGE_NAME" "docker://$FULL_IMAGE_NAME" --all \ No newline at end of file