Skip to content

Commit 9c21936

Browse files
committed
Merge branch 'multi-arch'
Signed-off-by: Rishabh Gupta<r.g.gupta@outlook.com>
2 parents 5fb2c4d + a009c22 commit 9c21936

File tree

3 files changed

+86
-10
lines changed

3 files changed

+86
-10
lines changed

.travis.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# sudo for docker
22
sudo: true
3+
dist: xenial
34

45
language: go
56

@@ -11,22 +12,29 @@ go:
1112
services:
1213
- docker
1314

15+
addons:
16+
apt:
17+
packages:
18+
- docker-ce
19+
1420
# Only clone the most recent commit.
1521
git:
1622
depth: 1
1723

1824
# install qemu-user before running docker build
1925
before_install:
20-
- sudo apt-get install qemu binfmt-support qemu-user-static -y
26+
- sudo docker run --privileged linuxkit/binfmt:v0.6
27+
- sudo docker run -d --privileged -p 1234:1234 --name buildkit moby/buildkit:latest --addr tcp://0.0.0.0:1234 --oci-worker-platform linux/amd64 --oci-worker-platform linux/armhf
28+
- sudo docker cp buildkit:/usr/bin/buildctl /usr/bin/
29+
- export BUILDKIT_HOST=tcp://0.0.0.0:1234
30+
2131

2232
# Skip the install step. Don't `go get` dependencies. Only build with the code
2333
# in vendor/
2434
install: true
2535

2636
script:
27-
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
28-
- docker build .
29-
- docker build -f Dockerfile.armhf .
37+
- bash ./travis/build.sh
3038

3139
deploy:
3240
provider: script

travis/build.sh

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env bash
2+
3+
# Login into docker
4+
docker login --username $DOCKER_USER --password $DOCKER_PASSWORD
5+
6+
# Build for amd64 and push
7+
buildctl build --frontend dockerfile.v0 \
8+
--local dockerfile=. \
9+
--local context=. \
10+
--exporter image \
11+
--exporter-opt name=docker.io/zeerorg/cron-connector:test-build-amd64 \
12+
--exporter-opt push=true \
13+
--frontend-opt platform=linux/amd64 \
14+
--frontend-opt filename=./Dockerfile
15+
16+
17+
# Build for armhf and push
18+
buildctl build --frontend dockerfile.v0 \
19+
--local dockerfile=. \
20+
--local context=. \
21+
--exporter image \
22+
--exporter-opt name=docker.io/zeerorg/cron-connector:test-build-armhf \
23+
--exporter-opt push=true \
24+
--frontend-opt platform=linux/armhf \
25+
--frontend-opt filename=./Dockerfile.armhf
26+
27+
28+
export DOCKER_CLI_EXPERIMENTAL=enabled
29+
30+
# Create manifest list and push that
31+
docker manifest create zeerorg/cron-connector:test-build \
32+
zeerorg/cron-connector:test-build-amd64 \
33+
zeerorg/cron-connector:test-build-armhf
34+
35+
docker manifest annotate zeerorg/cron-connector:test-build zeerorg/cron-connector:test-build-armhf --arch arm
36+
docker manifest annotate zeerorg/cron-connector:test-build zeerorg/cron-connector:test-build-amd64 --arch amd64
37+
38+
docker manifest push zeerorg/cron-connector:test-build

travis/deploy.sh

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,38 @@
1-
#!/bin/bash
1+
#!/usr/bin/env bash
22

3-
docker run --rm --privileged multiarch/qemu-user-static:register --reset
3+
# Login into docker
44
docker login --username $DOCKER_USER --password $DOCKER_PASSWORD
5-
docker build -t zeerorg/cron-connector:$TRAVIS_TAG .
6-
docker push zeerorg/cron-connector:$TRAVIS_TAG
7-
docker build -t zeerorg/cron-connector:$TRAVIS_TAG-arm -f Dockerfile.armhf .
8-
docker push zeerorg/cron-connector:$TRAVIS_TAG-arm
5+
6+
# Build for amd64 and push
7+
buildctl build --frontend dockerfile.v0 \
8+
--local dockerfile=. \
9+
--local context=. \
10+
--exporter image \
11+
--exporter-opt name=docker.io/zeerorg/cron-connector:${TRAVIS_TAG}-amd64 \
12+
--exporter-opt push=true \
13+
--frontend-opt platform=linux/amd64 \
14+
--frontend-opt filename=./Dockerfile
15+
16+
17+
# Build for armhf and push
18+
buildctl build --frontend dockerfile.v0 \
19+
--local dockerfile=. \
20+
--local context=. \
21+
--exporter image \
22+
--exporter-opt name=docker.io/zeerorg/cron-connector:${TRAVIS_TAG}-arm \
23+
--exporter-opt push=true \
24+
--frontend-opt platform=linux/armhf \
25+
--frontend-opt filename=./Dockerfile.armhf
26+
27+
28+
export DOCKER_CLI_EXPERIMENTAL=enabled
29+
30+
# Create manifest list and push that
31+
docker manifest create zeerorg/cron-connector:${TRAVIS_TAG} \
32+
zeerorg/cron-connector:${TRAVIS_TAG}-amd64 \
33+
zeerorg/cron-connector:${TRAVIS_TAG}-arm
34+
35+
docker manifest annotate zeerorg/cron-connector:${TRAVIS_TAG} zeerorg/cron-connector:${TRAVIS_TAG}-arm --arch arm
36+
docker manifest annotate zeerorg/cron-connector:${TRAVIS_TAG} zeerorg/cron-connector:${TRAVIS_TAG}-amd64 --arch amd64
37+
38+
docker manifest push zeerorg/cron-connector:${TRAVIS_TAG}

0 commit comments

Comments
 (0)