diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 4c7b318..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,105 +0,0 @@ -version: 2 -jobs: - amd64: - machine: - enabled: true - steps: - - checkout - - run: - command: | - if [[ ! $CIRCLE_BRANCH ]] - then - DOCKER_TAG=release-$CIRCLE_TAG - else - DOCKER_TAG=latest - fi - sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - sudo docker build --pull -t $DOCKERHUB_REPO:$DOCKER_TAG-amd64 -f docker/Dockerfile . - sudo docker push $DOCKERHUB_REPO:$DOCKER_TAG-amd64 - armhf: - machine: - enabled: true - steps: - - checkout - - run: - command: | - if [[ ! $CIRCLE_BRANCH ]] - then - DOCKER_TAG=release-$CIRCLE_TAG - else - DOCKER_TAG=latest - fi - sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset - sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - sudo docker build --pull -t $DOCKERHUB_REPO:$DOCKER_TAG-armhf -f docker/Dockerfile.armhf . - sudo docker push $DOCKERHUB_REPO:$DOCKER_TAG-armhf - arm64v8: - machine: - enabled: true - steps: - - checkout - - run: - command: | - if [[ ! $CIRCLE_BRANCH ]] - then - DOCKER_TAG=release-$CIRCLE_TAG - else - DOCKER_TAG=latest - fi - sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset - sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - sudo docker build --pull -t $DOCKERHUB_REPO:$DOCKER_TAG-arm64v8 -f docker/Dockerfile.arm64v8 . - sudo docker push $DOCKERHUB_REPO:$DOCKER_TAG-arm64v8 - multiarch: - machine: - enabled: true - image: ubuntu-2004:202201-02 - steps: - - run: - command: | - if [[ ! $CIRCLE_BRANCH ]] - then - DOCKER_TAG=release-$CIRCLE_TAG - else - DOCKER_TAG=latest - fi - # - sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS - # - sudo docker manifest create --amend $DOCKERHUB_REPO:$DOCKER_TAG $DOCKERHUB_REPO:$DOCKER_TAG-amd64 $DOCKERHUB_REPO:$DOCKER_TAG-armhf $DOCKERHUB_REPO:$DOCKER_TAG-arm64v8 - sudo docker manifest annotate $DOCKERHUB_REPO:$DOCKER_TAG $DOCKERHUB_REPO:$DOCKER_TAG-amd64 --os linux --arch amd64 - sudo docker manifest annotate $DOCKERHUB_REPO:$DOCKER_TAG $DOCKERHUB_REPO:$DOCKER_TAG-armhf --os linux --arch arm --variant v7 - sudo docker manifest annotate $DOCKERHUB_REPO:$DOCKER_TAG $DOCKERHUB_REPO:$DOCKER_TAG-arm64v8 --os linux --arch arm64 --variant v8 - sudo docker manifest push $DOCKERHUB_REPO:$DOCKER_TAG -p -workflows: - version: 2 - publish: - jobs: - - amd64: - filters: - branches: - only: master - tags: - only: /^\d+\.\d+\.\d+$/ - - armhf: - filters: - branches: - only: master - tags: - only: /^\d+\.\d+\.\d+$/ - - arm64v8: - filters: - branches: - only: master - tags: - only: /^\d+\.\d+\.\d+$/ - - multiarch: - requires: - - amd64 - - armhf - - arm64v8 - filters: - branches: - only: master - tags: - only: /^\d+\.\d+\.\d+$/ diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..583decf --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" \ No newline at end of file diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml new file mode 100644 index 0000000..fad2bf2 --- /dev/null +++ b/.github/workflows/build_docker.yml @@ -0,0 +1,53 @@ +name: Build docker + +on: + push: + branches: + - 'master' + tags: + - '*.*.*' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: weetmuts/wmbusmeters + tags: type=ref,event=tag + - + name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + - + name: Build and push not tagged release + if: ${{ !steps.meta.outputs.tags }} + uses: docker/build-push-action@v3 + with: + context: docker/ + platforms: linux/amd64,linux/arm64,linux/armv7 + push: true + tags: weetmuts/wmbusmeters:latest + - + name: Build and push tagged release + if: ${{ steps.meta.outputs.tags }} + uses: docker/build-push-action@v3 + with: + context: docker/ + platforms: linux/amd64,linux/arm64,linux/armv7 + push: true + tags: weetmuts/wmbusmeters:release-${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }} \ No newline at end of file diff --git a/README.md b/README.md index 61c6033..a5bd048 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,8 @@ The program runs on GNU/Linux, MacOSX, FreeBSD, and Raspberry Pi. | ------------ |:-------------:| | Ubuntu | [![Build Ubuntu Status](https://github.com/weetmuts/wmbusmeters/workflows/Build%20Ubuntu/badge.svg)](https://github.com/weetmuts/wmbusmeters/actions)| | MacOSX | [![Build MacOSX Status](https://github.com/weetmuts/wmbusmeters/workflows/Build%20MacOSX/badge.svg)](https://github.com/weetmuts/wmbusmeters/actions)| -|Docker |[![CircleCI>](https://circleci.com/gh/weetmuts/wmbusmeters.svg?style=shield)](https://circleci.com/gh/weetmuts/wmbusmeters)| -|Snap |[![wmbusmeters](https://snapcraft.io//wmbusmeters/badge.svg)](https://snapcraft.io/wmbusmeters)| +| Docker | [![Build Docker Status](https://github.com/weetmuts/wmbusmeters/workflows/Build%20docker/badge.svg)](https://hub.docker.com/r/weetmuts/wmbusmeters/)| +| Snap | [![wmbusmeters](https://snapcraft.io//wmbusmeters/badge.svg)](https://snapcraft.io/wmbusmeters)| # Distributions diff --git a/docker/Dockerfile b/docker/Dockerfile index e43263d..4eaf59f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM multiarch/alpine:amd64-latest-stable AS build +FROM multiarch/alpine:${TARGETARCH}-latest-stable AS build RUN apk add --no-cache alpine-sdk gcc linux-headers ncurses-dev librtlsdr-dev cmake libusb-dev bash RUN git clone https://github.com/weetmuts/wmbusmeters.git && \ git clone https://github.com/weetmuts/rtl-wmbus.git && \ @@ -10,7 +10,7 @@ RUN make release && chmod 755 build/rtl_wmbus WORKDIR /rtl_433 RUN mkdir build && cd build && cmake ../ && make -FROM multiarch/alpine:amd64-latest-stable as scratch +FROM multiarch/alpine:${TARGETARCH}-latest-stable as scratch ENV QEMU_EXECVE=1 RUN apk add --no-cache mosquitto-clients libstdc++ curl libusb ncurses rtl-sdr netcat-openbsd WORKDIR /wmbusmeters @@ -19,4 +19,4 @@ COPY --from=build /rtl-wmbus/build/rtl_wmbus /usr/bin/rtl_wmbus COPY --from=build /rtl_433/build/src/rtl_433 /usr/bin/rtl_433 COPY --from=build /wmbusmeters/docker/docker-entrypoint.sh /wmbusmeters/docker-entrypoint.sh VOLUME /wmbusmeters_data/ -CMD ["sh", "/wmbusmeters/docker-entrypoint.sh"] +CMD ["sh", "/wmbusmeters/docker-entrypoint.sh"] \ No newline at end of file diff --git a/docker/Dockerfile.arm64v8 b/docker/Dockerfile.arm64v8 deleted file mode 100644 index 93544ab..0000000 --- a/docker/Dockerfile.arm64v8 +++ /dev/null @@ -1,22 +0,0 @@ -FROM multiarch/alpine:arm64-latest-stable AS build -RUN apk add --no-cache alpine-sdk gcc linux-headers ncurses-dev librtlsdr-dev cmake libusb-dev bash -RUN git clone https://github.com/weetmuts/wmbusmeters.git && \ - git clone https://github.com/weetmuts/rtl-wmbus.git && \ - git clone https://github.com/merbanan/rtl_433.git -WORKDIR /wmbusmeters -RUN make -WORKDIR /rtl-wmbus -RUN make release && chmod 755 build/rtl_wmbus -WORKDIR /rtl_433 -RUN mkdir build && cd build && cmake ../ && make - -FROM multiarch/alpine:arm64-latest-stable as scratch -ENV QEMU_EXECVE=1 -RUN apk add --no-cache mosquitto-clients libstdc++ curl libusb ncurses rtl-sdr netcat-openbsd -WORKDIR /wmbusmeters -COPY --from=build /wmbusmeters/build/wmbusmeters /wmbusmeters/wmbusmeters -COPY --from=build /rtl-wmbus/build/rtl_wmbus /usr/bin/rtl_wmbus -COPY --from=build /rtl_433/build/src/rtl_433 /usr/bin/rtl_433 -COPY --from=build /wmbusmeters/docker/docker-entrypoint.sh /wmbusmeters/docker-entrypoint.sh -VOLUME /wmbusmeters_data/ -CMD ["sh", "/wmbusmeters/docker-entrypoint.sh"] diff --git a/docker/Dockerfile.armhf b/docker/Dockerfile.armhf deleted file mode 100644 index 9be43be..0000000 --- a/docker/Dockerfile.armhf +++ /dev/null @@ -1,22 +0,0 @@ -FROM multiarch/alpine:armhf-latest-stable AS build -RUN apk add --no-cache alpine-sdk gcc linux-headers ncurses-dev librtlsdr-dev cmake libusb-dev bash -RUN git clone https://github.com/weetmuts/wmbusmeters.git && \ - git clone https://github.com/weetmuts/rtl-wmbus.git && \ - git clone https://github.com/merbanan/rtl_433.git -WORKDIR /wmbusmeters -RUN make -WORKDIR /rtl-wmbus -RUN make release && chmod 755 build/rtl_wmbus -WORKDIR /rtl_433 -RUN mkdir build && cd build && cmake ../ && make - -FROM multiarch/alpine:armhf-latest-stable as scratch -ENV QEMU_EXECVE=1 -RUN apk add --no-cache mosquitto-clients libstdc++ curl libusb ncurses rtl-sdr netcat-openbsd -WORKDIR /wmbusmeters -COPY --from=build /wmbusmeters/build/wmbusmeters /wmbusmeters/wmbusmeters -COPY --from=build /rtl-wmbus/build/rtl_wmbus /usr/bin/rtl_wmbus -COPY --from=build /rtl_433/build/src/rtl_433 /usr/bin/rtl_433 -COPY --from=build /wmbusmeters/docker/docker-entrypoint.sh /wmbusmeters/docker-entrypoint.sh -VOLUME /wmbusmeters_data/ -CMD ["sh", "/wmbusmeters/docker-entrypoint.sh"] diff --git a/docker/README.md b/docker/README.md index f996092..89ca44d 100644 --- a/docker/README.md +++ b/docker/README.md @@ -7,8 +7,8 @@ MQTT, curled to a REST api, inserted into a database or stored in a log file. [FAQ/WIKI/MANUAL pages](https://github.com/weetmuts/wmbusmeters) - Supported architectures - - ARMv7 32-bit (`arm32v7`) - - ARMv8 64-bit (`arm64v8`) + - ARMv7 32-bit (`armv7`) + - ARMv8 64-bit (`arm64`) - Linux x86-64 (`amd64`) ## Running the wmbusmeters container diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 0a2009c..c5694c0 100644 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -2,6 +2,6 @@ [ ! -d /wmbusmeters_data/logs/meter_readings ] && mkdir -p /wmbusmeters_data/logs/meter_readings [ ! -d /wmbusmeters_data/etc/wmbusmeters.d ] && mkdir -p /wmbusmeters_data/etc/wmbusmeters.d -[ ! -f /wmbusmeters_data/etc/wmbusmeters.conf ] && echo -e "loglevel=normal\ndevice=auto\nlistento=t1\nlogtelegrams=false\nformat=json\nmeterfiles=/wmbusmeters_data/logs/meter_readings\nmeterfilesaction=overwrite\nlogfile=/wmbusmeters_data/logs/wmbusmeters.log" > /wmbusmeters_data/etc/wmbusmeters.conf +[ ! -f /wmbusmeters_data/etc/wmbusmeters.conf ] && echo -e "loglevel=normal\ndevice=auto:t1\ndonotprobe=/dev/ttyAMA0\nlogtelegrams=false\nformat=json\nmeterfiles=/wmbusmeters_data/logs/meter_readings\nmeterfilesaction=overwrite\nlogfile=/wmbusmeters_data/logs/wmbusmeters.log" > /wmbusmeters_data/etc/wmbusmeters.conf /wmbusmeters/wmbusmeters --useconfig=/wmbusmeters_data