Skip to content

chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v5 #49

chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v5

chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v5 #49

Workflow file for this run

---
name: Main
env:
BUILD_ARGS: '--test'
MONITORED_FILES: 'apparmor.txt build.yaml config.yaml Dockerfile rootfs'
'on':
pull_request:
branches: [main]
types: [opened, synchronize, ready_for_review, reopened]
push:
branches: [main]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
prepare:
runs-on: ubuntu-latest
name: Prepare
outputs:
changed_addons: ${{ steps.changed_addons.outputs.addons }}
changed: ${{ steps.changed_addons.outputs.changed }}
steps:
- name: Check out the repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- 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@b227dff9ccf75101173b686878bc63852de8ea46 # 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.prepare.outputs.changed == 'true'
name: Lint add-on ${{ matrix.addon }}
needs: prepare
runs-on: ubuntu-latest
strategy:
matrix:
addon: ${{ fromJson(needs.prepare.outputs.changed_addons) }}
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: 🚀 Run Home Assistant Add-on Lint
uses: frenck/action-addon-linter@4d0965b4072596c4b2768a1d9eb6edd41d639a63 # v2.18.0
with:
path: './${{ matrix.addon }}'
lint-prettier:
name: Prettier
runs-on: ubuntu-latest
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
ref: ${{ github.head_ref }}
- name: 💅🏽 Run Prettier
uses: creyD/prettier_action@31355f8eef017f8aeba2e0bc09d8502b13dbbad1 # v4.3
env:
PRETTIER_VERSION: 3.4.1 # renovate: datasource=npm depName=prettier
with:
dry: true
only_changed: true
prettier_options: --check .
prettier_version: ${{ env.PRETTIER_VERSION }}
lint:
name: Lint
needs: [lint-addon, lint-prettier]
runs-on: ubuntu-latest
steps:
- name: Complete
run: echo "Lint completed"
build-addon:
needs: [lint, prepare]
runs-on: ubuntu-latest
if: needs.prepare.outputs.changed == 'true'
name: Build add-on ${{ matrix.addon }}-${{ matrix.arch }}
strategy:
matrix:
addon: ${{ fromJson(needs.prepare.outputs.changed_addons) }}
arch: ['aarch64', 'amd64', 'armhf', 'armv7', 'i386']
steps:
- name: Check out repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Get information
id: info
uses: home-assistant/actions/helpers/info@b227dff9ccf75101173b686878bc63852de8ea46 # 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@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.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/builder@2024.08.2
with:
args: |
${{ env.BUILD_ARGS }} \
--${{ matrix.arch }} \
--target /data/${{ matrix.addon }} \
--image "${{ steps.check.outputs.image }}" \
--docker-hub "ghcr.io/${{ github.repository_owner }}" \
--addon
build:
name: Build
needs: [build-addon]
runs-on: ubuntu-latest
steps:
- name: Complete
run: echo "Build completed"