From 0c13d8a380cd887df7983819cdfebffa34838095 Mon Sep 17 00:00:00 2001 From: Henning Bocklage Date: Sun, 30 May 2021 03:29:04 +0200 Subject: [PATCH] fix15 --- .gitlab-ci.yml | 33 +++++++------- Dockerfile | 114 +------------------------------------------------ 2 files changed, 16 insertions(+), 131 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ff136b..670daed 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -9,29 +9,26 @@ variables: IMAGE: registry.gitlab.com/bockiii/deemix-docker IMAGE_TAG: ng DOCKER_CLI_EXPERIMENTAL: enabled + PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7" before_script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - - apk add --update curl && rm -rf /var/cache/apk/* + - apk add --update curl jq && rm -rf /var/cache/apk/* - export CI_JOB_TIMESTAMP=$(date --utc -Iseconds) build: stage: build script: - - docker run --rm --privileged multiarch/qemu-user-static:register --reset - - docker build --pull -f Dockerfile --build-arg BUILDDATE=$CI_JOB_TIMESTAMP --build-arg FROM_ARCH=arm64v8 -t $IMAGE:arm64v8-${IMAGE_TAG} . - - docker build --pull -f Dockerfile --build-arg BUILDDATE=$CI_JOB_TIMESTAMP --build-arg FROM_ARCH=arm32v7 -t $IMAGE:arm32v7-${IMAGE_TAG} . - - docker build --pull --build-arg BUILDDATE=$CI_JOB_TIMESTAMP -t $IMAGE:amd64-${IMAGE_TAG} . - - docker push $IMAGE:arm64v8-${IMAGE_TAG} - - docker push $IMAGE:arm32v7-${IMAGE_TAG} - - docker push $IMAGE:amd64-${IMAGE_TAG} - - docker manifest create "$IMAGE:${IMAGE_TAG}" - "$IMAGE:amd64-${IMAGE_TAG}" - "$IMAGE:arm32v7-${IMAGE_TAG}" - "$IMAGE:arm64v8-${IMAGE_TAG}" - - docker manifest annotate "$IMAGE:${IMAGE_TAG}" "$IMAGE:arm32v7-${IMAGE_TAG}" --os=linux --arch=arm --variant=v7 - - docker manifest annotate "$IMAGE:${IMAGE_TAG}" "$IMAGE:arm64v8-${IMAGE_TAG}" --os=linux --arch=arm64 --variant=v8 - # Push manifest to official registry - - docker manifest push "$IMAGE:${IMAGE_TAG}" - # Validate multi-arch manifest - - docker run --rm mplatform/mquery $IMAGE:${IMAGE_TAG} \ No newline at end of file + # Download latest buildx bin from github + - mkdir -p ~/.docker/cli-plugins/ + - BUILDX_LATEST_BIN_URI=$(curl -s -L https://github.com/docker/buildx/releases/latest | grep 'linux-amd64' | grep 'href' | sed 's/.*href="/https:\/\/github.com/g; s/amd64".*/amd64/g') + - curl -s -L ${BUILDX_LATEST_BIN_URI} -o ~/.docker/cli-plugins/docker-buildx + - chmod a+x ~/.docker/cli-plugins/docker-buildx + # Get and run the latest docker/binfmt tag to use its qemu parts + - BINFMT_IMAGE_TAG=$(curl -s https://registry.hub.docker.com/v2/repositories/docker/binfmt/tags | jq '.results | sort_by(.last_updated)[-1].name' -r) + - docker run --rm --privileged docker/binfmt:${BINFMT_IMAGE_TAG} + # create the multibuilder + - docker buildx create --name multibuilder + - docker buildx use multibuilder + # build and push + - docker buildx build --platform "${PLATFORMS}" -t $IMAGE:${IMAGE_TAG} . --push \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 0dcb3d7..163fac7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,4 @@ -ARG FROM_ARCH=amd64 - -# Multi-stage build, see https://docs.docker.com/develop/develop-images/multistage-build/ -FROM alpine AS builder - -# Download QEMU -ADD https://github.com/balena-io/qemu/releases/download/v5.2.0%2Bbalena4/qemu-5.2.0.balena4-arm.tar.gz . -RUN tar zxvf qemu-5.2.0.balena4-arm.tar.gz --strip-components 1 -ADD https://github.com/balena-io/qemu/releases/download/v5.2.0%2Bbalena4/qemu-5.2.0.balena4-aarch64.tar.gz . -RUN tar zxvf qemu-5.2.0.balena4-aarch64.tar.gz --strip-components 1 - -FROM lsiobase/alpine:$FROM_ARCH-3.13 - -# Add QEMU -COPY --from=builder qemu-arm-static /usr/bin -COPY --from=builder qemu-aarch64-static /usr/bin +FROM lsiobase/ubuntu:focal ARG BUILDDATE ENV BUILDDATEENV=${BUILDDATE} @@ -25,103 +10,6 @@ LABEL \ app.deemix.image.description="Docker image for Deemix" \ maintainer="Bocki" -ENV NODE_VERSION 16.2.0 - -RUN apk add --no-cache \ - libstdc++ \ - && apk add --no-cache --virtual .build-deps \ - curl \ - && ARCH= && alpineArch="$(apk --print-arch)" \ - && case "${alpineArch##*-}" in \ - x86_64) \ - ARCH='x64' \ - CHECKSUM="ac3cb1aa724b2db17f5be9463b08b6c1b5cb281c660e6a4526ee67e1dd4ba24b" \ - ;; \ - *) ;; \ - esac \ - && if [ -n "${CHECKSUM}" ]; then \ - set -eu; \ - curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \ - echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \ - else \ - echo "Building from source" \ - # backup build - && apk add --no-cache --virtual .build-deps-full \ - binutils-gold \ - g++ \ - gcc \ - gnupg \ - libgcc \ - linux-headers \ - make \ - python3 \ - # gpg keys listed at https://github.com/nodejs/node#release-keys - && for key in \ - 4ED778F539E3634C779C87C6D7062848A1AB005C \ - 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ - 74F12602B6F1C4E913FAA37AD3A89613643B6201 \ - 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ - 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ - C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ - C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \ - DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ - A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ - 108F52B48DB57BB0CC439B2997B01419BD92F80A \ - B9E2F5981AA6E0CD28160D9FF13993A75599653C \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ - && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ - && tar -xf "node-v$NODE_VERSION.tar.xz" \ - && cd "node-v$NODE_VERSION" \ - && ./configure \ - && make -j$(getconf _NPROCESSORS_ONLN) V= \ - && make install \ - && apk del .build-deps-full \ - && cd .. \ - && rm -Rf "node-v$NODE_VERSION" \ - && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \ - fi \ - && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \ - && apk del .build-deps \ - # smoke tests - && node --version \ - && npm --version - -ENV YARN_VERSION 1.22.5 - -RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \ - && for key in \ - 6A010C5166006599AA17F08146C2130DFD2497F5 \ - ; do \ - gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ - gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ - gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ - done \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ - && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ - && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && mkdir -p /opt \ - && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ - && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ - && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ - && apk del .build-deps-yarn \ - # smoke test - && yarn --version - -RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - git - RUN git clone https://gitlab.com/RemixDev/deemix-gui.git --recursive && \ rm -R /config && \ mkdir /deemix-gui/server/music && \