# yamllint disable rule:line-length # shellcheck disable=SC2043 --- name: Check PR Build on: pull_request: branches: - master jobs: check-addon-changes: runs-on: ubuntu-latest outputs: changedAddons: ${{ steps.filter.outputs.changes }} changedChangelogFiles: ${{ steps.changed-files.outputs.changelogs_files }} steps: - name: â†Šī¸ Checkout uses: actions/checkout@v3 - name: 📂 Detect chanced addons uses: dorny/paths-filter@v2 id: filter with: filters: .github/paths-filter.yml - name: 📂 Detect chanced files uses: dorny/paths-filter@v2 id: changed-files with: list-files: csv filters: | changelogs: - '**/CHANGELOG.md' check-changed-changelog: name: Check if CHANGELOG.md changed if: ${{ needs.check-addon-changes.outputs.changedAddons != '[]' }} runs-on: ubuntu-latest needs: check-addon-changes strategy: fail-fast: false matrix: addon: ${{ fromJSON(needs.check-addon-changes.outputs.changedAddons) }} steps: - name: 🔎 Check for updated CHANGELOG.md shell: bash run: | # shellcheck disable=SC2076,SC2059 if [[ ! "${{ needs.check-addon-changes.outputs.changedChangelogFiles }}" =~ "${{ matrix.addon }}/CHANGELOG.md" ]]; then echo "::error::No new entries in ${{ matrix.addon }} CHANGELOG.md file!" exit 1 fi check-addon-label: name: Check for existance of the addon label if: ${{ needs.check-addon-changes.outputs.changedAddons != '[]' }} runs-on: ubuntu-latest needs: check-addon-changes strategy: fail-fast: false matrix: addon: ${{ fromJSON(needs.check-addon-changes.outputs.changedAddons) }} steps: - name: â†Šī¸ Checkout uses: actions/checkout@v3 - name: 🔎 Check if a label for the addon exists shell: bash run: | labeltext=$(sed -nr "/${{ matrix.addon }}/p" '.github/paths-filter.yml') if [[ -z "$labeltext" ]]; then echo "::error::There is no label for this addon! Please add it to .github/paths-filter.yml" exit 1 fi addon-linter: name: Addon linting if: ${{ needs.check-addon-changes.outputs.changedAddons != '[]' }} runs-on: ubuntu-latest needs: check-addon-changes strategy: fail-fast: false matrix: addon: ${{ fromJSON(needs.check-addon-changes.outputs.changedAddons) }} steps: - name: â†Šī¸ Checkout uses: actions/checkout@v3 - name: 🔎 Run Home Assistant Add-on Lint uses: frenck/action-addon-linter@v2 with: path: "./${{ matrix.addon }}" check-build: name: Test addon build if: ${{ needs.check-addon-changes.outputs.changedAddons != '[]' }} runs-on: ubuntu-latest needs: check-addon-changes uses: ./.github/workflows/onpush_builder.yaml