Update builder action

This commit is contained in:
Fredrik Baberg 2023-01-12 21:14:13 +01:00
parent a8d0f93ba0
commit 1d0e39ba48

View File

@ -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 }}