Introduces the production of docker containers as a CI step. Currently only provides a rolling-release version that builds on every push to main. Images are deployed to ghcr.io. The PR includes two variations on building the images. We'll likely only want to stick with one or the other.
63 lines
1.9 KiB
Bash
Executable File
63 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
SCRIPT_ROOT=$(dirname $(readlink -f $0))
|
|
PROJECT_ROOT=$(dirname ${SCRIPT_ROOT})
|
|
|
|
CORSO_BUILD_CONTAINER=/go/src/github.com/alcionai/corso
|
|
CORSO_BUILD_CONTAINER_SRC=${CORSO_BUILD_CONTAINER}/src
|
|
CORSO_BUILD_PKG_MOD=/go/pkg/mod
|
|
CORSO_BUILD_TMP=/tmp/.corsobuild
|
|
CORSO_BUILD_TMP_CACHE=${CORSO_BUILD_TMP}/cache
|
|
CORSO_BUILD_TMP_MOD=${CORSO_BUILD_TMP}/mod
|
|
CORSO_CACHE=${CORSO_BUILD_TMP_CACHE}
|
|
CORSO_MOD_CACHE=${CORSO_BUILD_PKG_MOD}/cache
|
|
|
|
CORSO_BUILD_ARGS=''
|
|
|
|
GOVER=1.18
|
|
GOOS=linux
|
|
GOARCH=amd64
|
|
|
|
while [ "$#" -gt 0 ]
|
|
do
|
|
case "$1" in
|
|
--arch)
|
|
GOARCH=$2
|
|
shift
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# temporary directory for caching go build
|
|
mkdir -p ${CORSO_BUILD_TMP_CACHE}
|
|
# temporary directory for caching go modules (needed for fast cross-platform build)
|
|
mkdir -p ${CORSO_BUILD_TMP_MOD}
|
|
|
|
echo "-----"
|
|
echo "building corso binary for ${GOOS}-${GOARCH}"
|
|
echo "-----"
|
|
|
|
set -x
|
|
docker run --rm \
|
|
--mount type=bind,src=${PROJECT_ROOT},dst=${CORSO_BUILD_CONTAINER} \
|
|
--mount type=bind,src=${CORSO_BUILD_TMP_CACHE},dst=${CORSO_BUILD_TMP_CACHE} \
|
|
--mount type=bind,src=${CORSO_BUILD_TMP_MOD},dst=${CORSO_BUILD_PKG_MOD} \
|
|
--workdir ${CORSO_BUILD_CONTAINER_SRC} \
|
|
--env GOMODCACHE=${CORSO_MOD_CACHE} \
|
|
--env GOCACHE=${CORSO_CACHE} \
|
|
--env GOOS=${GOOS} \
|
|
--env GOARCH=${GOARCH} \
|
|
--entrypoint /usr/local/go/bin/go \
|
|
golang:${GOVER} \
|
|
build ${CORSO_BUILD_ARGS}
|
|
set +x
|
|
|
|
mkdir -p ${PROJECT_ROOT}/bin
|
|
mv ${PROJECT_ROOT}/src/corso ${PROJECT_ROOT}/bin/corso
|
|
|
|
echo "-----"
|
|
echo "created binary image in ${PROJECT_ROOT}/bin/corso"
|