docker: Run image build on amd64 instance to avoid QEMU errors on arm64
Playwright won't install in a amd64 docker container running under QEMU on arm64.
This commit is contained in:
parent
8fa00ca4c3
commit
687212a0a9
4 changed files with 72 additions and 10 deletions
|
|
@ -58,6 +58,9 @@ Flags:
|
||||||
images into the daemon for push later. It's not slow though to use --push-docker after
|
images into the daemon for push later. It's not slow though to use --push-docker after
|
||||||
building the image as nearly all artifacts are cached.
|
building the image as nearly all artifacts are cached.
|
||||||
Automatically set if called from release.sh
|
Automatically set if called from release.sh
|
||||||
|
|
||||||
|
--latest-docker
|
||||||
|
Mark the built image with the latest tag. Automatically set if called from release.sh
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -113,6 +116,10 @@ main() {
|
||||||
flag_noarg && shift "$FLAGSHIFT"
|
flag_noarg && shift "$FLAGSHIFT"
|
||||||
PUSH_DOCKER=1
|
PUSH_DOCKER=1
|
||||||
;;
|
;;
|
||||||
|
latest-docker)
|
||||||
|
flag_noarg && shift "$FLAGSHIFT"
|
||||||
|
LATEST_DOCKER=1
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
flag_errusage "unrecognized flag $FLAGRAW"
|
flag_errusage "unrecognized flag $FLAGRAW"
|
||||||
;;
|
;;
|
||||||
|
|
@ -149,7 +156,7 @@ main() {
|
||||||
runjob windows/arm64 'OS=windows ARCH=arm64 build' &
|
runjob windows/arm64 'OS=windows ARCH=arm64 build' &
|
||||||
waitjobs
|
waitjobs
|
||||||
|
|
||||||
runjob linux/dockerimage 'OS=linux build_docker_image' &
|
runjob linux/docker build_docker &
|
||||||
runjob windows/amd64/msi 'OS=windows ARCH=amd64 build_windows_msi' &
|
runjob windows/amd64/msi 'OS=windows ARCH=amd64 build_windows_msi' &
|
||||||
waitjobs
|
waitjobs
|
||||||
}
|
}
|
||||||
|
|
@ -247,14 +254,12 @@ ARCHIVE=$ARCHIVE \
|
||||||
sh_c rsync --archive --human-readable "$REMOTE_HOST:src/d2/$ARCHIVE" "$ARCHIVE"
|
sh_c rsync --archive --human-readable "$REMOTE_HOST:src/d2/$ARCHIVE" "$ARCHIVE"
|
||||||
)}
|
)}
|
||||||
|
|
||||||
build_docker_image() {
|
build_docker() {
|
||||||
D2_DOCKER_IMAGE=${D2_DOCKER_IMAGE:-terrastruct/d2}
|
sh_c lockfile_ssh "$CI_D2_LINUX_AMD64" .d2-build-lock
|
||||||
flags='--load'
|
sh_c gitsync "$CI_D2_LINUX_AMD64" src/d2
|
||||||
if [ -n "${PUSH_DOCKER-}" -o -n "${RELEASE-}" ]; then
|
sh_c ssh "$CI_D2_LINUX_AMD64" ./src/d2/ci/release/docker/build.sh \
|
||||||
flags='--push --platform linux/amd64,linux/arm64'
|
${PUSH_DOCKER:+--push} \
|
||||||
fi
|
${LATEST_DOCKER:+--latest}
|
||||||
sh_c rsync --archive --human-readable ./ci/release/Dockerfile_entrypoint.sh "./ci/release/build/$VERSION"
|
|
||||||
sh_c docker buildx build $flags -t "$D2_DOCKER_IMAGE:$VERSION" -t "$D2_DOCKER_IMAGE:latest" --build-arg "VERSION=$VERSION" -f ./ci/release/Dockerfile "./ci/release/build/$VERSION"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build_windows_msi() {
|
build_windows_msi() {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ RUN curl -fsSL "https://github.com/boxboat/fixuid/releases/download/v0.5/fixuid-
|
||||||
&& printf "user: debian\ngroup: debian\npaths: [/home/debian]\n" > /etc/fixuid/config.yml
|
&& printf "user: debian\ngroup: debian\npaths: [/home/debian]\n" > /etc/fixuid/config.yml
|
||||||
|
|
||||||
COPY ./d2-*-linux-$TARGETARCH.tar.gz /tmp
|
COPY ./d2-*-linux-$TARGETARCH.tar.gz /tmp
|
||||||
ADD ./Dockerfile_entrypoint.sh /usr/local/bin/entrypoint.sh
|
ADD ./entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||||
RUN mkdir -p /usr/local/lib/d2 \
|
RUN mkdir -p /usr/local/lib/d2 \
|
||||||
&& tar -C /usr/local/lib/d2 -xzf /tmp/d2-*-linux-"$TARGETARCH".tar.gz \
|
&& tar -C /usr/local/lib/d2 -xzf /tmp/d2-*-linux-"$TARGETARCH".tar.gz \
|
||||||
&& /usr/local/lib/d2/d2-*/scripts/install.sh \
|
&& /usr/local/lib/d2/d2-*/scripts/install.sh \
|
||||||
57
ci/release/docker/build.sh
Executable file
57
ci/release/docker/build.sh
Executable file
|
|
@ -0,0 +1,57 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
. "$(dirname "$0")/../../../ci/sub/lib.sh"
|
||||||
|
cd -- "$(dirname "$0")/../../.."
|
||||||
|
|
||||||
|
help() {
|
||||||
|
cat <<EOF
|
||||||
|
usage: $0 [-p|--push] [--latest] [
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
while flag_parse "$@"; do
|
||||||
|
case "$FLAG" in
|
||||||
|
h|help)
|
||||||
|
help
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
p|push)
|
||||||
|
flag_noarg && shift "$FLAGSHIFT"
|
||||||
|
PUSH=1
|
||||||
|
;;
|
||||||
|
latest)
|
||||||
|
flag_noarg && shift "$FLAGSHIFT"
|
||||||
|
LATEST=1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
flag_errusage "unrecognized flag $FLAGRAW"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift "$FLAGSHIFT"
|
||||||
|
|
||||||
|
if [ -z "${VERSION-}" ]; then
|
||||||
|
VERSION=$(readlink ./ci/release/build/latest)
|
||||||
|
fi
|
||||||
|
D2_DOCKER_IMAGE=${D2_DOCKER_IMAGE:-terrastruct/d2}
|
||||||
|
|
||||||
|
sh_c mkdir -p "./ci/release/build/$VERSION/docker"
|
||||||
|
sh_c cp "./ci/release/build/$VERSION/d2-$VERSION"-linux-*.tar.gz "./ci/release/build/$VERSION/docker/"
|
||||||
|
sh_c cp ./ci/release/docker/entrypoint.sh "./ci/release/build/$VERSION/docker/entrypoint.sh"
|
||||||
|
|
||||||
|
flags='--load'
|
||||||
|
if [ -n "${PUSH-}" -o -n "${RELEASE-}" ]; then
|
||||||
|
flags='--push --platform linux/amd64,linux/arm64'
|
||||||
|
fi
|
||||||
|
if [ -n "${LATEST-}" -o -n "${RELEASE-}" ]; then
|
||||||
|
flags="$flags -t $D2_DOCKER_IMAGE:latest"
|
||||||
|
fi
|
||||||
|
sh_c docker buildx build $flags \
|
||||||
|
-t "$D2_DOCKER_IMAGE:$VERSION" \
|
||||||
|
--build-arg "VERSION=$VERSION" \
|
||||||
|
-f ./ci/release/docker/Dockerfile "./ci/release/build/$VERSION/docker"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
Loading…
Reference in a new issue