refactor: rename and enable experimental.
This commit is contained in:
parent
3885bbcd23
commit
5d60b5baae
6
Makefile
6
Makefile
@ -16,7 +16,11 @@ clean:
|
|||||||
|
|
||||||
build: clean
|
build: clean
|
||||||
@echo Version: $(VERSION) $(BUILD_DATE)
|
@echo Version: $(VERSION) $(BUILD_DATE)
|
||||||
go build -v -ldflags '-X "github.com/ldez/traefik-certs-dumper/cmd.version=${VERSION}" -X "github.com/ldez/traefik-certs-dumper/cmd.commit=${SHA}" -X "github.com/ldez/traefik-certs-dumper/cmd.date=${BUILD_DATE}"'
|
go build -v -ldflags '-X "github.com/ldez/traefik-certs-dumper/cmd.version=${VERSION}" -X "github.com/ldez/traefik-certs-dumper/cmd.commit=${SHA}" -X "github.com/ldez/traefik-certs-dumper/cmd.date=${BUILD_DATE}"' -o traefik-certs-dumper
|
||||||
|
|
||||||
checks:
|
checks:
|
||||||
golangci-lint run
|
golangci-lint run
|
||||||
|
|
||||||
|
publish-images:
|
||||||
|
VERSION=$(TAG_NAME) ./build-docker.sh
|
||||||
|
VERSION="latest" ./build-docker.sh
|
||||||
|
|||||||
@ -1,23 +1,33 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
set -ex
|
|
||||||
|
|
||||||
# base docker image tag
|
set -o errexit
|
||||||
TAG="andig/traefik-certs-dumper"
|
set -o pipefail
|
||||||
|
|
||||||
|
# safe guard
|
||||||
|
if [ -n "$TRAVIS_TAG" ] && [ -n "$VERSION" ]; then
|
||||||
|
echo "Deploying..."
|
||||||
|
else
|
||||||
|
echo "Skipping deploy"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# base docker image name
|
||||||
|
IMAGE_NAME="ldez/traefik-certs-dumper"
|
||||||
|
|
||||||
# only linux for now
|
# only linux for now
|
||||||
OS=linux
|
OS=linux
|
||||||
|
|
||||||
# target platforms in docker manifest notation
|
# target platforms in docker manifest notation
|
||||||
declare -a PLATFORMS=( "amd64" "arm.v6" )
|
declare -a PLATFORMS=( "amd64" "arm.v6" "arm.v7")
|
||||||
|
|
||||||
# images from Dockerfile
|
# images from Dockerfile
|
||||||
IMAGE=$(grep "{RUNTIME_HASH}" < Dockerfile | sed "s/FROM //" | sed 's/\$.*//')
|
FROM_IMAGE=$(grep "{RUNTIME_HASH}" < Dockerfile | sed "s/FROM //" | sed 's/\$.*//')
|
||||||
|
|
||||||
# manifest cache file
|
# manifest cache file
|
||||||
MANIFEST_FILE=/tmp/manifest.$IMAGE.json
|
MANIFEST_FILE=/tmp/tcd-manifest.${FROM_IMAGE}.json
|
||||||
|
|
||||||
# get platform image hash from docker manifest
|
# get platform image hash from docker manifest
|
||||||
function hash () {
|
function platformHash () {
|
||||||
local ARCHITECTURE VARIANT HASH
|
local ARCHITECTURE VARIANT HASH
|
||||||
read -r ARCHITECTURE VARIANT <<< "$@"
|
read -r ARCHITECTURE VARIANT <<< "$@"
|
||||||
|
|
||||||
@ -32,34 +42,32 @@ function hash () {
|
|||||||
|
|
||||||
# get manifest
|
# get manifest
|
||||||
if [ ! -f "$MANIFEST_FILE" ]; then
|
if [ ! -f "$MANIFEST_FILE" ]; then
|
||||||
docker pull "$IMAGE"
|
docker pull "$FROM_IMAGE"
|
||||||
docker manifest inspect "$IMAGE" > "$MANIFEST_FILE"
|
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest inspect "$FROM_IMAGE" > "$MANIFEST_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# main
|
# create and push images
|
||||||
for platform in "${PLATFORMS[@]}"; do
|
for platform in "${PLATFORMS[@]}"; do
|
||||||
# split architecture.version
|
# split architecture.version
|
||||||
IFS='.' read -r ARCHITECTURE VARIANT <<< "$platform"
|
IFS='.' read -r ARCHITECTURE VARIANT <<< "$platform"
|
||||||
|
|
||||||
# add xargs to trim whitespace
|
# add xargs to trim whitespace
|
||||||
RUNTIME_HASH=$(hash "$ARCHITECTURE" "$VARIANT")
|
RUNTIME_HASH=$(platformHash "$ARCHITECTURE" "$VARIANT")
|
||||||
|
|
||||||
# arm architectures flavors, strip "v" prefix
|
# arm architectures flavors, strip "v" prefix
|
||||||
GOARM=${VARIANT:1}
|
GOARM=${VARIANT:1}
|
||||||
|
|
||||||
# build for target runtime image and architecture
|
# build for target runtime image and architecture
|
||||||
docker build --build-arg RUNTIME_HASH=@${RUNTIME_HASH} --build-arg GOARCH=${ARCHITECTURE} --build-arg GOARM=${GOARM} -t "$TAG:latest-$platform" .
|
docker build --build-arg="RUNTIME_HASH=@${RUNTIME_HASH}" --build-arg="GOARCH=${ARCHITECTURE}" --build-arg="GOARM=${GOARM}" -t "$IMAGE_NAME:${VERSION}-$platform" .
|
||||||
done
|
|
||||||
|
|
||||||
# push images
|
# push images
|
||||||
for platform in "${PLATFORMS[@]}"; do
|
docker push "$IMAGE_NAME:${VERSION}-$platform"
|
||||||
docker push "$TAG:latest-$platform"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# create manifest
|
# create manifest
|
||||||
TAG_LIST=$(printf "$TAG:latest-%s " "${PLATFORMS[@]}")
|
TAG_LIST=$(printf "$IMAGE_NAME:${VERSION}-%s " "${PLATFORMS[@]}")
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
docker manifest create --amend "$TAG:latest" $TAG_LIST
|
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create --amend "$IMAGE_NAME:${VERSION}" $TAG_LIST
|
||||||
|
|
||||||
for platform in "${PLATFORMS[@]}"; do
|
for platform in "${PLATFORMS[@]}"; do
|
||||||
# split architecture.version
|
# split architecture.version
|
||||||
@ -70,7 +78,8 @@ for platform in "${PLATFORMS[@]}"; do
|
|||||||
VARIANT="$ARCHITECTURE$VARIANT"
|
VARIANT="$ARCHITECTURE$VARIANT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker manifest annotate "$TAG:latest" "$TAG:latest-$platform" --os "$OS" --arch "$ARCHITECTURE" --variant "$VARIANT"
|
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate "$IMAGE_NAME:${VERSION}" "$IMAGE_NAME:${VERSION}-$platform" --os "$OS" --arch "$ARCHITECTURE" --variant "$VARIANT"
|
||||||
done
|
done
|
||||||
|
|
||||||
docker manifest push "$TAG:latest"
|
# push manifest
|
||||||
|
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$IMAGE_NAME:${VERSION}"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user