Skip to content

app-misc/homeassistant 2026.4.0 #525

app-misc/homeassistant 2026.4.0

app-misc/homeassistant 2026.4.0 #525

Workflow file for this run

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