Skip to content

chore(deps): update Home Assistant Add-ons to v3.20 #577

chore(deps): update Home Assistant Add-ons to v3.20

chore(deps): update Home Assistant Add-ons to v3.20 #577

Workflow file for this run

---
name: CI
env:
BUILD_ARGS: '--test'
MONITORED_FILES: 'apparmor.txt build.yaml config.yaml Dockerfile rootfs'
'on':
push:
pull_request:
types: [opened, synchronize]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true
jobs:
init:
runs-on: ubuntu-latest
name: Initialize builds
outputs:
changed_addons: ${{ steps.changed_addons.outputs.addons }}
changed: ${{ steps.changed_addons.outputs.changed }}
steps:
- name: Check out the repository
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Get changed files
id: changed_files
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
with:
filters: |
changed:
- '**'
list-files: shell
- name: Find add-on directories
id: addons
uses: home-assistant/actions/helpers/find-addons@d371da1356e1bb91f382f431fcf9bfe9810a7ab2 # master
- name: Get changed add-ons
id: changed_addons
run: |
declare -a changed_addons
for addon in ${{ steps.addons.outputs.addons }}; do
if [[ "${{ steps.changed_files.outputs.changed_files }}" =~ $addon ]]; then
for file in ${{ env.MONITORED_FILES }}; do
if [[ "${{ steps.changed_files.outputs.changed_files }}" =~ $addon/$file ]]; then
if [[ ! "${changed_addons[@]}" =~ $addon ]]; then
changed_addons+=("\"${addon}\",");
fi
fi
done
fi
done
changed=$(echo ${changed_addons[@]} | rev | cut -c 2- | rev)
if [[ -n ${changed} ]]; then
echo "Changed add-ons: $changed";
echo "changed=true" >> $GITHUB_OUTPUT;
echo "addons=[$changed]" >> $GITHUB_OUTPUT;
else
echo "No add-on had any monitored files changed (${{ env.MONITORED_FILES }})";
fi
lint-addon:
if: needs.init.outputs.changed == 'true'
name: Lint add-on
needs: init
runs-on: ubuntu-latest
strategy:
matrix:
addon: ${{ fromJson(needs.init.outputs.changed_addons) }}
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: 🚀 Run Home Assistant Add-on Lint
uses: frenck/action-addon-linter@ff6d3f336a022f828885b510e5d05dd9b2500f74 # v2.15.1
with:
path: './${{ matrix.addon }}'
lint-prettier:
name: Prettier
runs-on: ubuntu-latest
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
- name: 💅🏽 Run Prettier
uses: creyD/prettier_action@31355f8eef017f8aeba2e0bc09d8502b13dbbad1 # v4.3
env:
PRETTIER_VERSION: 3.2.5 # renovate: datasource=npm depName=prettier
with:
dry: true
only_changed: true
prettier_options: --check .
prettier_version: ${{ env.PRETTIER_VERSION }}
build:
needs: init
runs-on: ubuntu-latest
if: needs.init.outputs.changed == 'true'
name: Build ${{ matrix.arch }} ${{ matrix.addon }} add-on
strategy:
matrix:
addon: ${{ fromJson(needs.init.outputs.changed_addons) }}
arch: ['aarch64', 'amd64', 'armhf', 'armv7', 'i386']
steps:
- name: Check out repository
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Get information
id: info
uses: home-assistant/actions/helpers/info@d371da1356e1bb91f382f431fcf9bfe9810a7ab2 # master
with:
path: './${{ matrix.addon }}'
- name: Check if add-on is being built for architecture
id: check
run: |
if [[ "${{ steps.info.outputs.architectures }}" =~ ${{ matrix.arch }} ]]; then
echo "build_arch=true" >> $GITHUB_OUTPUT;
echo "image=$(echo ${{ steps.info.outputs.image }} | cut -d'/' -f3)" >> $GITHUB_OUTPUT;
else
echo "${{ matrix.arch }} is not a valid arch for ${{ matrix.addon }}, skipping build";
fi
- name: Set build arguments
if: >-
steps.check.outputs.build_arch == 'true' &&
(
(github.event_name == 'push' && github.head_ref == '') ||
github.event_name == 'workflow_dispatch'
)
run: echo "BUILD_ARGS=" >> $GITHUB_ENV
- name: Login to GitHub Container Registry
if: env.BUILD_ARGS != '--test'
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build ${{ matrix.addon }} add-on
if: steps.check.outputs.build_arch == 'true'
uses: home-assistant/[email protected]
with:
args: |
${{ env.BUILD_ARGS }} \
--${{ matrix.arch }} \
--target /data/${{ matrix.addon }} \
--image "${{ steps.check.outputs.image }}" \
--docker-hub "ghcr.io/${{ github.repository_owner }}" \
--addon