Skip to content

Commit

Permalink
Create and push Docker manifest in a new stage
Browse files Browse the repository at this point in the history
  • Loading branch information
hligit committed Nov 23, 2020
1 parent d1a9518 commit 1b66428
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 14 deletions.
14 changes: 12 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ go:
- "1.13.6" # Keep in sync with Makefile and README.md

arch:
- amd64
- arm64
- amd64
- arm64


dist: bionic
os: linux
Expand All @@ -19,6 +20,15 @@ jobs:
arch: amd64
- os: linux
arch: arm64
- stage: Push Docker manifest
env:
- DOCKER_CLI_EXPERIMENTAL=enabled
script:
- if [ "$TRAVIS_OS_NAME" == "linux" -a ! -z "$TRAVIS_TAG" ]; then
echo "Executing release-manifest on tag build $TRAVIS_TAG";
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD";
make release-manifest;
fi

before_install:
- go get -v github.com/mattn/goveralls
Expand Down
23 changes: 11 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -142,38 +142,37 @@ docker-symbols: pb/gostatsd.pb.go

release-hash: docker
docker push $(IMAGE_NAME):$(GIT_HASH)
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a $(MANIFEST_NAME):$(GIT_HASH) $(IMAGE_NAME):$(GIT_HASH)
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push $(MANIFEST_NAME):$(GIT_HASH)

release-normal: release-hash
docker tag $(IMAGE_NAME):$(GIT_HASH) $(IMAGE_NAME):latest
docker push $(IMAGE_NAME):latest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a $(MANIFEST_NAME):latest $(IMAGE_NAME):latest
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push $(MANIFEST_NAME):latest
docker tag $(IMAGE_NAME):$(GIT_HASH) $(IMAGE_NAME):$(REPO_VERSION)
docker push $(IMAGE_NAME):$(REPO_VERSION)
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a $(MANIFEST_NAME):$(REPO_VERSION) $(IMAGE_NAME):$(REPO_VERSION)
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push $(MANIFEST_NAME):$(REPO_VERSION)

release-hash-race: docker-race
docker push $(IMAGE_NAME):$(GIT_HASH)-race
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a $(MANIFEST_NAME):$(GIT_HASH)-race $(IMAGE_NAME):$(GIT_HASH)-race
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push $(MANIFEST_NAME):$(GIT_HASH)-race

release-race: docker-race
docker tag $(IMAGE_NAME):$(GIT_HASH)-race $(IMAGE_NAME):$(REPO_VERSION)-race
docker push $(IMAGE_NAME):$(REPO_VERSION)-race
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a $(MANIFEST_NAME):$(REPO_VERSION)-race $(IMAGE_NAME):$(REPO_VERSION)-race
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push $(MANIFEST_NAME):$(REPO_VERSION)-race

release-symbols: docker-symbols
docker tag $(IMAGE_NAME):$(GIT_HASH)-syms $(IMAGE_NAME):$(REPO_VERSION)-syms
docker push $(IMAGE_NAME):$(REPO_VERSION)-syms
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a $(MANIFEST_NAME):$(REPO_VERSION)-syms $(IMAGE_NAME):$(REPO_VERSION)-syms
DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push $(MANIFEST_NAME):$(REPO_VERSION)-syms

release: release-normal release-race release-symbols

release-manifest:
for tag in latest $(REPO_VERSION) $(GIT_HASH)-race $(REPO_VERSION)-race $(REPO_VERSION)-syms; do \
for arch in amd64 arm64; do \
docker pull $(MANIFEST_NAME)-$$arch:$$tag; \
done; \
docker manifest create $(MANIFEST_NAME):$$tag --amend \
$(MANIFEST_NAME)-amd64:$$tag \
$(MANIFEST_NAME)-arm64:$$tag; \
docker manifest push $(MANIFEST_NAME):$$tag; \
done

run: build
./build/bin/$(ARCH)/$(BINARY_NAME) --backends=stdout --verbose --flush-interval=2s

Expand Down

0 comments on commit 1b66428

Please sign in to comment.