summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorseth <[email protected]>2023-12-25 05:00:05 -0500
committerseth <[email protected]>2023-12-25 05:10:04 -0500
commit0cc0ada5d44ade6cab2e9220f7993aaf77985e1b (patch)
tree122d23d5cd27144fd491ea43f7082bfaf9ae8f76 /.github
parentd3572003f2aee35d7cfa3457dfe4fa4309a55ff1 (diff)
actions: use nix2workflow again
Diffstat (limited to '.github')
-rwxr-xr-x.github/eval-flake.sh90
-rw-r--r--.github/workflows/ci.yaml25
2 files changed, 15 insertions, 100 deletions
diff --git a/.github/eval-flake.sh b/.github/eval-flake.sh
deleted file mode 100755
index ceebcc9..0000000
--- a/.github/eval-flake.sh
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-### this is inspired by the ci script in [nixpkgs-unfree](https://github.com/numtide/nixpkgs-unfree)
-### link: https://github.com/numtide/nixpkgs-unfree/blob/127b9b18583de04c6207c2a0e674abf64fc4a3b1/ci.sh
-#
-## MIT License
-##
-## Copyright (c) 2022 Jonas Chevalier
-##
-## Permission is hereby granted, free of charge, to any person obtaining a copy
-## of this software and associated documentation files (the "Software"), to deal
-## in the Software without restriction, including without limitation the rights
-## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-## copies of the Software, and to permit persons to whom the Software is
-## furnished to do so, subject to the following conditions:
-##
-## The above copyright notice and this permission notice shall be included in all
-## copies or substantial portions of the Software.
-##
-## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-## SOFTWARE.
-
-function get_os() {
- case "$1" in
- "x86_64-linux") echo "ubuntu-latest" ;;
- "x86_64-darwin") echo "macos-latest" ;;
- "aarch64-linux") echo "ubuntu-latst" ;;
- esac
-}
-
-args=(
- --gc-roots-dir gc-roots
- --check-cache-status
- --force-recurse
- --option allow-import-from-derivation true
- --show-trace
- --flake
- '.#hydraJobs'
-)
-
-if [[ -n "${GITHUB_STEP_SUMMARY-}" ]]; then
- log() {
- echo "$*" >> "$GITHUB_STEP_SUMMARY"
- }
-else
- log() {
- echo "$*"
- }
-fi
-
-jobs=$(nix-eval-jobs "${args[@]}" | jq -r '. | @base64')
-jq -n '{"include": []}' > matrix.json
-
-had_error=0
-echo "$jobs" | while read -r job; do
- job=$(echo "$job" | base64 -d)
- attr=$(echo "$job" | jq -r .attr)
- echo "## $attr"
-
- error=$(echo "$job" | jq -r '.error')
- if [[ $error == null ]]; then
- log "### ✅ $attr"
-
- system=$(echo "$job" | jq -r .system)
- isCached=$(echo "$job" | jq -r .isCached)
-
- jq ".include += [{\"attr\": \"$attr\", \"os\": \"$(get_os "$system")\", \"isCached\": $isCached}]" < matrix.json > matrix.json.tmp
- mv matrix.json.tmp matrix.json
- else
- log "### ❌ $attr"
- log
- log "<details><summary>Evaluation error:</summary><pre>"
- log "$error"
- log "</pre></details>"
- had_error=1
- fi
-done
-
-if [[ $had_error -gt 0 ]]; then
- rm matrix.json
- exit 1
-fi
-
-echo "matrix=$(jq -r 'tostring' matrix.json)" >> "$GITHUB_OUTPUT"
-rm matrix.json
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index c4fc11e..f8e429e 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -31,19 +31,21 @@ jobs:
- name: Evaluate jobs
id: eval
run: |
- nix shell --inputs-from . \
- nixpkgs#{bash,coreutils,jq,nix-eval-jobs} \
- --command bash ./.github/eval-flake.sh
+ echo "matrix=$(nix eval --show-trace --json .#workflowMatrix)" >> "$GITHUB_OUTPUT"
build:
needs: eval
strategy:
+ fail-fast: false
matrix: ${{ fromJSON(needs.eval.outputs.matrix) }}
name: Build (${{ matrix.attr }})
runs-on: ${{ matrix.os }}
+ env:
+ JOBS: "hydraJobs"
+
steps:
- uses: actions/checkout@v4
@@ -56,19 +58,22 @@ jobs:
name: getchoo
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- - name: Check if cached
- if: ${{ matrix.isCached }}
- run: |
- echo ${{ matrix.attr }} is already built!
-
- name: Run build
- if: ${{ !matrix.isCached }}
run: |
+ for url in "https://cache.nixos.org" "https://getchoo.cachix.org"; do
+ if nix eval --raw .#"$JOBS".${{ matrix.attr }} \
+ | cut -c12-43 \
+ | xargs -I {} curl -f "$url"/{}.narinfo &> /dev/null; then
+ echo ${{ matrix.attr }} is already cached in $url!
+ fi
+ done
+
nix build --print-build-logs --fallback \
- .#hydraJobs.${{ matrix.attr }}
+ .#"$JOBS".${{ matrix.attr }}
check:
strategy:
+ fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]