Skip to content

Add start of hue tap dial, fix mqtt sensor if len if more then 0, add… #975

Add start of hue tap dial, fix mqtt sensor if len if more then 0, add…

Add start of hue tap dial, fix mqtt sensor if len if more then 0, add… #975

name: diyHue CI Build
on:
push:
jobs:
build:
runs-on: ubuntu-latest
name: Build Docker Image
strategy:
matrix:
include:
- arch: linux/amd64
arch_friendly: amd64
- arch: linux/arm/v7
arch_friendly: armv7
- arch: linux/arm64
arch_friendly: arm64
- arch: linux/arm/v6
arch_friendly: armv6
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Enable qemu
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- uses: satackey/action-docker-layer-caching@v0.0.8
continue-on-error: true
with:
key: diyhue-cache-ci-${{ matrix.arch }}-{hash}
restore-keys: |
diyhue-cache-ci-${{ matrix.arch }}-
- name: Build docker image
run: |
docker build -t diyhue/diyhue:ci -f ./.build/Dockerfile --platform=${{ matrix.arch }} --build-arg TARGETPLATFORM=${{ matrix.arch }} .
- name: Save tarball
run: |
docker save --output output.tar diyhue/diyhue:ci
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: ci-${{ matrix.arch_friendly }}-${{ github.run_number }}.tar
path: output.tar
test:
needs: [build]
runs-on: ubuntu-latest
name: Test Image
strategy:
matrix:
arch: [amd64, armv7, arm64, armv6]
steps:
- name: Enable qemu
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- name: Download container artifact
uses: actions/download-artifact@v2
with:
name: ci-${{ matrix.arch }}-${{ github.run_number }}.tar
- name: Import image
run: |
docker load --input output.tar
- name: Run docker image
if: success()
run: |
docker run -d --name diyhue --network=host -v /mnt/hue-emulator/export:/opt/hue-emulator/export -e MAC=b8:27:eb:d4:dc:11 -e IP=192.168.1.123 -e DECONZ=192.168.1.111 -e IP_RANGE=5,6 -e DEBUG=true diyhue/diyhue:ci
sleep 15
docker logs diyhue
- name: Cleanup
run: |
docker kill diyhue
docker rm diyhue
publish:
needs: [build, test]
name: Publish Image
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, armv7, arm64, armv6]
registry: [registry.hub.docker.com, ghcr.io/diyhue]
steps:
- name: Set Docker Repository
run: |
if [ ${GITHUB_REPOSITORY} == "diyhue/diyHue" ]; then
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
export DOCKER_REPO="diyhue/core"
else
export DOCKER_REPO="${{ matrix.registry }}/diyhue/core"
fi
else
export DOCKER_REPO="${{ matrix.registry }}/$GITHUB_REPOSITORY"
fi
echo "DOCKER_REPO=${DOCKER_REPO}" >> $GITHUB_ENV
echo Repository set as: ${DOCKER_REPO}
- name: Docker login
run: |
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
else
echo "${{ secrets.CR_PAT }}" | docker login ${{ matrix.registry }} -u "${{ secrets.CR_USER }}" --password-stdin
fi
- name: Download container artifact
uses: actions/download-artifact@v2
with:
name: ci-${{ matrix.arch }}-${{ github.run_number }}.tar
- name: Import image
run: |
docker load --input output.tar
- name: Push Image
run: |
docker tag diyhue/diyhue:ci ${DOCKER_REPO}:${{ matrix.arch }}-${{ github.run_number }}
docker push ${DOCKER_REPO}:${{ matrix.arch }}-${{ github.run_number }}
echo ${DOCKER_REPO}:${{ matrix.arch }}-${{ github.run_number }} published
tag_build:
needs: [build, test, publish]
name: Tag Images
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, armv7, arm64, armv6]
registry: [registry.hub.docker.com, ghcr.io/diyhue]
steps:
- name: Set Docker Repository
run: |
if [ ${GITHUB_REPOSITORY} == "diyhue/diyHue" ]; then
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
export DOCKER_REPO="diyhue/core"
else
export DOCKER_REPO="${{ matrix.registry }}/diyhue/core"
fi
else
export DOCKER_REPO="${{ matrix.registry }}/$GITHUB_REPOSITORY"
fi
echo "DOCKER_REPO=${DOCKER_REPO}" >> $GITHUB_ENV
echo Repository set as: ${DOCKER_REPO}
- name: Enable Experimental Docker Features
run: |
export DOCKER_CLI_EXPERIMENTAL="enabled"
echo "DOCKER_CLI_EXPERIMENTAL=${DOCKER_CLI_EXPERIMENTAL}" >> $GITHUB_ENV
- name: Docker login
run: |
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
else
echo "${{ secrets.CR_PAT }}" | docker login ${{ matrix.registry }} -u "${{ secrets.CR_USER }}" --password-stdin
fi
- name: Download container artifact
uses: actions/download-artifact@v2
with:
name: ci-${{ matrix.arch }}-${{ github.run_number }}.tar
- name: Import image
run: |
docker load --input output.tar
- name: Deploy Commit ID
if: ${{ github.sha != '' }}
run: |
docker tag diyhue/diyhue:ci ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/}-$GITHUB_SHA
docker push ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/}-$GITHUB_SHA
echo ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/}-$GITHUB_SHA published
- name: Deploy Latest
if: ${{ github.ref == 'refs/heads/master' }}
run: |
docker tag diyhue/diyhue:ci ${DOCKER_REPO}:${{ matrix.arch }}-latest
docker push ${DOCKER_REPO}:${{ matrix.arch }}-latest
echo ${DOCKER_REPO}:${{ matrix.arch }}-latest published
- name: Deploy Branch
if: ${{ startsWith(github.ref, 'refs/heads/') }}
run: |
docker tag diyhue/diyhue:ci ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/}
docker push ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/}
echo ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/} published
- name: Deploy Tag
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
docker tag diyhue/diyhue:ci ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/}
docker push ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/}
echo ${DOCKER_REPO}:${{ matrix.arch }}-${GITHUB_REF##*/} published
tag_build_manifest:
needs: [build, test, publish]
name: Tag Images (Manifest)
runs-on: ubuntu-latest
strategy:
matrix:
registry: [registry.hub.docker.com, ghcr.io/diyhue]
steps:
- name: Set Docker Repository
run: |
if [ ${GITHUB_REPOSITORY} == "diyhue/diyHue" ]; then
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
export DOCKER_REPO="diyhue/core"
else
export DOCKER_REPO="${{ matrix.registry }}/diyhue/core"
fi
else
export DOCKER_REPO="${{ matrix.registry }}/$GITHUB_REPOSITORY"
fi
echo "DOCKER_REPO=${DOCKER_REPO}" >> $GITHUB_ENV
echo Repository set as: ${DOCKER_REPO}
- name: Enable Experimental Docker Features
run: |
export DOCKER_CLI_EXPERIMENTAL="enabled"
echo "DOCKER_CLI_EXPERIMENTAL=${DOCKER_CLI_EXPERIMENTAL}" >> $GITHUB_ENV
- name: Docker login
run: |
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
else
echo "${{ secrets.CR_PAT }}" | docker login ${{ matrix.registry }} -u "${{ secrets.CR_USER }}" --password-stdin
fi
- name: Deploy Commit ID
if: ${{ github.sha != '' }}
run: |
docker manifest create \
${DOCKER_REPO}:${GITHUB_REF##*/}-$GITHUB_SHA \
${DOCKER_REPO}:amd64-${{ github.run_number }} \
${DOCKER_REPO}:armv7-${{ github.run_number }} \
${DOCKER_REPO}:arm64-${{ github.run_number }} \
${DOCKER_REPO}:armv6-${{ github.run_number }}
docker manifest annotate ${DOCKER_REPO}:${GITHUB_REF##*/}-$GITHUB_SHA ${DOCKER_REPO}:armv6-${{ github.run_number }} --arch arm --variant v6
docker manifest annotate ${DOCKER_REPO}:${GITHUB_REF##*/}-$GITHUB_SHA ${DOCKER_REPO}:armv7-${{ github.run_number }} --arch arm --variant v7
docker manifest push ${DOCKER_REPO}:${GITHUB_REF##*/}-$GITHUB_SHA
echo ${DOCKER_REPO}:$GITHUB_SHA published
- name: Deploy Run Number
if: ${{ github.sha != '' }}
run: |
docker manifest create \
${DOCKER_REPO}:$GITHUB_RUN_NUMBER \
${DOCKER_REPO}:amd64-${{ github.run_number }} \
${DOCKER_REPO}:armv7-${{ github.run_number }} \
${DOCKER_REPO}:arm64-${{ github.run_number }} \
${DOCKER_REPO}:armv6-${{ github.run_number }}
docker manifest annotate ${DOCKER_REPO}:$GITHUB_RUN_NUMBER ${DOCKER_REPO}:armv6-${{ github.run_number }} --arch arm --variant v6
docker manifest annotate ${DOCKER_REPO}:$GITHUB_RUN_NUMBER ${DOCKER_REPO}:armv7-${{ github.run_number }} --arch arm --variant v7
docker manifest push ${DOCKER_REPO}:$GITHUB_RUN_NUMBER
echo ${DOCKER_REPO}:$GITHUB_RUN_NUMBER published
- name: Deploy Latest
if: ${{ github.ref == 'refs/heads/master' }}
run: |
docker manifest create \
${DOCKER_REPO}:latest \
${DOCKER_REPO}:amd64-${{ github.run_number }} \
${DOCKER_REPO}:armv7-${{ github.run_number }} \
${DOCKER_REPO}:arm64-${{ github.run_number }} \
${DOCKER_REPO}:armv6-${{ github.run_number }}
docker manifest annotate ${DOCKER_REPO}:latest ${DOCKER_REPO}:armv6-${{ github.run_number }} --arch arm --variant v6
docker manifest annotate ${DOCKER_REPO}:latest ${DOCKER_REPO}:armv7-${{ github.run_number }} --arch arm --variant v7
docker manifest push ${DOCKER_REPO}:latest
echo ${DOCKER_REPO}:latest published
- name: Deploy Branch
if: ${{ startsWith(github.ref, 'refs/heads/') }}
run: |
docker manifest create \
${DOCKER_REPO}:${GITHUB_REF##*/} \
${DOCKER_REPO}:amd64-${{ github.run_number }} \
${DOCKER_REPO}:armv7-${{ github.run_number }} \
${DOCKER_REPO}:arm64-${{ github.run_number }} \
${DOCKER_REPO}:armv6-${{ github.run_number }}
docker manifest annotate ${DOCKER_REPO}:${GITHUB_REF##*/} ${DOCKER_REPO}:armv6-${{ github.run_number }} --arch arm --variant v6
docker manifest annotate ${DOCKER_REPO}:${GITHUB_REF##*/} ${DOCKER_REPO}:armv7-${{ github.run_number }} --arch arm --variant v7
docker manifest push ${DOCKER_REPO}:${GITHUB_REF##*/}
echo ${DOCKER_REPO}:${GITHUB_REF##*/} published
- name: Deploy Tag
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
docker manifest create \
${DOCKER_REPO}:${GITHUB_REF##*/} \
${DOCKER_REPO}:amd64-${{ github.run_number }} \
${DOCKER_REPO}:armv7-${{ github.run_number }} \
${DOCKER_REPO}:arm64-${{ github.run_number }} \
${DOCKER_REPO}:armv6-${{ github.run_number }}
docker manifest annotate ${DOCKER_REPO}:${GITHUB_REF##*/} ${DOCKER_REPO}:armv6-${{ github.run_number }} --arch arm --variant v6l
docker manifest annotate ${DOCKER_REPO}:${GITHUB_REF##*/} ${DOCKER_REPO}:armv7-${{ github.run_number }} --arch arm --variant v7l
docker manifest push ${DOCKER_REPO}:${GITHUB_REF##*/}
echo ${DOCKER_REPO}:${GITHUB_REF##*/} published
retag_arch:
needs: [build, test, publish, tag_build, tag_build_manifest]
name: Tag images to correct architecture
runs-on: ubuntu-latest
strategy:
matrix:
registry: [registry.hub.docker.com, ghcr.io/diyhue]
include:
- version: v7l
arch_friendly: armv7
- version: v6l
arch_friendly: armv6
steps:
- name: Set Docker Repository
run: |
if [ ${GITHUB_REPOSITORY} == "diyhue/diyHue" ]; then
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
export DOCKER_REPO="diyhue/core"
else
export DOCKER_REPO="${{ matrix.registry }}/diyhue/core"
fi
else
export DOCKER_REPO="${{ matrix.registry }}/$GITHUB_REPOSITORY"
fi
echo "DOCKER_REPO=${DOCKER_REPO}" >> $GITHUB_ENV
echo Repository set as: ${DOCKER_REPO}
- name: Enable Experimental Docker Features
run: |
export DOCKER_CLI_EXPERIMENTAL="enabled"
echo "DOCKER_CLI_EXPERIMENTAL=${DOCKER_CLI_EXPERIMENTAL}" >> $GITHUB_ENV
- name: Docker login
run: |
if [ ${{ matrix.registry }} == "registry.hub.docker.com" ]; then
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
else
echo "${{ secrets.CR_PAT }}" | docker login ${{ matrix.registry }} -u "${{ secrets.CR_USER }}" --password-stdin
fi
- name: Commit ID
if: ${{ github.sha != '' }}
run: |
docker manifest create ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}-$GITHUB_SHA ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}-$GITHUB_SHA
docker manifest annotate ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}-$GITHUB_SHA ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}-$GITHUB_SHA --arch arm --variant ${{ matrix.version }}
docker manifest push ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}-$GITHUB_SHA
- name: Run ID
run: |
docker manifest create ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${{ github.run_number }} ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${{ github.run_number }}
docker manifest annotate ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${{ github.run_number }} ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${{ github.run_number }} --arch arm --variant ${{ matrix.version }}
docker manifest push ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${{ github.run_number }}
- name: Latest
if: ${{ github.ref == 'refs/heads/master' }}
run: |
docker manifest create ${DOCKER_REPO}:${{ matrix.arch_friendly }}-latest ${DOCKER_REPO}:${{ matrix.arch_friendly }}-latest
docker manifest annotate ${DOCKER_REPO}:${{ matrix.arch_friendly }}-latest ${DOCKER_REPO}:${{ matrix.arch_friendly }}-latest --arch arm --variant ${{ matrix.version }}
docker manifest push ${DOCKER_REPO}:${{ matrix.arch_friendly }}-latest
- name: Branch
if: ${{ startsWith(github.ref, 'refs/heads/') }}
run: |
docker manifest create ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/} ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}
docker manifest annotate ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/} ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/} --arch arm --variant ${{ matrix.version }}
docker manifest push ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}
- name: Tag
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: |
docker manifest create ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/} ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}
docker manifest annotate ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/} ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/} --arch arm --variant ${{ matrix.version }}
docker manifest push ${DOCKER_REPO}:${{ matrix.arch_friendly }}-${GITHUB_REF##*/}
cleanup_failed:
needs: [build, test]
if: failure()
name: Delete failed artifacts
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, armv7, arm64, armv6]
steps:
- uses: geekyeggo/delete-artifact@v1
with:
name: ci-${{ matrix.arch }}-${{ github.run_number }}.tar