refactor: rename and enable experimental.

This commit is contained in:
Fernandez Ludovic 2019-04-27 18:44:12 +02:00
parent 3885bbcd23
commit 5d60b5baae
2 changed files with 38 additions and 25 deletions

View File

@ -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

View File

@ -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}"