From 000e4f89ade6f6368f654c02ff77febd31ee0d94 Mon Sep 17 00:00:00 2001 From: testuser7 Date: Sat, 3 Feb 2024 23:20:40 +0100 Subject: [PATCH] Use latest docker alpine image --- .github/workflows/build_docker.yml | 107 ++++++++++++++++++++++------- docker/Dockerfile | 11 +-- 2 files changed, 87 insertions(+), 31 deletions(-) diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml index b0e2bb6..4fb52e9 100644 --- a/.github/workflows/build_docker.yml +++ b/.github/workflows/build_docker.yml @@ -8,10 +8,28 @@ on: - '[0-9]+\.[0-9]+\.[0-9]+' - '[0-9]+\.[0-9]+\.[0-9]+-RC[0-9]+' +env: + DOCKERHUB_IMAGE: ${{ github.repository }} + IMAGE_TAG: | + ${{ github.ref_type == 'tag' && (contains(github.ref_name, '-RC') && + join('candidate-', github.ref_name) || join('release-', github.ref_name)) || 'latest' }} + jobs: - docker: + build: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + platform: + - linux/amd64 + - linux/arm/v7 + - linux/arm64 steps: + - + name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV - name: Checkout uses: actions/checkout@v4 @@ -20,11 +38,10 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: wmbusmeters/wmbusmeters - tags: type=ref,event=tag - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + tags: | + ${{ env.IMAGE_TAG }} + images: | + ${{ env.DOCKERHUB_IMAGE }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -35,29 +52,67 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PAT }} - - name: Build and push not tagged release - if: ${{ !steps.meta.outputs.tags }} + name: Build and push uses: docker/build-push-action@v5 + id: docker_build with: context: docker/ - platforms: linux/amd64,linux/arm64,linux/armhf - push: true - tags: wmbusmeters/wmbusmeters:latest + platforms: ${{ matrix.platform }} + provenance: false + outputs: | + type=image,name=${{ env.DOCKERHUB_IMAGE }},push-by-digest=true,name-canonical=true,push=true - - name: Build and push candidate - if: ${{ steps.meta.outputs.tags && contains(steps.meta.outputs.tags, '-RC') }} - uses: docker/build-push-action@v5 - with: - context: docker/ - platforms: linux/amd64,linux/arm64,linux/armhf - push: true - tags: wmbusmeters/wmbusmeters:candidate-${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} + name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.docker_build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" - - name: Build and push tagged release - if: ${{ steps.meta.outputs.tags && !contains(steps.meta.outputs.tags, '-RC') }} - uses: docker/build-push-action@v5 + name: Upload digest + uses: actions/upload-artifact@v4 with: - context: docker/ - platforms: linux/amd64,linux/arm64,linux/armhf - push: true - tags: wmbusmeters/wmbusmeters:release-${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} \ No newline at end of file + name: digests-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + + merge: + runs-on: ubuntu-latest + needs: + - build + steps: + - + name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + tags: | + ${{ env.IMAGE_TAG }} + images: | + ${{ env.DOCKERHUB_IMAGE }} + - + name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PAT }} + - + name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.DOCKERHUB_IMAGE }}@sha256:%s ' *) + - + name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.DOCKERHUB_IMAGE }}:${{ steps.meta.outputs.version }} \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 9ca3e1d..0a92223 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,5 +1,5 @@ -FROM asymworks/multiarch-alpine:${TARGETARCH}${TARGETVARIANT}-latest-stable AS build -RUN apk add --no-cache alpine-sdk gcc linux-headers librtlsdr-dev libxml2-dev cmake libusb-dev bash +FROM alpine AS build +RUN apk add --no-cache alpine-sdk gcc linux-headers librtlsdr-dev libxml2-dev cmake libusb-dev bash samurai RUN git clone https://github.com/wmbusmeters/wmbusmeters.git && \ git clone https://github.com/weetmuts/rtl-wmbus.git && \ git clone https://github.com/merbanan/rtl_433.git @@ -8,10 +8,11 @@ RUN make WORKDIR /rtl-wmbus RUN make release && chmod 755 build/rtl_wmbus WORKDIR /rtl_433 -RUN mkdir build && cd build && cmake ../ && make +RUN cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=MinSizeRel && \ + cmake --build build -FROM asymworks/multiarch-alpine:${TARGETARCH}${TARGETVARIANT}-latest-stable as scratch -ENV QEMU_EXECVE=1 +FROM alpine as scratch RUN apk add --no-cache mosquitto-clients libstdc++ curl libusb rtl-sdr libxml2 netcat-openbsd WORKDIR /wmbusmeters COPY --from=build /wmbusmeters/build/wmbusmeters /wmbusmeters/wmbusmeters