From a2ad9822ada239dd77e3ded5205742a0a389be89 Mon Sep 17 00:00:00 2001 From: Adam Harrison-Fuller Date: Tue, 5 Mar 2019 21:57:58 +0000 Subject: [PATCH] Adding travis CI file Build multiple archs Trying to enable experimental server mode And again And Again And again..... ... and again More Trying with qemu Trying with multiple dockerfiles More This should work Gah Trying to get sed to work Should work on Linux now Tidying up build script --- .travis.yml | 15 +++++++++++++++ Dockerfile | 3 ++- Dockerfile.cross | 22 ++++++++++++++++++++++ build.sh | 31 +++++++++++++++++++++++++++++++ fig.yml | 7 ------- 5 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 .travis.yml create mode 100644 Dockerfile.cross create mode 100755 build.sh delete mode 100644 fig.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..ae353a8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +sudo: required +services: +- docker +language: bash +script: +- | + # echo "Updating Docker to have docker manifest command" + curl https://get.docker.com | sh + # echo "Enabling docker client experimental features" + mkdir -p ~/.docker + echo '{ "experimental": "enabled" }' > ~/.docker/config.json + docker version +# prepare qemu +- sudo apt-get install qemu-user +- ./build.sh diff --git a/Dockerfile b/Dockerfile index 682362c..ce7d3d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ -FROM debian:stretch-slim +FROM arm64v8/debian:stretch-slim MAINTAINER Adam Harrison-Fuller +COPY qemu-aarch64-static /usr/bin/ RUN apt-get update && \ apt-get install -y mumble-server && \ diff --git a/Dockerfile.cross b/Dockerfile.cross new file mode 100644 index 0000000..77a2eac --- /dev/null +++ b/Dockerfile.cross @@ -0,0 +1,22 @@ +FROM __BASEIMAGE_ARCH__/debian:stretch-slim +__CROSS_COPY qemu-__QEMU_ARCH__-static /usr/bin/ + +MAINTAINER Adam Harrison-Fuller + +RUN apt-get update && \ + apt-get install -y mumble-server && \ + rm -rf \ + /var/cache/apt/* \ + /var/lib/apt/lists/* + +EXPOSE 64738 64738/udp + +ADD ./data/mumble_server.ini /config/ +VOLUME /data +ENV MUMBLE_INI /config/mumble_server.ini + +ADD entrypoint.sh / +RUN chmod +x entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["-fg"] \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..9411a99 --- /dev/null +++ b/build.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +docker run --rm --privileged multiarch/qemu-user-static:register --reset +echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + +for docker_arch in amd64 arm32v7 arm64v8; do + case ${docker_arch} in + amd64 ) qemu_arch="x86_64" ;; + arm32v7 ) qemu_arch="arm" ;; + arm64v8 ) qemu_arch="aarch64" ;; + esac + wget -N https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/x86_64_qemu-${qemu_arch}-static.tar.gz + tar -xvf x86_64_qemu-${qemu_arch}-static.tar.gz + + cat Dockerfile.cross | \ + sed -e "s|__BASEIMAGE_ARCH__|${docker_arch}|g" | \ + sed -e "s|__QEMU_ARCH__|${qemu_arch}|g" > Dockerfile.${docker_arch} + if [ ${docker_arch} == "amd64" ]; then + sed -i -e "/__CROSS_/d" Dockerfile.${docker_arch} + else + sed -i -e "s/__CROSS_//g" Dockerfile.${docker_arch} + fi + + docker build -f Dockerfile.${docker_arch} -t adamhf/mumble_arm:${docker_arch}-latest . + docker push adamhf/mumble_arm:${docker_arch}-latest +done + +docker manifest create --amend adamhf/mumble_arm:latest adamhf/mumble_arm:amd64-latest adamhf/mumble_arm:arm32v7-latest adamhf/mumble_arm:arm64v8-latest +docker manifest annotate adamhf/mumble_arm:latest adamhf/mumble_arm:arm32v7-latest --os linux --arch arm --variant v7 +docker manifest annotate adamhf/mumble_arm:latest adamhf/mumble_arm:arm64v8-latest --os linux --arch arm64 --variant v8 +docker manifest push adamhf/mumble_arm:latest diff --git a/fig.yml b/fig.yml deleted file mode 100644 index cbcebc0..0000000 --- a/fig.yml +++ /dev/null @@ -1,7 +0,0 @@ -mumble: - build: . - ports: - - "64739:64738" - - "64739:64738/udp" - volumes: - - data/:/data/