fix: broken release pipeline on docker push

This commit is contained in:
Julian Tölle 2023-04-02 14:58:22 +02:00
parent 070d4996f4
commit 30e8cbf250
2 changed files with 30 additions and 18 deletions

View file

@ -11,16 +11,7 @@ plugins:
- npmPublish: false - npmPublish: false
- - "@semantic-release/exec" - - "@semantic-release/exec"
- prepareCmd: | - prepareCmd: |
# Build Docker Container hack/build-docker-image.sh prepare ${nextRelease.version}
# Build now but dont push; this validates that the image builds
# successfully and we can later re-use the cached build results to
# push in "publish" stage
docker buildx build \
-t apricote/listory \
--build-arg VERSION=${nextRelease.version} \
--build-arg GIT_COMMIT=`git rev-parse HEAD` \
--platform=linux/amd64,linux/arm64 \
.
# Update version in Helm Chart # Update version in Helm Chart
CHART_FILE=charts/listory/Chart.yaml CHART_FILE=charts/listory/Chart.yaml
@ -40,14 +31,7 @@ plugins:
docker-compose.prod.yml docker-compose.prod.yml
publishCmd: | publishCmd: |
# Build (with cache) & push Docker Images hack/build-docker-image.sh publish ${nextRelease.version}
docker buildx build \
-t apricote/listory:${nextRelease.version} \
-t apricote/listory:latest \
--build-arg VERSION=${nextRelease.version} \
--build-arg GIT_COMMIT=`git rev-parse HEAD` \
--platform=linux/amd64,linux/arm64 \
--push \
- - "@semantic-release/git" - - "@semantic-release/git"
- assets: - assets:

28
hack/build-docker-image.sh Executable file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
set -o pipefail
set -e
PREPARE_OR_PUBLISH="$1"
VERSION="$2"
REPO="apricote/listory"
PLATFORMS="--platform=linux/amd64,linux/arm64"
TAGS="--tag ${REPO}:${VERSION} --tag ${REPO}:latest"
ARGS="--build-arg VERSION=${VERSION} --build-arg GIT_COMMIT=`git rev-parse HEAD`"
CACHE=""
PUSH=""
# We "build" the image twice, once in "prepare" and then again in "publish" stage.
# - Prepare makes sure that the image is buildable and utilizes the remote cache.
# - Publish utilizes the local cache from prepare stage and pushes the image.
if [ "$PREPARE_OR_PUBLISH" = "prepare" ]; then
CACHE="--cache-from=type=registry,ref=${REPO}:buildcache --cache-to=type=registry,ref=${REPO}:buildcache"
else
# Uses local buildkit cache
PUSH="--push"
fi
docker buildx build $PLATFORMS $TAGS $ARGS $CACHE $PUSH .