diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..67afb59a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,67 @@ +sudo: required + +language: generic + +services: + - docker + +env: + global: + - qemu_version=4.0.0-2 + - target_version=1.1.2 + matrix: + - target_arch=amd64 qemu_arch=x86_64 + - target_arch=armv7 qemu_arch=arm +# - target_arch=armv6 qemu_arch=arm <------ NOT SUPPORTED BY DEBIAN STRETCH BASE IMAGE + - target_arch=arm64 qemu_arch=aarch64 + +before_install: + - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" + - sudo apt-get update + - sudo apt-get -y install docker-ce + - mkdir $HOME/.docker + - 'echo "{" > $HOME/.docker/config.json' + - 'echo " \"experimental\": \"enabled\"" >> $HOME/.docker/config.json' + - 'echo "}" >> $HOME/.docker/config.json' + - sudo service docker restart + - git clone https://github.com/sstephenson/bats.git + - cd bats + - sudo ./install.sh /usr/local + - cd .. + +install: + - docker run --rm --privileged multiarch/qemu-user-static:register + - curl -sLO https://github.com/multiarch/qemu-user-static/releases/download/v${qemu_version}/qemu-${qemu_arch}-static.tar.gz; + - tar -xzvf qemu-${qemu_arch}-static.tar.gz; + - mv qemu-${qemu_arch}-static image/ + - make build ARCH=${target_arch} + +script: + - docker run -d --name test_image osixia/light-baseimage-${target_arch}:${target_version} sleep 10 + - sleep 5 + - sudo docker ps | grep -q test_image + +after_success: + - if [ -z "$DOCKER_USER" ]; then + echo "PR build, skipping Docker Hub push"; + else + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"; + make tag-latest push push-latest ARCH=${target_arch}; + fi + +jobs: + include: + - stage: deploy + install: skip + script: skip + after_success: + - if [ -z "$DOCKER_USER" ]; then + echo "PR build, skipping Docker Hub push"; + else + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"; + docker manifest create osixia/light-baseimage:${target_version} osixia/light-baseimage-armv7:${target_version} osixia/light-baseimage-arm64:${target_version} osixia/light-baseimage-amd64:${target_version}; + docker manifest create osixia/light-baseimage:latest osixia/light-baseimage-armv7:latest osixia/light-baseimage-amd64:latest osixia/light-baseimage-arm64:latest; + docker manifest push osixia/light-baseimage:${target_version}; + docker manifest push osixia/light-baseimage:latest; + fi diff --git a/Makefile b/Makefile index a4f2321f..390c2f74 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,26 @@ NAME = osixia/light-baseimage VERSION = 1.1.2 +ARCH = amd64 .PHONY: build build-nocache test tag-latest push push-latest release git-tag-version build: - docker build -t $(NAME):$(VERSION) --rm image + docker build -f image/Dockerfile.$(ARCH) -t $(NAME)-$(ARCH):$(VERSION) --rm image build-nocache: - docker build -t $(NAME):$(VERSION) --no-cache --rm image + docker build -f image/Dockerfile.$(ARCH) -t $(NAME)-$(ARCH):$(VERSION) --no-cache --rm image test: - env NAME=$(NAME) VERSION=$(VERSION) bats test/test.bats + env NAME=$(NAME)-$(ARCH) VERSION=$(VERSION) bats test/test.bats tag-latest: - docker tag $(NAME):$(VERSION) $(NAME):latest + docker tag $(NAME)-$(ARCH):$(VERSION) $(NAME)-$(ARCH):latest push: - docker push $(NAME):$(VERSION) + docker push $(NAME)-$(ARCH):$(VERSION) push-latest: - docker push $(NAME):latest + docker push $(NAME)-$(ARCH):latest release: build test tag-latest push push-latest diff --git a/image/Dockerfile.amd64 b/image/Dockerfile.amd64 new file mode 100644 index 00000000..606e2fdd --- /dev/null +++ b/image/Dockerfile.amd64 @@ -0,0 +1,12 @@ +FROM debian:stretch-slim + +#COPY qemu-x86_64-static /usr/bin + +COPY . /container +RUN /container/build.sh + +ENV LANG="en_US.UTF-8" \ + LANGUAGE="en_US:en" \ + LC_ALL="en_US.UTF-8" + +ENTRYPOINT ["/container/tool/run"] diff --git a/image/Dockerfile.arm64 b/image/Dockerfile.arm64 new file mode 100644 index 00000000..8596127b --- /dev/null +++ b/image/Dockerfile.arm64 @@ -0,0 +1,12 @@ +FROM arm64v8/debian:stretch-slim + +COPY qemu-aarch64-static /usr/bin + +COPY . /container +RUN /container/build.sh + +ENV LANG="en_US.UTF-8" \ + LANGUAGE="en_US:en" \ + LC_ALL="en_US.UTF-8" + +ENTRYPOINT ["/container/tool/run"] diff --git a/image/Dockerfile.armv7 b/image/Dockerfile.armv7 new file mode 100644 index 00000000..a6cabe4a --- /dev/null +++ b/image/Dockerfile.armv7 @@ -0,0 +1,12 @@ +FROM arm32v7/debian:stretch-slim + +COPY qemu-arm-static /usr/bin + +COPY . /container +RUN /container/build.sh + +ENV LANG="en_US.UTF-8" \ + LANGUAGE="en_US:en" \ + LC_ALL="en_US.UTF-8" + +ENTRYPOINT ["/container/tool/run"] diff --git a/image/Dockerfile b/image/Dockerfile.old similarity index 100% rename from image/Dockerfile rename to image/Dockerfile.old