app-misc/homeassistant 2026.4.0 #525
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Continous Integration | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches-ignore: | |
| - master | |
| pull_request: | |
| branches: | |
| - master | |
| jobs: | |
| ########################################################################################## | |
| ### Static checks | |
| ### | |
| pkgcheck: | |
| runs-on: ubuntu-latest | |
| needs: state_pkgcheck_init | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: pkgcore/pkgcheck-action@v1 | |
| shellcheck: | |
| name: shellcheck | |
| needs: state_shellcheck_init | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: ludeeus/action-shellcheck@master | |
| env: | |
| SHELLCHECK_OPTS: -s bash -e SC2034 -e SC2016 | |
| with: | |
| additional_files: '*.ebuild' | |
| ignore_paths: >- | |
| ./dev-python/pydevd/*.ebuild | |
| ./dev-python/pyrate-limiter/*.ebuild | |
| ./net-analyzer/nmap/*.ebuild | |
| ########################################################################################## | |
| ### CHECK gentoo dependencies aka. emerge --pretend | |
| ### | |
| check_esphome: | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/xavierforestier/gentoo-ci-ha:main | |
| options: --privileged | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup HomeAssistant repository | |
| run: | | |
| rsync -aHDPSv etc/portage/ /etc/portage/ | |
| echo -n "location = " >> /etc/portage/repos.conf/homeassistant.conf | |
| pwd -P >> /etc/portage/repos.conf/homeassistant.conf | |
| git config --global --add safe.directory . | |
| - name: Check deps... dev-embedded/esphome... | |
| run: | | |
| echo -n "" > /etc/portage/package.use/zzz.use | |
| emerge -pv --verbose-conflicts --deep --with-bdeps=y --newuse --backtrack=300 \ | |
| --autounmask=y --autounmask-continue=y --autounmask-write=y --autounmask-license=y --autounmask-backtrack=y \ | |
| --autounmask-use=y --autounmask-keep-masks=n --autounmask-keep-keywords=n \ | |
| dev-embedded/esphome >/tmp/out 2>/tmp/err || true | |
| echo "::group::emerge stdout" | |
| cat /tmp/out | |
| echo "::endgroup::" | |
| echo "::group::emerge stderr" | |
| cat /tmp/err | |
| echo "::endgroup::" | |
| if ! grep -q "\[ebuild N \] dev-embedded/esphome-" /tmp/out; then | |
| echo "::error::emerge dev-embedded/esphome failed" | |
| exit 1 | |
| elif [ -s /tmp/err ]; then | |
| echo "::warning::emerge dev-embedded/esphome raised warning" | |
| fi | |
| check_homeassistant : | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/xavierforestier/gentoo-ci-ha:main | |
| options: --privileged | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup HomeAssistant repository | |
| run: | | |
| rsync -aHDPSv etc/portage/ /etc/portage/ | |
| echo -n "location = " >> /etc/portage/repos.conf/homeassistant.conf | |
| pwd -P >> /etc/portage/repos.conf/homeassistant.conf | |
| git config --global --add safe.directory . | |
| echo "<app-misc/$(find app-misc/homeassistant/*.ebuild | sort -r | head -n1 | rev | cut -d/ -f1 | cut -d. -f2- | rev)" > /etc/portage/package.mask | |
| - name: Check deps...homeassistant[minimal] | |
| run: | | |
| rm /etc/portage/package.use/._cfg0000_zzz.use || true | |
| touch /etc/portage/package.use/zzz.use | |
| echo "virtual/homeassistant minimal -normal -full" > /etc/portage/package.use/virtual-homeassistant.use | |
| emerge -pv --verbose-conflicts --deep --with-bdeps=y --newuse --backtrack=300 \ | |
| --autounmask=y --autounmask-continue=y --autounmask-write=y --autounmask-license=y --autounmask-backtrack=y \ | |
| --autounmask-use=y --autounmask-keep-masks=n --autounmask-keep-keywords=n \ | |
| =app-misc/$(find app-misc/homeassistant/*.ebuild | sort -r | head -n1 | rev | cut -d/ -f1 | cut -d. -f2- | rev) virtual/homeassistant >/tmp/out 2>/tmp/err || true | |
| echo "::group::emerge stdout" | |
| cat /tmp/out | |
| echo "::endgroup::" | |
| echo "::group::emerge stderr" | |
| cat /tmp/err | |
| echo "::endgroup::" | |
| if ! grep -q "\[ebuild N \] app-misc/$(find app-misc/homeassistant/*.ebuild | sort -r | head -n1 | rev | cut -d/ -f1 | cut -d. -f2- | rev)::HomeAssistantRepository " /tmp/out; then | |
| echo "::error::emerge virtual/homeassistant[minimal] failed" | |
| exit 1 | |
| elif [ -s /tmp/err ]; then | |
| echo "::warning::emerge virtual/homeassistant[minimal] raised warning" | |
| fi | |
| - name: Check deps...homeassistant[normal] | |
| run: | | |
| rm /etc/portage/package.use/._cfg0000_zzz.use || true | |
| touch /etc/portage/package.use/zzz.use | |
| echo "virtual/homeassistant -minimal normal -full" > /etc/portage/package.use/virtual-homeassistant.use | |
| emerge -pv --verbose-conflicts --deep --with-bdeps=y --newuse --backtrack=300 \ | |
| --autounmask=y --autounmask-continue=y --autounmask-write=y --autounmask-license=y --autounmask-backtrack=y \ | |
| --autounmask-use=y --autounmask-keep-masks=n --autounmask-keep-keywords=n \ | |
| =app-misc/$(find app-misc/homeassistant/*.ebuild | sort -r | head -n1 | rev | cut -d/ -f1 | cut -d. -f2- | rev) virtual/homeassistant >/tmp/out 2>/tmp/err || true | |
| echo "::group::emerge stdout" | |
| cat /tmp/out | |
| echo "::endgroup::" | |
| echo "::group::emerge stderr" | |
| cat /tmp/err | |
| echo "::endgroup::" | |
| if ! grep -q "\[ebuild N \] app-misc/$(find app-misc/homeassistant/*.ebuild | sort -r | head -n1 | rev | cut -d/ -f1 | cut -d. -f2- | rev)::HomeAssistantRepository " /tmp/out; then | |
| echo "::error::emerge virtual/homeassistant[normal] failed" | |
| exit 1 | |
| elif [ -s /tmp/err ]; then | |
| echo "::warning::emerge virtual/homeassistant[normal] raised warning" | |
| fi | |
| - name: Check deps...homeassistant[full] | |
| run: | | |
| rm /etc/portage/package.use/._cfg0000_zzz.use || true | |
| touch /etc/portage/package.use/zzz.use | |
| echo "virtual/homeassistant -minimal -normal full" > /etc/portage/package.use/virtual-homeassistant.use | |
| emerge -pv --verbose-conflicts --deep --with-bdeps=y --newuse --backtrack=300 \ | |
| --autounmask=y --autounmask-continue=y --autounmask-write=y --autounmask-license=y --autounmask-backtrack=y \ | |
| --autounmask-use=y --autounmask-keep-masks=n --autounmask-keep-keywords=n \ | |
| =app-misc/$(find app-misc/homeassistant/*.ebuild | sort -r | head -n1 | rev | cut -d/ -f1 | cut -d. -f2- | rev) virtual/homeassistant >/tmp/out 2>/tmp/err || true | |
| echo "::group::emerge stdout" | |
| cat /tmp/out | |
| echo "::endgroup::" | |
| echo "::group::emerge stderr" | |
| cat /tmp/err | |
| echo "::endgroup::" | |
| if ! grep -q "\[ebuild N \] app-misc/$(find app-misc/homeassistant/*.ebuild | sort -r | head -n1 | rev | cut -d/ -f1 | cut -d. -f2- | rev)::HomeAssistantRepository " /tmp/out; then | |
| echo "::error::emerge virtual/homeassistant[full] failed" | |
| exit 1 | |
| elif [ -s /tmp/err ]; then | |
| echo "::warning::emerge virtual/homeassistant[full] raised warning" | |
| fi | |
| check_nodered: | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/xavierforestier/gentoo-ci-ha:main | |
| options: --privileged | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup HomeAssistant repository | |
| run: | | |
| rsync -aHDPSv etc/portage/ /etc/portage/ | |
| echo -n "location = " >> /etc/portage/repos.conf/homeassistant.conf | |
| pwd -P >> /etc/portage/repos.conf/homeassistant.conf | |
| git config --global --add safe.directory . | |
| - name: Check deps... app-misc/node-red | |
| run: | | |
| echo -n "" > /etc/portage/package.use/zzz.use | |
| emerge -pv --verbose-conflicts --deep --with-bdeps=y --newuse --backtrack=300 \ | |
| --autounmask=y --autounmask-continue=y --autounmask-write=y --autounmask-license=y --autounmask-backtrack=y \ | |
| --autounmask-use=y --autounmask-keep-masks=n --autounmask-keep-keywords=n \ | |
| app-misc/node-red >/tmp/out 2>/tmp/err || true | |
| echo "::group::emerge stdout" | |
| cat /tmp/out | |
| echo "::endgroup::" | |
| echo "::group::emerge stderr" | |
| cat /tmp/err | |
| echo "::endgroup::" | |
| if ! grep -q "\[ebuild N \] app-misc/node-red-" /tmp/out; then | |
| echo "::error::emerge app-misc/node-red failed" | |
| exit 1 | |
| elif [ -s /tmp/err ]; then | |
| echo "::warning::emerge app-misc/node-red raised warning" | |
| fi | |
| check_zigbee2mqtt: | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/xavierforestier/gentoo-ci-ha:main | |
| options: --privileged | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup HomeAssistant repository | |
| run: | | |
| rsync -aHDPSv etc/portage/ /etc/portage/ | |
| echo -n "location = " >> /etc/portage/repos.conf/homeassistant.conf | |
| pwd -P >> /etc/portage/repos.conf/homeassistant.conf | |
| git config --global --add safe.directory . | |
| - name: Check deps... app-misc/zigbee2mqtt | |
| run: | | |
| echo -n "" > /etc/portage/package.use/zzz.use | |
| emerge -pv --verbose-conflicts --deep --with-bdeps=y --newuse --backtrack=300 \ | |
| --autounmask=y --autounmask-continue=y --autounmask-write=y --autounmask-license=y --autounmask-backtrack=y \ | |
| --autounmask-use=y --autounmask-keep-masks=n --autounmask-keep-keywords=n \ | |
| app-misc/zigbee2mqtt >/tmp/out 2>/tmp/err || true | |
| echo "::group::emerge stdout" | |
| cat /tmp/out | |
| echo "::endgroup::" | |
| echo "::group::emerge stderr" | |
| cat /tmp/err | |
| echo "::endgroup::" | |
| if ! grep -q "\[ebuild N \] app-misc/zigbee2mqtt-" /tmp/out; then | |
| echo "::error::emerge app-misc/zigbee2mqtt failed" | |
| exit 1 | |
| elif [ -s /tmp/err ]; then | |
| echo "::warning::emerge app-misc/zigbee2mqtt raised warning" | |
| fi | |
| ########################################################################################## | |
| ### BUILD part (aka make sure emerge each main packages and its dependencies) | |
| ### | |
| build_esphome: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/esphome.yml@master | |
| needs: state_esphome_init | |
| secrets: inherit | |
| build_homeassistant: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/homeassistant.yml@master | |
| needs: state_homeassistant_init | |
| secrets: inherit | |
| build_nodered: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/nodered.yml@master | |
| needs: state_nodered_init | |
| secrets: inherit | |
| build_zigbee2mqtt: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/zigbee2mqtt.yml@master | |
| needs: state_zigbee2mqtt_init | |
| secrets: inherit | |
| ########################################################################################## | |
| ### README.md state updates steps | |
| ### | |
| state_pkgcheck_init: | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/update-readme.yml@master | |
| with: | |
| pkg-name: pkgcheck | |
| pkg-version: 'pkgcheck%20(running...)' | |
| pkg-status: '' | |
| autoretry: true | |
| secrets: inherit | |
| state_pkgcheck_complete: | |
| if: success() || failure() | |
| needs: pkgcheck | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/update-readme.yml@master | |
| with: | |
| pkg-name: pkgcheck | |
| pkg-version: pkgcheck | |
| pkg-status: ${{ needs.pkgcheck.result }} | |
| autoretry: true | |
| secrets: inherit | |
| state_shellcheck_init: | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/update-readme.yml@master | |
| with: | |
| pkg-name: shellcheck | |
| pkg-version: 'shellcheck%20(running...)' | |
| pkg-status: '' | |
| autoretry: true | |
| secrets: inherit | |
| state_shellcheck_complete: | |
| if: success() || failure() | |
| name: shellcheck_complete | |
| needs: shellcheck | |
| uses: xavierforestier/HomeAssistantRepository/.github/workflows/update-readme.yml@master | |
| with: | |
| pkg-name: shellcheck | |
| pkg-version: shellcheck | |
| pkg-status: ${{ needs.shellcheck.result }} | |
| autoretry: true | |
| secrets: inherit | |
| state_esphome_init: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| needs: [ check_zigbee2mqtt, check_esphome, check_nodered, check_homeassistant, state_pkgcheck_complete, state_shellcheck_complete ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: | | |
| git config --local user.name "xavier.forestier" | |
| git config --local user.email "{ID}+{username}@users.noreply.github.com" | |
| git fetch | |
| version=$( echo $( find ./dev-embedded/esphome -type f -name "*.ebuild" | sort -r | head -n1 ) | rev | cut -d/ -f1 | cut -d. -f2- | cut -d- -f1 | rev ) | |
| git switch master | |
| git pull --no-rebase | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/esphomejob-\\)[^-]*-[^\\?]*/\\1esphome%20\\(running\\.\\.\\.\\)-lightgrey/" README.md | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/esphome-\\)[^-]*-[^\\?]*/\\1${version}-lightgrey/" README.md | |
| git add README.md | |
| git commit -m "[CI]Update esphome status" || true | |
| git pull --no-rebase | |
| git push --force-with-lease | |
| state_homeassistant_init: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| needs: state_esphome_init | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: | | |
| git config --local user.name "xavier.forestier" | |
| git config --local user.email "{ID}+{username}@users.noreply.github.com" | |
| git fetch | |
| version=$( echo $( find ./app-misc/homeassistant -type f -name "*.ebuild" | sort -r | head -n1 ) | rev | cut -d/ -f1 | cut -d. -f2- | cut -d- -f1 | rev ) | |
| git switch master | |
| git pull --no-rebase | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/homeassistant_minimal-\\)[^-]*-[^\\?]*/\\1homeassistant\\[minimal\\]%20\\(running\\.\\.\\.\\)-lightgrey/" README.md | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/homeassistant_normal-\\)[^-]*-[^\\?]*/\\1homeassistant\\[normal\\]%20\\(running\\.\\.\\.\\)-lightgrey/" README.md | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/homeassistant_full-\\)[^-]*-[^\\?]*/\\1homeassistant\\[full\\]%20\\(running\\.\\.\\.\\)-lightgrey/" README.md | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/homeassistant-\\)[^-]*-[^\\?]*/\\1${version}-lightgrey/" README.md | |
| git add README.md | |
| git commit -m "[CI]Update homeassistant status" || true | |
| git pull --no-rebase | |
| git push --force-with-lease | |
| state_nodered_init: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| needs: state_homeassistant_init | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: | | |
| git config --local user.name "xavier.forestier" | |
| git config --local user.email "{ID}+{username}@users.noreply.github.com" | |
| git fetch | |
| version=$( echo $( find ./app-misc/node-red -type f -name "*.ebuild" | sort -r | head -n1 ) | rev | cut -d/ -f1 | cut -d. -f2- | cut -d- -f1 | rev ) | |
| git switch master | |
| git pull --no-rebase | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/noderedjob-\\)[^-]*-[^\\?]*/\\1node-red%20\\(running\\.\\.\\.\\)-lightgrey/" README.md | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/node-red-\\)[^-]*-[^\\?]*/\\1${version}-lightgrey/" README.md | |
| git add README.md | |
| git commit -m "[CI]Update node-red status" || true | |
| git pull --no-rebase | |
| git push --force-with-lease | |
| state_zigbee2mqtt_init: | |
| if: github.event_name == 'pull_request' || github.ref == 'refs/heads/master' | |
| needs: state_nodered_init | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - run: | | |
| git config --local user.name "xavier.forestier" | |
| git config --local user.email "{ID}+{username}@users.noreply.github.com" | |
| git fetch | |
| version=$( echo $( find ./app-misc/zigbee2mqtt -type f -name "*.ebuild" | sort -r | head -n1 ) | rev | cut -d/ -f1 | cut -d. -f2- | cut -d- -f1 | rev ) | |
| git switch master | |
| git pull --no-rebase | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/zigbee2mqttjob-\\)[^-]*-[^\\?]*/\\1zigbee2mqtt%20\\(running\\.\\.\\.\\)-lightgrey/" README.md | |
| sed -ie "s/\\(https:\\/\\/img\\.shields\\.io\\/badge\\/zigbee2mqtt-\\)[^-]*-[^\\?]*/\\1${version}-lightgrey/" README.md | |
| git add README.md | |
| git commit -m "[CI]Update zigbee2mqtt status" || true | |
| git pull --no-rebase | |
| git push --force-with-lease |