diff --git a/.github/dependencies/.admin-version b/.github/dependencies/.admin-version index 31d895b..f3b8d5c 100644 --- a/.github/dependencies/.admin-version +++ b/.github/dependencies/.admin-version @@ -1 +1 @@ -7.0.23 +7.6.3 diff --git a/.github/dependencies/.backitup-version b/.github/dependencies/.backitup-version index 6795d4d..f26c70e 100644 --- a/.github/dependencies/.backitup-version +++ b/.github/dependencies/.backitup-version @@ -1 +1 @@ -3.0.22 +3.0.31 diff --git a/.github/dependencies/.js-controller-version b/.github/dependencies/.js-controller-version index b619a5b..024b4b9 100644 --- a/.github/dependencies/.js-controller-version +++ b/.github/dependencies/.js-controller-version @@ -1 +1 @@ -6.0.11 +7.0.6 diff --git a/.github/dependencies/.latest-build b/.github/dependencies/.latest-build new file mode 100644 index 0000000..e2fd72b --- /dev/null +++ b/.github/dependencies/.latest-build @@ -0,0 +1 @@ +20250514.234447 diff --git a/.github/dependencies/.nodejs-version b/.github/dependencies/.nodejs-version index d78bf0a..1d898f1 100644 --- a/.github/dependencies/.nodejs-version +++ b/.github/dependencies/.nodejs-version @@ -1 +1 @@ -v18.20.4 +v20.19.2 diff --git a/.github/workflows/build-debian12-latest_sep.yml b/.github/workflows/build-debian12-latest_sep.yml new file mode 100644 index 0000000..3c3e2a3 --- /dev/null +++ b/.github/workflows/build-debian12-latest_sep.yml @@ -0,0 +1,506 @@ +# Github action to build Debian12 image (Tag: latest) +name: Build Debian 12 Image (latest) + +on: + release: + types: [released] + workflow_dispatch: + +jobs: + create-build-number: + runs-on: ubuntu-latest + outputs: + build_number: ${{ steps.generate-build-number.outputs.build_number }} + steps: + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + token: ${{ secrets.ACTIONS_PAT }} + + - name: Generate build number + id: generate-build-number + run: | + BUILD="$(date +"%Y%m%d.%H%M%S")" + echo "$BUILD" > .github/dependencies/.latest-build + echo "::set-output name=build_number::$BUILD" + echo "[LOG] Buildnumber: $BUILD" + + - name: Commit latest release version + run: | + git config --global user.name 'buanet' + git config --global user.email 'info@buanet.de' + git commit -am "new build" + git push + + build-latest-armv7-for-buanet: + name: Build latest armv7 image for buanet + needs: [create-build-number] + runs-on: ubuntu-latest + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + # Set values in iobroker_startup.sh + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$BUILD/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp + mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh + # Set values in Dockerfile + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp + mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.2.0 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3.6.1 + + - name: Login to DockerHub (buanet) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.3.0 + with: + registry: ghcr.io + username: ${{ secrets.PACKAGES_USER }} + password: ${{ secrets.PACKAGES_PASS }} + + - name: Build and push Docker image + uses: docker/build-push-action@v6.6.1 + with: + context: ./debian12 + file: ./debian12/Dockerfile + push: true + platforms: linux/arm/v7 + tags: | + buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7, + ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7, + + build-latest-arm64v8-for-buanet: + name: Build latest armv64v8 image for buanet + needs: [create-build-number] + runs-on: ubuntu-latest + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + # Set values in iobroker_startup.sh + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$BUILD/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp + mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh + # Set values in Dockerfile + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp + mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.2.0 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3.6.1 + + - name: Login to DockerHub (buanet) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.3.0 + with: + registry: ghcr.io + username: ${{ secrets.PACKAGES_USER }} + password: ${{ secrets.PACKAGES_PASS }} + + - name: Build and push Docker image + uses: docker/build-push-action@v6.6.1 + with: + context: ./debian12 + file: ./debian12/Dockerfile + push: true + platforms: linux/arm64/v8 + tags: | + buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8, + ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8, + + build-latest-amd64-for-buanet: + name: Build latest amd64 image for buanet + needs: [create-build-number] + runs-on: ubuntu-latest + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + # Set values in iobroker_startup.sh + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$BUILD/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp + mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh + # Set values in Dockerfile + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp + mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3.6.1 + + - name: Login to DockerHub (buanet) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.3.0 + with: + registry: ghcr.io + username: ${{ secrets.PACKAGES_USER }} + password: ${{ secrets.PACKAGES_PASS }} + + - name: Build and push Docker image + uses: docker/build-push-action@v6.6.1 + with: + context: ./debian12 + file: ./debian12/Dockerfile + push: true + platforms: linux/amd64 + tags: | + buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64, + ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64, + + create-multiarch-image-for-buanet: + runs-on: ubuntu-latest + needs: [build-latest-armv7-for-buanet, build-latest-arm64v8-for-buanet, build-latest-amd64-for-buanet, create-build-number] + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + + - name: Login to DockerHub (buanet) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.3.0 + with: + registry: ghcr.io + username: ${{ secrets.PACKAGES_USER }} + password: ${{ secrets.PACKAGES_PASS }} + + - name: Create and push multi-platform image + run: | + docker buildx imagetools create -t buanet/iobroker:latest buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t ghcr.io/buanet/iobroker:latest ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t buanet/iobroker:${{ env.majorversion }} buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t ghcr.io/buanet/iobroker:${{ env.majorversion }} ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t buanet/iobroker:${{ env.version }} buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t ghcr.io/buanet/iobroker:${{ env.version }} ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t buanet/iobroker:${{ env.version }}-build.${{ env.build }} buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }} ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + + build-latest-armv7-for-iobroker: + name: Build latest armv7 image for iobroker + needs: [create-build-number] + runs-on: ubuntu-latest + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + # Set values in iobroker_startup.sh + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$BUILD/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp + mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh + # Set values in Dockerfile + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp + mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.2.0 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3.6.1 + + - name: Login to DockerHub (iobroker) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER_IOB }} + password: ${{ secrets.DOCKER_PASS_IOB }} + + - name: Build and push Docker image + uses: docker/build-push-action@v6.6.1 + with: + context: ./debian12 + file: ./debian12/Dockerfile + push: true + platforms: linux/arm/v7 + tags: iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 + + build-latest-arm64v8-for-iobroker: + name: Build latest armv64v8 image for iobroker + needs: [create-build-number] + runs-on: ubuntu-latest + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + # Set values in iobroker_startup.sh + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$BUILD/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp + mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh + # Set values in Dockerfile + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp + mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.2.0 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3.6.1 + + - name: Login to DockerHub (iobroker) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER_IOB }} + password: ${{ secrets.DOCKER_PASS_IOB }} + + - name: Build and push Docker image + uses: docker/build-push-action@v6.6.1 + with: + context: ./debian12 + file: ./debian12/Dockerfile + push: true + platforms: linux/arm64/v8 + tags: iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 + + build-latest-amd64-for-iobroker: + name: Build latest amd64 image for iobroker + needs: [create-build-number] + runs-on: ubuntu-latest + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + # Set values in iobroker_startup.sh + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${BUILD}/$BUILD/" ./debian12/scripts/iobroker_startup.sh > ./debian12/scripts/iobroker_startup.tmp + mv -f ./debian12/scripts/iobroker_startup.tmp ./debian12/scripts/iobroker_startup.sh + # Set values in Dockerfile + sed -e "s/\${VERSION}/$VERSION/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp + mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3.6.1 + + - name: Login to DockerHub (iobroker) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER_IOB }} + password: ${{ secrets.DOCKER_PASS_IOB }} + + - name: Build and push Docker image + uses: docker/build-push-action@v6.6.1 + with: + context: ./debian12 + file: ./debian12/Dockerfile + push: true + platforms: linux/amd64 + tags: iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + + create-multiarch-image-for-iobroker: + runs-on: ubuntu-latest + needs: [build-latest-armv7-for-iobroker, build-latest-arm64v8-for-iobroker, build-latest-amd64-for-iobroker, create-build-number] + steps: + - name: Fetch latest release tag + run: | + LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" + echo "Latest release tag : $LATESTRELEASE" + echo "RELEASE_TAG=$LATESTRELEASE" >> $GITHUB_ENV + + - name: Checkout repo + uses: actions/checkout@v4.1.7 + with: + repository: 'buanet/ioBroker.docker' + ref: ${{ env.RELEASE_TAG }} + + - name: Set job variables + run: | + VERSION="$(cat .VERSION)" + MAJORVERSION="$(cat .VERSION | cut -c 1-3 | sed -r 's#^(.{0})#\1latest-#')" + BUILD="${{ needs.create-build-number.outputs.build_number }}" + # Log output and export as Github environment variable + echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION }}" + echo "[LOG] Image Version: $VERSION" + echo "version=$VERSION" >> $GITHUB_ENV + echo "[LOG] Major Image Version: $MAJORVERSION" + echo "majorversion=$MAJORVERSION" >> $GITHUB_ENV + echo "[LOG] Buildnumber: $BUILD" + echo "build=$BUILD" >> $GITHUB_ENV + + - name: Login to DockerHub (iobroker) + uses: docker/login-action@v3.3.0 + with: + username: ${{ secrets.DOCKER_USER_IOB }} + password: ${{ secrets.DOCKER_PASS_IOB }} + + - name: Create and push multi-platform image + run: | + docker buildx imagetools create -t iobroker/iobroker:latest iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t iobroker/iobroker:${{ env.majorversion }} iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t iobroker/iobroker:${{ env.version }} iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 + docker buildx imagetools create -t iobroker/iobroker:${{ env.version }}-build.${{ env.build }} iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-armv7 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8 iobroker/iobroker:${{ env.version }}-build.${{ env.build }}-amd64 diff --git a/.github/workflows/build-debian12-beta_ext.yml b/.github/workflows/old/build-debian12-beta_ext.yml similarity index 100% rename from .github/workflows/build-debian12-beta_ext.yml rename to .github/workflows/old/build-debian12-beta_ext.yml diff --git a/.github/workflows/build-debian12-latest.yml b/.github/workflows/old/build-debian12-latest.yml similarity index 100% rename from .github/workflows/build-debian12-latest.yml rename to .github/workflows/old/build-debian12-latest.yml diff --git a/.github/workflows/build-debian12-latest_ext.yml b/.github/workflows/old/build-debian12-latest_ext.yml similarity index 100% rename from .github/workflows/build-debian12-latest_ext.yml rename to .github/workflows/old/build-debian12-latest_ext.yml diff --git a/.github/workflows/testing-docker-image.yml b/.github/workflows/testing-docker-image.yml index aedbc57..13bc3af 100644 --- a/.github/workflows/testing-docker-image.yml +++ b/.github/workflows/testing-docker-image.yml @@ -11,11 +11,11 @@ jobs: - name: Testing with docker run run: | echo "[LOG] Starting ioBroker Container..." - docker run -d -p 8081:8081 --name iobroker -v iobrokerdata:/opt/iobroker buanet/iobroker:latest + docker run -d --name iobroker buanet/iobroker:latest echo "[LOG] Done." echo ' ' echo "[LOG] Waiting for Startup Script..." - sleep 30 + sleep 60 echo "[LOG] Done." echo ' ' echo "[LOG] Writing Logs..." @@ -23,11 +23,11 @@ jobs: echo "[LOG] Done." echo ' ' echo "[LOG] Checking Web UI..." - curl --insecure http://127.0.0.1:8081 2> /dev/null | grep 'Admin' &> /dev/null || exit 1 + docker exec iobroker curl -s http://localhost:8081 | grep -q 'Admin' || { echo "[LOG] Fehler: Web UI nicht erreichbar."; exit 1; } echo "[LOG] Done." echo ' ' echo "[LOG] Output testrun.log:" cat testrun.log echo ' ' - echo "[LOG] Test sucesssful." + echo "[LOG] Test successful." echo ' ' diff --git a/.github/workflows/update-docker-readme.yml b/.github/workflows/update-docker-readme.yml index 8518765..36e4cba 100644 --- a/.github/workflows/update-docker-readme.yml +++ b/.github/workflows/update-docker-readme.yml @@ -20,7 +20,7 @@ jobs: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} repository: buanet/iobroker - short-description: Official Docker image for ioBroker based on Debian Bullseye slim + short-description: Official Docker image for ioBroker based on Debian Bookworm slim readme-filepath: ./docs/README_docker_hub_buanet.md - name: Update Docker Hub Readme (iobroker) @@ -29,5 +29,5 @@ jobs: username: ${{ secrets.DOCKER_USER_IOB }} password: ${{ secrets.DOCKER_PASS_IOB }} repository: iobroker/iobroker - short-description: Official Docker image for ioBroker based on Debian Bullseye slim + short-description: Official Docker image for ioBroker based on Debian Bookworm slim readme-filepath: ./docs/README_docker_hub_iobroker.md \ No newline at end of file diff --git a/.github/workflows/version-checks.yml b/.github/workflows/version-checks.yml index f9fa476..4294b2c 100644 --- a/.github/workflows/version-checks.yml +++ b/.github/workflows/version-checks.yml @@ -15,19 +15,12 @@ jobs: repository: 'buanet/ioBroker.docker' token: ${{ secrets.ACTIONS_PAT }} - - name: Get and write version - id: version - run: | - LATESTRELEASE="$(curl -sL https://api.github.com/repos/buanet/ioBroker.docker/releases/latest | jq -r '.tag_name')" - echo "iobroker=iobroker/iobroker:$LATESTRELEASE" >> $GITHUB_ENV - echo "baseimage=library/debian:bookworm-slim" >> $GITHUB_ENV - - - name: Docker Baseimage Checker - id: baseimage - uses: mkumatag/container-image-updater-action@v1.0.6 + - name: Docker baseimage check + id: baseimage-check + uses: lucacome/docker-image-update-checker@v2.0.0 with: - base-image: '${{ env.baseimage }}' - image: '${{ env.iobroker }}' + base-image: debian:bookworm-slim + image: buanet/iobroker:latest - name: Fetch ioBroker and nodejs versions run: | @@ -44,7 +37,7 @@ jobs: jq -r '."discovery".version' > .github/dependencies/.discovery-version echo "[LOG] Fetched discovery version is $(cat .github/dependencies/.discovery-version)" curl -sL https://nodejs.org/dist/index.json | \ - jq -r 'map(select(.version | startswith("v18."))) | .[0].version' > .github/dependencies/.nodejs-version + jq -r 'map(select(.version | startswith("v20."))) | .[0].version' > .github/dependencies/.nodejs-version echo "[LOG] Fetched nodejs version is $(cat .github/dependencies/.nodejs-version)" - name: Check for modified files @@ -59,11 +52,16 @@ jobs: git commit -am "new ioBroker versions" git push + - name: Logging result + run: | + echo "base image updated = ${{ steps.baseimage-check.outputs.needs-updating }}" + echo "ioBroker version updated = ${{ steps.git-check.outputs.modified }}" + - name: Trigger Build Debian 12 Image (latest) - if: steps.baseimage.outputs.needs-update == 'true' || steps.git-check.outputs.modified == 'true' + if: steps.baseimage-check.outputs.needs-updating == 'true' || steps.git-check.outputs.modified == 'true' uses: benc-uk/workflow-dispatch@v1.2 with: ref: 'main' - workflow: 'iob.docker - Build Debian 12 Image (latest)' - repo: 'buanet/private.actionsrunner' + workflow: 'Build Debian 12 Image (latest)' + repo: 'buanet/iobroker.docker' token: ${{ secrets.ACTIONS_PAT }} diff --git a/README.md b/README.md index c52e390..1a17a9c 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases) [![Pre-Release)](https://img.shields.io/github/v/tag/buanet/ioBroker.docker?include_prereleases&label=pre-release)](https://github.com/buanet/ioBroker.docker/releases) -[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest.yml) +[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest_sep.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest_sep.yml) [![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues) [![Github Pull Requests](https://img.shields.io/github/issues-pr/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/pulls) [![GitHub Discussions](https://img.shields.io/github/discussions/buanet/ioBroker.docker)](https://github.com/buanet/ioBroker.docker/discussions)
diff --git a/debian12/Dockerfile b/debian12/Dockerfile index ee915c7..71ac0fb 100644 --- a/debian12/Dockerfile +++ b/debian12/Dockerfile @@ -86,7 +86,7 @@ RUN apt-get update && apt-get upgrade -y \ && rm -rf /tmp/* /var/tmp/* /root/.cache/* /root/.npm/* /var/lib/apt/lists/* # Default environment variables -ENV BUILD="${DATI}" \ +ENV BUILD="${BUILD}" \ DEBIAN_FRONTEND="teletype" \ LANG="de_DE.UTF-8" \ LANGUAGE="de_DE:de" \ diff --git a/debian12/scripts/maintenance.sh b/debian12/scripts/maintenance.sh index b4815db..9fd0344 100644 --- a/debian12/scripts/maintenance.sh +++ b/debian12/scripts/maintenance.sh @@ -245,7 +245,7 @@ restore_iobroker() { # list backup files backup_dir="/opt/iobroker/backups" - backup_files=($(find $backup_dir -type f)) + backup_files=($(find $backup_dir -type f | sort)) backup_count=${#backup_files[@]} if [[ $backup_count -eq 0 ]]; then diff --git a/docs/README_docker_hub_buanet.md b/docs/README_docker_hub_buanet.md index b1d4ace..c0c16ff 100644 --- a/docs/README_docker_hub_buanet.md +++ b/docs/README_docker_hub_buanet.md @@ -2,7 +2,7 @@ [![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases) [![Pre-Release)](https://img.shields.io/github/v/tag/buanet/ioBroker.docker?include_prereleases&label=pre-release)](https://github.com/buanet/ioBroker.docker/releases) -[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest.yml) +[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest_sep.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest_sep.yml) [![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues) [![Github Pull Requests](https://img.shields.io/github/issues-pr/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/pulls) [![GitHub Discussions](https://img.shields.io/github/discussions/buanet/ioBroker.docker)](https://github.com/buanet/ioBroker.docker/discussions)
diff --git a/docs/README_docker_hub_iobroker.md b/docs/README_docker_hub_iobroker.md index f602dc7..1b3a837 100644 --- a/docs/README_docker_hub_iobroker.md +++ b/docs/README_docker_hub_iobroker.md @@ -4,7 +4,7 @@ [![Release](https://img.shields.io/github/v/release/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/releases) [![Pre-Release)](https://img.shields.io/github/v/tag/buanet/ioBroker.docker?include_prereleases&label=pre-release)](https://github.com/buanet/ioBroker.docker/releases) -[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest.yml) +[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/buanet/ioBroker.docker/build-debian12-latest_sep.yml?branch=main)](https://github.com/buanet/ioBroker.docker/actions/workflows/build-debian12-latest_sep.yml) [![Github Issues](https://img.shields.io/github/issues/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/issues) [![Github Pull Requests](https://img.shields.io/github/issues-pr/buanet/ioBroker.docker?style=flat)](https://github.com/buanet/ioBroker.docker/pulls) [![GitHub Discussions](https://img.shields.io/github/discussions/buanet/ioBroker.docker)](https://github.com/buanet/ioBroker.docker/discussions)