sudo: true language: python services: - docker env: global: - PROJECT=aqara-mqtt - IMAGE_NAME=$DOCKER_USERNAME/$PROJECT - VERSION=$(cat .semver) - MAJOR=$(cut -d. -f1 .semver) - MINOR=$(cut -d. -f2 .semver) - PATCH=$(cut -d. -f3 .semver) cache: bundler: true directories: - $HOME/docker jobs: include: - stage: build x64 image before_script: - ARCH=x64 script: # build - docker build -t $PROJECT -f Dockerfile-$ARCH . # push image - > if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" #1.0.0-arch docker tag $PROJECT $IMAGE_NAME:$VERSION-$ARCH docker push $IMAGE_NAME:$VERSION-$ARCH #1.0-arch docker tag $PROJECT $IMAGE_NAME:$MAJOR.$MINOR-$ARCH docker push $IMAGE_NAME:$MAJOR.$MINOR-$ARCH #1-arch docker tag $PROJECT $IMAGE_NAME:$MAJOR-$ARCH docker push $IMAGE_NAME:$MAJOR-$ARCH #latest by arch docker tag $PROJECT $IMAGE_NAME:$ARCH docker push $IMAGE_NAME:$ARCH fi - stage: build i386 image before_script: - ARCH=i386 script: # build - docker build -t $PROJECT -f Dockerfile-$ARCH . # push image - > if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" #1.0.0-arch docker tag $PROJECT $IMAGE_NAME:$VERSION-$ARCH docker push $IMAGE_NAME:$VERSION-$ARCH #1.0-arch docker tag $PROJECT $IMAGE_NAME:$MAJOR.$MINOR-$ARCH docker push $IMAGE_NAME:$MAJOR.$MINOR-$ARCH #1-arch docker tag $PROJECT $IMAGE_NAME:$MAJOR-$ARCH docker push $IMAGE_NAME:$MAJOR-$ARCH #latest by arch docker tag $PROJECT $IMAGE_NAME:$ARCH docker push $IMAGE_NAME:$ARCH fi - stage: build armhf image before_script: - ARCH=armhf before_cache: # Save tagged docker images - > mkdir -p $HOME/docker && docker images -a --format '{{.Repository}}:{{.Tag}} {{.ID}}' | xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz' before_install: # Load cached docker images - if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi script: # prepare qemu - docker run --rm --privileged multiarch/qemu-user-static:register --reset # get qemu-arm-static binary - > mkdir tmp && pushd tmp && curl -L -o qemu-arm-static.tar.gz https://github.com/multiarch/qemu-user-static/releases/download/v2.6.0/qemu-arm-static.tar.gz && tar xzf qemu-arm-static.tar.gz && popd #copy it to container - sed -i -e '2iCOPY tmp/qemu-arm-static /usr/bin/qemu-arm-static\' Dockerfile-$ARCH # build - docker build -t $PROJECT -f Dockerfile-$ARCH . # push image - > if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" #1.0.0-arch docker tag $PROJECT $IMAGE_NAME:$VERSION-$ARCH docker push $IMAGE_NAME:$VERSION-$ARCH #1.0-arch docker tag $PROJECT $IMAGE_NAME:$MAJOR.$MINOR-$ARCH docker push $IMAGE_NAME:$MAJOR.$MINOR-$ARCH #1-arch docker tag $PROJECT $IMAGE_NAME:$MAJOR-$ARCH docker push $IMAGE_NAME:$MAJOR-$ARCH #latest by arch docker tag $PROJECT $IMAGE_NAME:$ARCH docker push $IMAGE_NAME:$ARCH fi