Skip to content

Commit d82b395

Browse files
committed
Add multi arch build
1 parent a625f2b commit d82b395

File tree

3 files changed

+52
-39
lines changed

3 files changed

+52
-39
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
node_modules/
22
coverage/
3-
.vscode/
3+
.vscode/
4+
.idea/

.travis.yml

+36-38
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,56 @@
1-
sudo: required
2-
3-
arch:
4-
- amd64
5-
- arm64
1+
language: shell
2+
os: linux
63

74
env:
85
global:
6+
- NODE_VERSION=12
97
- CC_TEST_REPORTER_ID=054a8c4f2007b9299933b67221504554462eed6cbb06c364c926a9869dfd4020
8+
- DOCKER_CLI_EXPERIMENTAL=enabled
9+
- IMAGE_VERSION=latest
1010

11-
language: node_js
12-
node_js:
13-
- "12"
14-
15-
services:
16-
- docker
11+
before_install:
1712

18-
install:
19-
- npm ci
13+
# Install docker with buildx
14+
- sudo rm -rf /var/lib/apt/lists/*
15+
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
16+
- lsb_release -cs
17+
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) edge"
18+
- sudo apt-get update
19+
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
20+
#- docker run --rm --privileged multiarch/qemu-user-static:register --reset
21+
- docker run --rm --privileged docker/binfmt:820fdd95a9972a5308930a2bdfb8573dd4447ad3
22+
- cat /proc/sys/fs/binfmt_misc/qemu-aarch64
2023

21-
before_script:
24+
# Install Nodejs
25+
- nvm install $NODE_VERSION
2226

2327
# Init Code Climate
24-
- if [ "$TRAVIS_CPU_ARCH" == "amd64" ]; then
25-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter;
26-
chmod +x ./cc-test-reporter;
27-
./cc-test-reporter before-build;
28-
fi
28+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
29+
- chmod +x ./cc-test-reporter
30+
- ./cc-test-reporter before-build
2931

3032
script:
3133

34+
# Install npm dependencies
35+
- npm ci
36+
3237
# Run Linter
3338
- npm run lint
3439

3540
# Run Unit tests
3641
- npm test
3742

43+
# Report to Code Climate
44+
- ./cc-test-reporter after-build -t lcov --debug --exit-code $TRAVIS_TEST_RESULT;
45+
3846
after_script:
3947

40-
# Report to Code Climate
41-
- if [ "$TRAVIS_CPU_ARCH" == "amd64" ]; then
42-
./cc-test-reporter after-build -t lcov --debug --exit-code $TRAVIS_TEST_RESULT;
43-
fi
44-
45-
# Build docker image
46-
- docker build -t $DOCKER_USERNAME/teleinfo-mqtt:$TRAVIS_BRANCH-$TRAVIS_CPU_ARCH -f Dockerfile .
47-
48-
# Tag or master branch? -> push
49-
- if [ ! -z "$TRAVIS_TAG" ] || [ "$TRAVIS_BRANCH" == "master" ] ; then
50-
docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD";
51-
docker push $DOCKER_USERNAME/teleinfo-mqtt:$TRAVIS_BRANCH-$TRAVIS_CPU_ARCH;
52-
fi
53-
54-
# Tag? -> push tag & latest
55-
- if [ ! -z "$TRAVIS_TAG" ] ; then
56-
docker tag $DOCKER_USERNAME/teleinfo-mqtt:$TRAVIS_BRANCH-$TRAVIS_CPU_ARCH $DOCKER_USERNAME/teleinfo-mqtt:latest-$TRAVIS_CPU_ARCH;
57-
docker push $DOCKER_USERNAME/teleinfo-mqtt:latest-$TRAVIS_CPU_ARCH;
58-
fi
48+
- docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
49+
- docker version
50+
- make prepare
51+
52+
# Override image version with tag name if any
53+
- if [ ! -z "$TRAVIS_TAG" ] ; then export IMAGE_VERSION=latest; fi
54+
55+
# Buils & push image
56+
- make build IMAGE_NAME=$DOCKER_USERNAME/teleinfo-mqtt IMAGE_VERSION=$IMAGE_VERSION

Makefile

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
BUILDX_VER=v0.3.0
2+
3+
install:
4+
mkdir -vp ~/.docker/cli-plugins/ ~/dockercache
5+
curl --silent -L "https://github.com/docker/buildx/releases/download/${BUILDX_VER}/buildx-${BUILDX_VER}.linux-amd64" > ~/.docker/cli-plugins/docker-buildx
6+
chmod a+x ~/.docker/cli-plugins/docker-buildx
7+
8+
prepare: install
9+
docker buildx create --use
10+
11+
build:
12+
docker buildx build --push \
13+
--platform linux/arm/v7,linux/arm64/v8,linux/386,linux/amd64 \
14+
-t ${IMAGE_NAME}:${IMAGE_VERSION} .

0 commit comments

Comments
 (0)