summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorseth <[email protected]>2023-11-07 21:39:13 -0500
committerseth <[email protected]>2023-11-07 21:47:01 -0500
commitb7254760ccedc8fc81a21b4e707c628556df1f6c (patch)
tree8a1b17a663e86cb9625c2fceddf0010c2cb2554c /.github
initial commit
Diffstat (limited to '.github')
-rw-r--r--.github/dependabot.yml8
-rw-r--r--.github/workflows/ci.yaml99
-rw-r--r--.github/workflows/example.yaml55
3 files changed, 162 insertions, 0 deletions
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..1d662ce
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,8 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions" # See documentation for possible values
+ directory: "/" # Location of package manifests
+ schedule:
+ interval: "weekly"
+ commit-message:
+ prefix: "actions"
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
new file mode 100644
index 0000000..a542c01
--- /dev/null
+++ b/.github/workflows/ci.yaml
@@ -0,0 +1,99 @@
+name: CI
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ workflow_dispatch:
+
+jobs:
+ eval:
+ strategy:
+ matrix:
+ test: [lib, module]
+
+ runs-on: ubuntu-latest
+
+ outputs:
+ lib-matrix: ${{ steps.lib-generate.outputs.matrix }}
+ module-matrix: ${{ steps.module-generate.outputs.matrix }}
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: nixbuild/nix-quick-install-action@v26
+
+ - name: generate matrix
+ id: ${{ matrix.test }}-generate
+ run: |
+ cd test/${{ matrix.test }}
+ set -e
+ echo "matrix=$(nix eval --show-trace --json .#githubWorkflow.matrix)" >> "$GITHUB_OUTPUT"
+
+ # would be nice to have another matrix for these but meh
+ test-lib:
+ needs: eval
+
+ strategy:
+ matrix: ${{ fromJSON(needs.eval.outputs.lib-matrix) }}
+
+ runs-on: ${{ matrix.os }}
+
+ name: build (${{ matrix.attr }})
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: setup qemu
+ if: matrix.arch == 'aarch64'
+ run: |
+ sudo apt update -y
+ sudo apt install -y qemu-user-static
+
+ - name: install nix
+ if: matrix.arch != 'aarch64'
+ uses: nixbuild/nix-quick-install-action@v26
+
+ - name: install nix (with aarch64)
+ if: matrix.arch == 'aarch64'
+ uses: nixbuild/nix-quick-install-action@v26
+ with:
+ nix_conf: "extra-platforms = aarch64-linux arm-linux"
+
+ - name: build ${{ matrix.attr }}
+ run: |
+ cd test/lib
+ nix build -L .#${{ matrix.attr }}
+
+ test-module:
+ needs: eval
+
+ strategy:
+ matrix: ${{ fromJSON(needs.eval.outputs.module-matrix) }}
+
+ runs-on: ${{ matrix.os }}
+
+ name: build (${{ matrix.attr }})
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: setup qemu
+ if: matrix.arch == 'aarch64'
+ run: |
+ sudo apt update -y
+ sudo apt install -y qemu-user-static
+
+ - name: install nix
+ if: matrix.arch != 'aarch64'
+ uses: nixbuild/nix-quick-install-action@v26
+
+ - name: install nix (with aarch64)
+ if: matrix.arch == 'aarch64'
+ uses: nixbuild/nix-quick-install-action@v26
+ with:
+ nix_conf: "extra-platforms = aarch64-linux arm-linux"
+
+ - name: build ${{ matrix.attr }}
+ run: |
+ cd test/module
+ nix build -L .#${{ matrix.attr }}
diff --git a/.github/workflows/example.yaml b/.github/workflows/example.yaml
new file mode 100644
index 0000000..5c376c1
--- /dev/null
+++ b/.github/workflows/example.yaml
@@ -0,0 +1,55 @@
+name: Example
+
+on:
+ workflow_dispatch:
+
+jobs:
+ eval:
+ runs-on: ubuntu-latest
+
+ outputs:
+ matrix: ${{ steps.generate.outputs.matrix }}
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: install nix
+ uses: nixbuild/nix-quick-install-action@v26
+
+ - name: generate matrix
+ id: generate
+ run: |
+ set -Eeu
+ echo "matrix=$(nix eval --show-trace --json .#githubWorkflow.matrix)" >> "$GITHUB_OUTPUT"
+
+ build:
+ needs: eval
+
+ strategy:
+ matrix: ${{ fromJSON(needs.eval.outputs.matrix) }}
+
+ runs-on: ${{ matrix.os }}
+
+ name: build (${{matrix.attr}})
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: setup qemu
+ if: matrix.arch == 'aarch64'
+ run: |
+ sudo apt update -y
+ sudo apt install -y qemu-user-static
+
+ - name: install nix
+ if: matrix.arch != 'aarch64'
+ uses: nixbuild/nix-quick-install-action@v26
+
+ - name: install nix (with aarch64)
+ if: matrix.arch == 'aarch64'
+ uses: nixbuild/nix-quick-install-action@v26
+ with:
+ nix_conf: "extra-platforms = aarch64-linux arm-linux"
+
+ - name: build ${{ matrix.attr }}
+ run: nix build -L --fallback .#${{ matrix.attr }}