From c90af10b0556002517535908423e423683ccee6b Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Mon, 2 Jun 2025 18:43:58 +0200 Subject: [PATCH 1/9] Create publish-latest.yml That way a tag is published each time a commit is performed on the main branch --- .github/workflows/publish-latest.yml | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/publish-latest.yml diff --git a/.github/workflows/publish-latest.yml b/.github/workflows/publish-latest.yml new file mode 100644 index 00000000..1fe22528 --- /dev/null +++ b/.github/workflows/publish-latest.yml @@ -0,0 +1,47 @@ +name: "Publish :latest docker tag" + +# Trigger the workflow on any commit or merge to the main branch +on: + push: + branches: + - main + +env: + DOCKER_IMAGE_REGISTRY_PATH: nspanelmanager/nspanelmanager + DOCKER_TAG: test # TODO: change it after proper testing (after merge) + +jobs: + publish: + runs-on: ubuntu-24.04 + + permissions: + contents: read + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Get Git commit timestamps + run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV + + - name: Set up QEMU (required for Buildx) + uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 + + - name: Login to DockerHub + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_SECRET }} + + - name: Build and push multi-arch image + uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + with: + context: ./docker # Path to your Dockerfile + # note: platforms list: https://github.com/docker/setup-qemu-action + platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7,qemu-arm,qemu-aarch64 + push: true + tags: ${{ env.DOCKER_IMAGE_REGISTRY_PATH }}:${{ env.DOCKER_TAG }} + env: + SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }} From 4b0a908f2a61776c64bde61a64a48b2675ef78d8 Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Mon, 2 Jun 2025 18:45:08 +0200 Subject: [PATCH 2/9] Update Dockerfile That way it will works transparently with other architecture platforms --- docker/Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index ff1f3d24..a4bdbe8f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,7 @@ -FROM --platform=$BUILDPLATFORM python:3.11 AS build +# syntax=docker/dockerfile:1 +# check=error=true + +FROM python:3.11 AS build ARG TARGETPLATFORM ARG BUILDPLATFORM ARG no_mqttmanager_build @@ -51,15 +54,13 @@ RUN if [ "$IS_DEVEL" == "yes" ]; then conan profile detect --force && echo 'core # Install software needed to build and run the manager RUN apt-get install -y --no-install-recommends \ - postgresql-client curl inotify-tools net-tools nginx build-essential -# && rm -rf /var/lib/apt/lists/* + postgresql-client curl inotify-tools net-tools nginx build-essential \ + && rm -rf /var/lib/apt/lists/* RUN pip install -r requirements.txt # Install python packages -#RUN /bin/bash /MQTTManager/install_cmake.sh # Install cmake from source as it's only available for x86_64 and armv8 in repo RUN echo "alias ll='ls -lh --color=auto'" >> /etc/bash.bashrc -#RUN if [ -z "$no_mqttmanager_build" ]; then /bin/bash /usr/src/app/make_mqttmanager.sh && /bin/bash /MQTTManager/cleanup_build.sh; else echo "Not building MQTTManager."; fi EXPOSE 8000 CMD ["/bin/bash", "./run_uwsgi.sh"] From 56f311adc5e509cecf9735ee8a86869d8d3b9260 Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Wed, 4 Jun 2025 14:48:52 +0200 Subject: [PATCH 3/9] test --- .github/workflows/publish-latest.yml | 7 +++++-- docker/Dockerfile | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-latest.yml b/.github/workflows/publish-latest.yml index 1fe22528..330d03df 100644 --- a/.github/workflows/publish-latest.yml +++ b/.github/workflows/publish-latest.yml @@ -5,6 +5,7 @@ on: push: branches: - main + - ci/refactore # TODO: remove it env: DOCKER_IMAGE_REGISTRY_PATH: nspanelmanager/nspanelmanager @@ -32,8 +33,8 @@ jobs: - name: Login to DockerHub uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_SECRET }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push multi-arch image uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 @@ -43,5 +44,7 @@ jobs: platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7,qemu-arm,qemu-aarch64 push: true tags: ${{ env.DOCKER_IMAGE_REGISTRY_PATH }}:${{ env.DOCKER_TAG }} + build-args: | + GITHUB_REF_NAME=${{ github.ref_name }} env: SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }} diff --git a/docker/Dockerfile b/docker/Dockerfile index a4bdbe8f..63f3ae54 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -27,6 +27,8 @@ RUN if [ -z "$no_mqttmanager_build" ]; then /bin/bash /MQTTManager/compile_mqttm FROM python:3.11 ARG no_mqttmanager_build ARG IS_DEVEL +ARG GITHUB_REF_NAME +ENV VERSION=$GITHUB_REF_NAME WORKDIR /usr/src/app SHELL ["/bin/bash", "-c"] @@ -35,6 +37,12 @@ COPY nginx/sites-enabled/ /etc/nginx/sites-enabled/ COPY nginx/sites-templates/ /etc/nginx/sites-templates/ COPY --from=build /MQTTManager/build /MQTTManager/build +COPY docker/web/nspanelmanager/web/templates/footer_template.html docker/web/nspanelmanager/web/templates/footer.html +COPY docs/tex/manual.pdf docker/web/nspanelmanager/manual.pdf + +RUN sed -i "s/%version%/$VERSION/g" docker/web/nspanelmanager/web/templates/footer.html + + # Update container RUN apt-get update \ && apt-get -y upgrade From 7b5d08b496f52b51e775612bd1d0126e80afb222 Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Wed, 4 Jun 2025 14:51:38 +0200 Subject: [PATCH 4/9] test --- .github/workflows/publish-latest.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-latest.yml b/.github/workflows/publish-latest.yml index 330d03df..9449fa6c 100644 --- a/.github/workflows/publish-latest.yml +++ b/.github/workflows/publish-latest.yml @@ -40,8 +40,8 @@ jobs: uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 with: context: ./docker # Path to your Dockerfile - # note: platforms list: https://github.com/docker/setup-qemu-action - platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7,qemu-arm,qemu-aarch64 + # note: platforms list: https://github.com/docker/setup-qemu-action qemu-arm,qemu-aarch64 + platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7 push: true tags: ${{ env.DOCKER_IMAGE_REGISTRY_PATH }}:${{ env.DOCKER_TAG }} build-args: | From 086a953801794d9f62b81263b0772633051af872 Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Wed, 4 Jun 2025 15:09:20 +0200 Subject: [PATCH 5/9] test --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 63f3ae54..d5712b50 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -38,7 +38,7 @@ COPY nginx/sites-templates/ /etc/nginx/sites-templates/ COPY --from=build /MQTTManager/build /MQTTManager/build COPY docker/web/nspanelmanager/web/templates/footer_template.html docker/web/nspanelmanager/web/templates/footer.html -COPY docs/tex/manual.pdf docker/web/nspanelmanager/manual.pdf +COPY ../docs/tex/manual.pdf docker/web/nspanelmanager/manual.pdf RUN sed -i "s/%version%/$VERSION/g" docker/web/nspanelmanager/web/templates/footer.html From c433c6e1c70bb745661e141463c7411478a1140d Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Wed, 4 Jun 2025 15:11:51 +0200 Subject: [PATCH 6/9] test --- .github/workflows/publish-latest.yml | 3 ++- docker/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-latest.yml b/.github/workflows/publish-latest.yml index 9449fa6c..ae780f03 100644 --- a/.github/workflows/publish-latest.yml +++ b/.github/workflows/publish-latest.yml @@ -39,7 +39,8 @@ jobs: - name: Build and push multi-arch image uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 with: - context: ./docker # Path to your Dockerfile + context: . + file: ./docker/Dockerfile # note: platforms list: https://github.com/docker/setup-qemu-action qemu-arm,qemu-aarch64 platforms: linux/amd64,linux/386,linux/arm64,linux/arm/v7 push: true diff --git a/docker/Dockerfile b/docker/Dockerfile index d5712b50..63f3ae54 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -38,7 +38,7 @@ COPY nginx/sites-templates/ /etc/nginx/sites-templates/ COPY --from=build /MQTTManager/build /MQTTManager/build COPY docker/web/nspanelmanager/web/templates/footer_template.html docker/web/nspanelmanager/web/templates/footer.html -COPY ../docs/tex/manual.pdf docker/web/nspanelmanager/manual.pdf +COPY docs/tex/manual.pdf docker/web/nspanelmanager/manual.pdf RUN sed -i "s/%version%/$VERSION/g" docker/web/nspanelmanager/web/templates/footer.html From 61200280008cfc0e959dff1e54f9dc6e20d1c790 Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Wed, 4 Jun 2025 15:13:17 +0200 Subject: [PATCH 7/9] test --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 63f3ae54..8f56fbeb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,7 +10,7 @@ WORKDIR /MQTTManager SHELL ["/bin/bash", "-c"] RUN echo "Running on $BUILDPLATFORM, building for $TARGETPLATFORM" -COPY MQTTManager/ /MQTTManager/ +COPY docker/MQTTManager/ /MQTTManager/ # Only build MQTTManager during Docker build if is is not a devel mode. RUN if [ "$IS_DEVEL" != "yes" ]; then apt-get update \ From 415955f89ed7dbf5d3696e90ed57b64d3596f685 Mon Sep 17 00:00:00 2001 From: Sebastien Vermeille Date: Wed, 4 Jun 2025 15:15:33 +0200 Subject: [PATCH 8/9] test --- docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8f56fbeb..e18dbb28 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -32,9 +32,9 @@ ENV VERSION=$GITHUB_REF_NAME WORKDIR /usr/src/app SHELL ["/bin/bash", "-c"] -COPY web/ /usr/src/app/ -COPY nginx/sites-enabled/ /etc/nginx/sites-enabled/ -COPY nginx/sites-templates/ /etc/nginx/sites-templates/ +COPY docker/web/ /usr/src/app/ +COPY docker/nginx/sites-enabled/ /etc/nginx/sites-enabled/ +COPY docker/nginx/sites-templates/ /etc/nginx/sites-templates/ COPY --from=build /MQTTManager/build /MQTTManager/build COPY docker/web/nspanelmanager/web/templates/footer_template.html docker/web/nspanelmanager/web/templates/footer.html From 58e8a2f1eceba6e9d9153f6157808ea277ab5b09 Mon Sep 17 00:00:00 2001 From: Tim Panajott Date: Fri, 18 Jul 2025 15:40:55 +0200 Subject: [PATCH 9/9] Update Dockerfile Update as per my review, change / to | in sed-command that replaces version on footer. --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index e18dbb28..c0cd4153 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -40,7 +40,7 @@ COPY --from=build /MQTTManager/build /MQTTManager/build COPY docker/web/nspanelmanager/web/templates/footer_template.html docker/web/nspanelmanager/web/templates/footer.html COPY docs/tex/manual.pdf docker/web/nspanelmanager/manual.pdf -RUN sed -i "s/%version%/$VERSION/g" docker/web/nspanelmanager/web/templates/footer.html +RUN sed -i "s|%version%|$VERSION|g" docker/web/nspanelmanager/web/templates/footer.html # Update container