特拉维斯多建筑大楼

Ken*_*n J 3 travis-ci docker

我有一个正在尝试为arm和x86_64构建的项目。

x86_64构建通过,但手臂构建因以下原因而失败:

Status: Downloaded newer image for kutsudock/rpi-alpine-go:latest
standard_init_linux.go:175: exec user process caused "exec format error"
Run Code Online (Sandbox Code Playgroud)

这是我的yaml:

env:
  global:
    - VERSION=1.${TRAVIS_BUILD_NUMBER}
  matrix:
    - ARCH=x86_64
      GOIMG=golang:1.6
      DOCKER_BUILD=mastermindg/docker-flow-proxy:${VERSION}
      DOCKERFILE=Dockerfile.amd64
    - ARCH=rpi
      GOIMG=kutsudock/rpi-alpine-go
      DOCKER_BUILD=mastermindg/docker-flow-proxy:rpi-${VERSION}
      DOCKERFILE=Dockerfile.rpi

sudo: required

services:
  - docker

script:
  - docker run --rm -v $PWD:/usr/src/myapp -w /usr/src/myapp -v go:/go ${GOIMG} bash -c "cd /usr/src/myapp && go get -d -v -t && go test --cover -v ./... --run UnitTest && go build -v -o docker-flow-proxy"

after_success:
  - docker build -t ${DOCKER_BUILD} -f ${DOCKERFILE} .
  - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && docker login -e $DOCKER_EMAIL -u $DOCKER_USERNAME -p $DOCKER_PASSWORD || false'
  - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && docker push ${DOCKER_BUILD} || false'

branches:
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

我如何才能在Travis上构建手臂Docker映像?

use*_*045 5

查看Travis之后,我发现了这个问题:

https://github.com/travis-ci/travis-ci/issues/3376

感谢@ moul,Debian有了一个多体系结构的引导程序。在您的Docker运行之前,只需注册qemu即可!

在您的情况下:

docker run --rm --privileged multiarch/qemu-user-static:register
docker run --rm -v $PWD:/usr/src/myapp -w /usr/src/myapp -v go:/go ${GOIMG} bash -c "cd /usr/src/myapp && go get -d -v -t && go test --cover -v ./... --run UnitTest && go build -v -o docker-flow-proxy"
Run Code Online (Sandbox Code Playgroud)