diff --git a/.github/workflows/builder.yaml b/.github/workflows/builder.yaml index a1f7145..c02f43c 100644 --- a/.github/workflows/builder.yaml +++ b/.github/workflows/builder.yaml @@ -1,8 +1,10 @@ -name: Builder +--- +# yamllint disable rule:line-length rule:truthy +name: Build add-on env: BUILD_ARGS: "--test" - MONITORED_FILES: "build.yaml config.yaml Dockerfile rootfs" + MONITORED_FILES: "apparmor.txt build.yaml config.yaml Dockerfile data rootfs" on: push: @@ -17,19 +19,25 @@ jobs: runs-on: ubuntu-latest name: Initialize builds outputs: + changed_files: ${{ steps.changed_files.outputs.all }} changed_addons: ${{ steps.changed_addons.outputs.addons }} changed: ${{ steps.changed_addons.outputs.changed }} steps: - name: Check out the repository - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v3 - name: Get changed files id: changed_files uses: jitterbit/get-changed-files@v1 - - name: Find add-on directories + - name: Get add-ons id: addons - uses: home-assistant/actions/helpers/find-addons@master + run: | + declare -a addons + for addon in $(find ./ -name config.yaml | cut -d "/" -f2 | sort -u); do + addons+=("$addon"); + done + echo "addons=${addons[@]}" >> "$GITHUB_OUTPUT" - name: Get changed add-ons id: changed_addons @@ -48,14 +56,14 @@ jobs: done changed=$(echo ${changed_addons[@]} | rev | cut -c 2- | rev) - if [[ -n ${changed} ]]; then echo "Changed add-ons: $changed"; - echo "::set-output name=changed::true"; - echo "::set-output name=addons::[$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 + build: needs: init runs-on: ubuntu-latest @@ -68,7 +76,7 @@ jobs: steps: - name: Check out repository - uses: actions/checkout@v3.3.0 + uses: actions/checkout@v3 - name: Get information id: info @@ -76,18 +84,20 @@ jobs: with: path: "./${{ matrix.addon }}" - - name: Check if add-on should be built + - name: Check add-on id: check run: | if [[ "${{ steps.info.outputs.architectures }}" =~ ${{ matrix.arch }} ]]; then - echo "::set-output name=build_arch::true"; - echo "::set-output name=image::$(echo ${{ steps.info.outputs.image }} | cut -d'/' -f3)"; - if [[ -z "${{ github.head_ref }}" ]] && [[ "${{ github.event_name }}" == "push" ]]; then - echo "BUILD_ARGS=" >> $GITHUB_ENV; - fi + echo "build_arch=true" >> "$GITHUB_OUTPUT"; else echo "${{ matrix.arch }} is not a valid arch for ${{ matrix.addon }}, skipping build"; - echo "::set-output name=build_arch::false"; + fi + + - name: Set build arguments + if: steps.check.outputs.build_arch == 'true' + run: | + if [[ -z "${{ github.head_ref }}" ]] && [[ "${{ github.event_name }}" == "push" ]]; then + echo "BUILD_ARGS=--docker-hub-check" >> $GITHUB_ENV; fi - name: Login to GitHub Container Registry @@ -106,12 +116,14 @@ jobs: ${{ env.BUILD_ARGS }} \ --${{ matrix.arch }} \ --target /data/${{ matrix.addon }} \ - --image "${{ steps.check.outputs.image }}" \ --docker-hub "ghcr.io/${{ github.repository_owner }}" \ + --image "${{ steps.check.outputs.image }}" \ --addon + env: + CAS_API_KEY: ${{ secrets.CAS_API_KEY }} - - name: Notarize ${{ matrix.addon }} - uses: codenotary/cas-notarize-docker-image-bom-github-action@main - with: - asset: "${{ steps.check.outputs.image }}" - cas_api_key: ${{ secrets.CAS_API_KEY }} + # - name: Notarize ${{ matrix.addon }} + # uses: codenotary/cas-notarize-docker-image-bom-github-action@main + # with: + # asset: "${{ steps.check.outputs.image }}" + # cas_api_key: ${{ secrets.CAS_API_KEY }}