Update builder action

This commit is contained in:
Fredrik Baberg 2023-01-12 21:14:13 +01:00
parent efca24a68a
commit bcb2ba7e96

View File

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