# Github action to build Debian12 image (Tag: dev) name: Build Debian 12 Image (dev) on: workflow_dispatch: jobs: create-build-number: name: Create build number runs-on: ubuntu-latest outputs: build_number: ${{ steps.generate-build-number.outputs.build_number }} steps: - name: Checkout repo uses: actions/checkout@v6.0.1 with: repository: 'buanet/ioBroker.docker' - name: Generate build number id: generate-build-number run: | BUILD="$(date +"%Y%m%d.%H%M%S")" echo "build_number=$BUILD" >> $GITHUB_OUTPUT echo "[LOG] Buildnumber: $BUILD" ### Deprecation of armv7 (2026-02-05) ### # build-dev-armv7-recommended-node: # name: Build dev armv7 image with recommended node version # needs: [create-build-number] # runs-on: ubuntu-latest # steps: # - name: Checkout repo # uses: actions/checkout@v6.0.1 # with: # repository: 'buanet/ioBroker.docker' # # - name: Set job variables # run: | # VERSION="$(cat .VERSION)" # BUILD="${{ needs.create-build-number.outputs.build_number }}" # # Log output and export as Github environment variable # echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION_BETA }}" # echo "[LOG] Image Version: $VERSION" # echo "version=$VERSION" >> $GITHUB_ENV # echo "[LOG] Buildnumber: $BUILD" # echo "build=$BUILD" >> $GITHUB_ENV # # Set values in iobroker_startup.sh # sed -e "s/\${VERSION}/$VERSION-dev/" -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-dev/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION_BETA }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp # mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile # # - name: Set up QEMU # uses: docker/setup-qemu-action@v3.7.0 # # - name: Set up Docker Buildx # id: buildx # uses: docker/setup-buildx-action@v3.12.0 # # - name: Login to DockerHub (buanet) # uses: docker/login-action@v3.7.0 # with: # username: ${{ secrets.DOCKER_USER }} # password: ${{ secrets.DOCKER_PASS }} # # - name: Login to GitHub Container Registry # uses: docker/login-action@v3.7.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.18.0 # with: # context: ./debian12 # file: ./debian12/Dockerfile # push: true # platforms: linux/arm/v7 # tags: | # buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7-dev, # ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7-dev, build-dev-arm64v8-recommended-node: name: Build dev armv64v8 image with recommended node version needs: [create-build-number] runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v6.0.1 with: repository: 'buanet/ioBroker.docker' - name: Set job variables run: | VERSION="$(cat .VERSION)" BUILD="${{ needs.create-build-number.outputs.build_number }}" # Log output and export as Github environment variable echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION_BETA }}" echo "[LOG] Image Version: $VERSION" echo "version=$VERSION" >> $GITHUB_ENV echo "[LOG] Buildnumber: $BUILD" echo "build=$BUILD" >> $GITHUB_ENV # Set values in iobroker_startup.sh sed -e "s/\${VERSION}/$VERSION-dev/" -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-dev/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION_BETA }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile - name: Set up QEMU uses: docker/setup-qemu-action@v3.7.0 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3.12.0 - name: Login to DockerHub (buanet) uses: docker/login-action@v3.7.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3.7.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.18.0 with: context: ./debian12 file: ./debian12/Dockerfile push: true platforms: linux/arm64/v8 tags: | buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev, ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev, build-dev-amd64-recommended-node: name: Build dev amd64 image with recommended node version needs: [create-build-number] runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v6.0.1 with: repository: 'buanet/ioBroker.docker' - name: Set job variables run: | VERSION="$(cat .VERSION)" BUILD="${{ needs.create-build-number.outputs.build_number }}" # Log output and export as Github environment variable echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION_BETA }}" echo "[LOG] Image Version: $VERSION" echo "version=$VERSION" >> $GITHUB_ENV echo "[LOG] Buildnumber: $BUILD" echo "build=$BUILD" >> $GITHUB_ENV # Set values in iobroker_startup.sh sed -e "s/\${VERSION}/$VERSION-dev/" -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-dev/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.RECOMMENDED_NODE_VERSION_BETA }}/" ./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.12.0 - name: Login to DockerHub (buanet) uses: docker/login-action@v3.7.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3.7.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.18.0 with: context: ./debian12 file: ./debian12/Dockerfile push: true platforms: linux/amd64 tags: | buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev, ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev, create-multiarch-image-with-recommended-node: name: Create multiarch image with recommended node version runs-on: ubuntu-latest needs: [build-dev-arm64v8-recommended-node, build-dev-amd64-recommended-node, create-build-number] steps: - name: Checkout repo uses: actions/checkout@v6.0.1 with: repository: 'buanet/ioBroker.docker' - name: Set job variables run: | VERSION="$(cat .VERSION)" BUILD="${{ needs.create-build-number.outputs.build_number }}" # Log output and export as Github environment variable echo "[LOG] Nodejs Version: ${{ vars.RECOMMENDED_NODE_VERSION_BETA }}" echo "[LOG] Image Version: $VERSION" echo "version=$VERSION" >> $GITHUB_ENV echo "[LOG] Buildnumber: $BUILD" echo "build=$BUILD" >> $GITHUB_ENV - name: Login to DockerHub (buanet) uses: docker/login-action@v3.7.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3.7.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:dev buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev docker buildx imagetools create -t ghcr.io/buanet/iobroker:dev ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev ### experimental node version ### Deprecation of armv7 (2026-02-05) ### # build-dev-armv7-experimental-node: # name: Build dev armv7 image with experimental node version # needs: [create-build-number] # runs-on: ubuntu-latest # steps: # - name: Checkout repo # uses: actions/checkout@v6.0.1 # with: # repository: 'buanet/ioBroker.docker' # # - name: Set job variables # run: | # VERSION="$(cat .VERSION)" # BUILD="${{ needs.create-build-number.outputs.build_number }}" # # Log output and export as Github environment variable # echo "[LOG] Nodejs Version: ${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}" # echo "[LOG] Image Version: $VERSION" # echo "version=$VERSION" >> $GITHUB_ENV # echo "[LOG] Buildnumber: $BUILD" # echo "build=$BUILD" >> $GITHUB_ENV # # Set values in iobroker_startup.sh # sed -e "s/\${VERSION}/$VERSION-dev/" -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-dev/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp # mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile # # - name: Set up QEMU # uses: docker/setup-qemu-action@v3.7.0 # # - name: Set up Docker Buildx # id: buildx # uses: docker/setup-buildx-action@v3.12.0 # # - name: Login to DockerHub (buanet) # uses: docker/login-action@v3.7.0 # with: # username: ${{ secrets.DOCKER_USER }} # password: ${{ secrets.DOCKER_PASS }} # # - name: Login to GitHub Container Registry # uses: docker/login-action@v3.7.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.18.0 # with: # context: ./debian12 # file: ./debian12/Dockerfile # push: true # platforms: linux/arm/v7 # tags: | # buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}, # ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-armv7-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}, build-dev-arm64v8-experimental-node: name: Build dev armv64v8 image with experimental node version needs: [create-build-number] runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v6.0.1 with: repository: 'buanet/ioBroker.docker' - name: Set job variables run: | VERSION="$(cat .VERSION)" BUILD="${{ needs.create-build-number.outputs.build_number }}" # Log output and export as Github environment variable echo "[LOG] Nodejs Version: ${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}" echo "[LOG] Image Version: $VERSION" echo "version=$VERSION" >> $GITHUB_ENV echo "[LOG] Buildnumber: $BUILD" echo "build=$BUILD" >> $GITHUB_ENV # Set values in iobroker_startup.sh sed -e "s/\${VERSION}/$VERSION-dev/" -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-dev/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}/" ./debian12/Dockerfile > ./debian12/Dockerfile.tmp mv -f ./debian12/Dockerfile.tmp ./debian12/Dockerfile - name: Set up QEMU uses: docker/setup-qemu-action@v3.7.0 - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v3.12.0 - name: Login to DockerHub (buanet) uses: docker/login-action@v3.7.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3.7.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.18.0 with: context: ./debian12 file: ./debian12/Dockerfile push: true platforms: linux/arm64/v8 tags: | buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}, ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}, build-dev-amd64-experimental-node: name: Build dev amd64 image with experimental node version needs: [create-build-number] runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v6.0.1 with: repository: 'buanet/ioBroker.docker' - name: Set job variables run: | VERSION="$(cat .VERSION)" BUILD="${{ needs.create-build-number.outputs.build_number }}" # Log output and export as Github environment variable echo "[LOG] Nodejs Version: ${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}" echo "[LOG] Image Version: $VERSION" echo "version=$VERSION" >> $GITHUB_ENV echo "[LOG] Buildnumber: $BUILD" echo "build=$BUILD" >> $GITHUB_ENV # Set values in iobroker_startup.sh sed -e "s/\${VERSION}/$VERSION-dev/" -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-dev/" -e "s/\${DATI}/$BUILD/" -e "s/\${BUILD}/$BUILD/" -e "s/\${NODE}/${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}/" ./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.12.0 - name: Login to DockerHub (buanet) uses: docker/login-action@v3.7.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3.7.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.18.0 with: context: ./debian12 file: ./debian12/Dockerfile push: true platforms: linux/amd64 tags: | buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}, ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}, create-multiarch-image-with-experimental-node: name: Create multiarch image with experimental node version runs-on: ubuntu-latest needs: [build-dev-arm64v8-experimental-node, build-dev-amd64-experimental-node, create-build-number] steps: - name: Checkout repo uses: actions/checkout@v6.0.1 with: repository: 'buanet/ioBroker.docker' - name: Set job variables run: | VERSION="$(cat .VERSION)" BUILD="${{ needs.create-build-number.outputs.build_number }}" # Log output and export as Github environment variable echo "[LOG] Nodejs Version: ${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}" echo "[LOG] Image Version: $VERSION" echo "version=$VERSION" >> $GITHUB_ENV echo "[LOG] Buildnumber: $BUILD" echo "build=$BUILD" >> $GITHUB_ENV - name: Login to DockerHub (buanet) uses: docker/login-action@v3.7.0 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASS }} - name: Login to GitHub Container Registry uses: docker/login-action@v3.7.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:dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }} buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }} buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }} docker buildx imagetools create -t ghcr.io/buanet/iobroker:dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }} ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-arm64v8-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }} ghcr.io/buanet/iobroker:${{ env.version }}-build.${{ env.build }}-amd64-dev-node${{ vars.EXPERIMENTAL_NODE_VERSION_BETA }}