11.stylix/.github/workflows/check.yml
NAHO 689fd55ff2
ci: make get-derivations job fail when input command fails (#888)
Make the get-derivations job fail when the command writing to the
$GITHUB_OUTPUT file fails.

Previously, the $GITHUB_OUTPUT file was successfully created when the
input command failed, resulting in an empty $GITHUB_OUTPUT file. [1]

[1]: https://stackoverflow.com/questions/59287865
2025-02-23 17:13:26 +00:00

94 lines
2.3 KiB
YAML

---
name: Check
on: # yamllint disable-line rule:truthy
push:
branches:
- master
- release-**
pull_request:
permissions:
contents: read
jobs:
get-derivations:
runs-on: ubuntu-24.04
steps:
- uses: DeterminateSystems/nix-installer-action@v16
- id: get-derivations
run: |
set -o pipefail
nix flake show --json \
github:${{
github.repository
}}/${{
github.event.pull_request.head.sha || github.sha
}} |
jq --raw-output '
def format_output($arch; $type):
{
arch: $arch,
key: .,
os: (
if $arch == "x86_64-linux" then
"ubuntu-24.04"
else
"macos-14"
end
),
type: $type
};
[
["x86_64-linux", "x86_64-darwin"][] as $arch |
(.checks[$arch] | keys) as $checks |
(.packages[$arch] | keys) as $packages |
(($checks - $packages)[] | format_output($arch; "checks")),
($packages[] | format_output($arch; "packages"))
] |
"derivations=\(.)"
' \
>>"$GITHUB_OUTPUT" || {
rm "$GITHUB_OUTPUT"
false
}
outputs:
derivations: ${{ steps.get-derivations.outputs.derivations }}
check:
runs-on: ${{ matrix.check.os }}
name: ${{ matrix.check.key }} on ${{ matrix.check.arch }}
needs: get-derivations
strategy:
fail-fast: false
matrix:
check: ${{ fromJSON(needs.get-derivations.outputs.derivations) }}
steps:
- uses: DeterminateSystems/nix-installer-action@v16
with:
extra-conf: |-
allow-import-from-derivation = false
- run: |
nix build --no-update-lock-file --print-build-logs \
github:${{
github.repository
}}/${{
github.event.pull_request.head.sha || github.sha
}}#${{
matrix.check.type
}}.${{
matrix.check.arch
}}.${{
matrix.check.key
}}