Skip to content
This repository was archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
tox.ini: Restructure docker image:tag construction, add multiarch for…
Browse files Browse the repository at this point in the history
… Linux Docker
  • Loading branch information
Matthias Koeppe committed Mar 2, 2020
1 parent e941bd5 commit 2441fe9
Showing 1 changed file with 71 additions and 45 deletions.
116 changes: 71 additions & 45 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -57,79 +57,102 @@ setenv =
debian: EXTRA_CONFIGURE_ARGS=--with-system-m4ri=no --with-system-m4rie=no --with-system-givaro=no
fedora: EXTRA_CONFIGURE_ARGS=--with-system-m4ri=no --with-system-m4rie=no
#
# default tag is "latest"
#
docker: BASE_TAG=latest
#
# https://hub.docker.com/_/ubuntu?tab=description
# as of 2020-01, latest=bionic=18.04, eoan=rolling=19.10, focal=devel=20.04
#
ubuntu: SYSTEM=debian
ubuntu-trusty: BASE_IMAGE=ubuntu:trusty
ubuntu: BASE_IMAGE=ubuntu
ubuntu-trusty: BASE_TAG=trusty
ubuntu-trusty: IGNORE_MISSING_SYSTEM_PACKAGES=yes
ubuntu-xenial: BASE_IMAGE=ubuntu:xenial
ubuntu-xenial: BASE_TAG=xenial
ubuntu-xenial: IGNORE_MISSING_SYSTEM_PACKAGES=yes
ubuntu-bionic: BASE_IMAGE=ubuntu:bionic
ubuntu-latest: BASE_IMAGE=ubuntu:latest
ubuntu-eoan: BASE_IMAGE=ubuntu:eoan
ubuntu-rolling: BASE_IMAGE=ubuntu:rolling
ubuntu-focal: BASE_IMAGE=ubuntu:focal
ubuntu-devel: BASE_IMAGE=ubuntu:devel
ubuntu-bionic: BASE_TAG=bionic
ubuntu-latest: BASE_TAG=latest
ubuntu-eoan: BASE_TAG=eoan
ubuntu-rolling: BASE_TAG=rolling
ubuntu-focal: BASE_TAG=focal
ubuntu-devel: BASE_TAG=devel
#
# https://hub.docker.com/_/debian
#
debian: SYSTEM=debian
debian-jessie: BASE_IMAGE=debian:jessie
debian-jessie: IGNORE_MISSING_SYSTEM_PACKAGES=yes
debian-stretch: BASE_IMAGE=debian:stretch
debian-buster: BASE_IMAGE=debian:buster
debian-bullseye: BASE_IMAGE=debian:bullseye
debian-sid: BASE_IMAGE=debian:sid
debian: SYSTEM=debian
debian: BASE_IMAGE=debian
debian-jessie: BASE_TAG=jessie
debian-jessie: IGNORE_MISSING_SYSTEM_PACKAGES=yes
debian-stretch: BASE_TAG=stretch
debian-buster: BASE_TAG=buster
debian-bullseye: BASE_TAG=bullseye
debian-sid: BASE_TAG=sid
#
# https://hub.docker.com/_/fedora
#
fedora: SYSTEM=fedora
fedora-26: BASE_IMAGE=fedora:26
fedora-26: IGNORE_MISSING_SYSTEM_PACKAGES=yes
fedora-27: BASE_IMAGE=fedora:27
fedora-28: BASE_IMAGE=fedora:28
fedora-29: BASE_IMAGE=fedora:29
fedora-30: BASE_IMAGE=fedora:30
fedora-31: BASE_IMAGE=fedora:31 # latest
fedora-32: BASE_IMAGE=fedora:32 # rawhide
fedora: SYSTEM=fedora
fedora: BASE_IMAGE=fedora
fedora-26: BASE_TAG=26
fedora-26: IGNORE_MISSING_SYSTEM_PACKAGES=yes
fedora-27: BASE_TAG=27
fedora-28: BASE_TAG=28
fedora-29: BASE_TAG=29
fedora-30: BASE_TAG=30
fedora-31: BASE_TAG=31 # latest
fedora-32: BASE_TAG=32 # rawhide
#
# https://hub.docker.com/_/centos
#
centos: SYSTEM=fedora
centos: IGNORE_MISSING_SYSTEM_PACKAGES=yes
#centos-6: BASE_IMAGE=centos:centos6 # only has autoconf 2.63 -- too old for bootstrap
centos-7: BASE_IMAGE=centos:centos7
centos-8: BASE_IMAGE=centos:centos8
centos: SYSTEM=fedora
centos: BASE_IMAGE=centos
centos: IGNORE_MISSING_SYSTEM_PACKAGES=yes
#centos-6: BASE_TAG=centos6 # only has autoconf 2.63 -- too old for bootstrap
centos-7: BASE_TAG=centos7
centos-8: BASE_TAG=centos8
#
# https://hub.docker.com/_/archlinux/
#
archlinux: SYSTEM=arch
archlinux-latest: BASE_IMAGE=archlinux:latest
archlinux: SYSTEM=arch
archlinux: BASE_IMAGE=archlinux
#
# https://hub.docker.com/r/continuumio
#
conda: SYSTEM=conda
conda-forge: BASE_IMAGE=continuumio/miniconda3:latest
conda-forge: BASE_IMAGE=continuumio/miniconda3
conda-forge: CONDARC=condarc.yml
conda-anaconda3: BASE_IMAGE=continuumio/anaconda3:latest
conda-anaconda3: BASE_IMAGE=continuumio/anaconda3
conda-anaconda3: CONDARC=/dev/null
conda-anaconda3: IGNORE_MISSING_SYSTEM_PACKAGES=yes
#
# Other architectures
# Other architectures:
#
# Many docker images for another architecture are named the same, in the arch prefix.
# All work for Docker on Mac; but only i386 works for Linux Docker.
#
arm32v5: ARCH_IMAGE_PREFIX=arm32v5/
arm32v6: ARCH_IMAGE_PREFIX=arm32v6/
arm32v7: ARCH_IMAGE_PREFIX=arm32v7/
arm64v8: ARCH_IMAGE_PREFIX=arm64v8/
i386: ARCH_IMAGE_PREFIX=i386/
ppc64le: ARCH_IMAGE_PREFIX=ppc64le/
s390x: ARCH_IMAGE_PREFIX=s390x/
#
# For Linux Docker, we need to work with known multiarch images.
# https://www.ecliptik.com/Cross-Building-and-Running-Multi-Arch-Docker-Images/
# (or we would need to change our tests from "docker build" to "docker run")
#
ARCH_PREFIX=
arm32v5: ARCH_PREFIX=arm32v5/
arm32v6: ARCH_PREFIX=arm32v6/
arm32v7: ARCH_PREFIX=arm32v7/
arm64v8: ARCH_PREFIX=arm64v8/
i386: ARCH_PREFIX=i386/
ppc64le: ARCH_PREFIX=ppc64le/
s390x: ARCH_PREFIX=s390x/
# https://hub.docker.com/r/multiarch/ubuntu-core:
# multiarch/ubuntu-core:arm64-bionic, multiarch/ubuntu-core:armhf-bionic
ubuntu-arm64: BASE_IMAGE=ubuntu-core
ubuntu-arm64: ARCH_IMAGE_PREFIX=multiarch/
ubuntu-arm64: ARCH_TAG_PREFIX=arm64-
ubuntu-armhf: BASE_IMAGE=ubuntu-core
ubuntu-armhf: ARCH_IMAGE_PREFIX=multiarch/
ubuntu-armhf: ARCH_TAG_PREFIX=armhf-
#
# Many docker images for another architecture are named the same, in the prefix
# Resulting full image:tag name
#
docker: ARCH_BASE_IMAGE={env:ARCH_PREFIX}{env:BASE_IMAGE}
docker: FULL_BASE_IMAGE_AND_TAG={env:ARCH_IMAGE_PREFIX:}{env:BASE_IMAGE}:{env:ARCH_TAG_PREFIX:}{env:BASE_TAG}
###
### "local" envs
###
Expand All @@ -145,9 +168,12 @@ whitelist_externals =
docker
commands =
docker: bash -c 'build/bin/write-dockerfile.sh {env:SYSTEM} "{env:TYPE_PATTERN:}" {env:WITH_SYSTEM_SPKG} {env:IGNORE_MISSING_SYSTEM_PACKAGES} > {envdir}/Dockerfile'
# From https://hub.docker.com/r/multiarch/ubuntu-core/
# configure binfmt-support on the Docker host (works locally or remotely, i.e: using boot2docker)
docker-{arm64,armhf}: docker run --rm --privileged multiarch/qemu-user-static:register --reset
docker: docker build . -f {envdir}/Dockerfile \
docker: --build-arg EXTRA_CONFIGURE_ARGS="{env:EXTRA_CONFIGURE_ARGS:}" \
docker: --build-arg BASE_IMAGE={env:ARCH_BASE_IMAGE} \
docker: --build-arg BASE_IMAGE={env:FULL_BASE_IMAGE_AND_TAG} \
docker-conda: --build-arg USE_CONDARC="{env:CONDARC}" \
docker: {env:EXTRA_DOCKER_BUILD_ARGS:}

Expand Down

0 comments on commit 2441fe9

Please sign in to comment.