nix-installer-action/.github/workflows/ci.yml

239 lines
7.1 KiB
YAML
Raw Normal View History

2023-01-13 19:07:57 +01:00
name: CI
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
2023-01-13 19:07:57 +01:00
jobs:
2024-05-15 23:16:09 +02:00
tests:
runs-on: ubuntu-22.04
needs:
- check-dist-up-to-date
- install-nix-linux
- install-nix-macos
2024-05-17 16:41:26 +02:00
- install-with-non-default-source-inputs
2024-05-15 23:16:09 +02:00
steps:
- run: true
2023-10-23 20:50:08 +02:00
check-dist-up-to-date:
name: Check the dist/ folder is up to date
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
2024-05-02 15:56:42 +02:00
- name: pnpm install
run: nix develop --command pnpm install
- name: prettier format
run: nix develop --command pnpm run check-fmt
- name: ESLint
run: nix develop --command pnpm run lint
- name: tsup build
run: nix develop --command pnpm run build
- name: ncc package
run: nix develop --command pnpm run package
- name: Git status
run: git status --porcelain=v1
- name: Ensure no staged changes
run: git diff --exit-code
2024-05-15 22:39:35 +02:00
2024-05-15 23:16:09 +02:00
install-nix-linux:
2024-05-15 22:56:08 +02:00
name: Run test suite for Linux systems
strategy:
matrix:
runner:
- ubuntu-latest
- nscloud-ubuntu-22.04-amd64-4x16
- namespace-profile-default-arm64
runs-on: ${{ matrix.runner }}
permissions:
contents: read
id-token: write
2023-01-13 19:07:57 +01:00
steps:
- uses: actions/checkout@v4
2023-01-13 19:13:23 +01:00
- name: Install Nix
2023-01-13 19:07:57 +01:00
uses: ./
with:
logger: pretty
log-directives: nix_installer=trace
backtrace: full
- name: echo $PATH
run: echo $PATH
- name: Render the devshell
if: success() || failure()
run: |
nix develop --command date
2023-01-13 19:07:57 +01:00
- name: Test `nix` with `$GITHUB_PATH`
if: success() || failure()
run: |
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
nix profile install nixpkgs#hello
hello
2023-01-13 19:07:57 +01:00
nix store gc
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
2023-01-13 19:07:57 +01:00
- name: Test bash
run: nix-instantiate -E 'builtins.currentTime' --eval
if: success() || failure()
shell: bash --login {0}
- name: Test sh
run: nix-instantiate -E 'builtins.currentTime' --eval
if: success() || failure()
shell: sh -l {0}
2023-01-13 21:09:36 +01:00
- name: Install Nix again (noop)
uses: ./
with:
logger: pretty
log-directives: nix_installer=trace
backtrace: full
2023-01-13 21:18:14 +01:00
- name: Test `nix` with `$GITHUB_PATH`
if: success() || failure()
run: |
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
nix profile install nixpkgs#hello
hello
2023-01-13 21:18:14 +01:00
nix store gc
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
2023-01-13 21:09:36 +01:00
- name: Reinstall Nix
uses: ./
with:
logger: pretty
log-directives: nix_installer=trace
backtrace: full
2024-05-02 18:54:44 +02:00
reinstall: true
extra-conf: |
use-sqlite-wal = true
2023-01-13 21:18:14 +01:00
- name: Test `nix` with `$GITHUB_PATH`
if: success() || failure()
run: |
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
nix profile install nixpkgs#hello
hello
2023-01-13 21:18:14 +01:00
nix store gc
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
- name: Verify the generated nix.conf
run: |
cat -n /etc/nix/nix.conf
grep -E "^trusted-users = .*$USER" /etc/nix/nix.conf
grep -E "^use-sqlite-wal = true" /etc/nix/nix.conf
- name: Breakpoint if tests failed
if: failure()
uses: namespacelabs/breakpoint-action@v0
with:
duration: 5m
authorized-users: grahamc
2023-01-13 19:07:57 +01:00
2024-05-15 23:16:09 +02:00
install-nix-macos:
2024-05-15 22:56:08 +02:00
name: Run test suite for macOS systems
2024-05-15 22:39:35 +02:00
strategy:
matrix:
runner:
# x86_64-darwin
- macos-12
# aarch64-darwin
- macos-latest-xlarge
runs-on: ${{ matrix.runner }}
permissions:
contents: read
id-token: write
2023-01-13 19:07:57 +01:00
steps:
- uses: actions/checkout@v4
2023-01-13 19:13:23 +01:00
- name: Install Nix
2023-01-13 19:07:57 +01:00
uses: ./
with:
logger: pretty
log-directives: nix_installer=trace
backtrace: full
- name: echo $PATH
run: echo $PATH
- name: Test `nix` with `$GITHUB_PATH`
if: success() || failure()
run: |
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
nix profile install nixpkgs#hello
hello
2023-01-13 19:07:57 +01:00
nix store gc
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
2023-01-13 19:07:57 +01:00
- name: Test bash
run: nix-instantiate -E 'builtins.currentTime' --eval
if: success() || failure()
shell: bash --login {0}
- name: Test sh
run: nix-instantiate -E 'builtins.currentTime' --eval
if: success() || failure()
shell: sh -l {0}
- name: Test zsh
run: nix-instantiate -E 'builtins.currentTime' --eval
if: success() || failure()
shell: zsh --login --interactive {0}
2023-01-13 21:09:36 +01:00
- name: Install Nix again (noop)
uses: ./
with:
logger: pretty
log-directives: nix_installer=trace
backtrace: full
2023-01-13 21:18:14 +01:00
- name: Test `nix` with `$GITHUB_PATH`
if: success() || failure()
run: |
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
nix profile install nixpkgs#hello
hello
2023-01-13 21:18:14 +01:00
nix store gc
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
2023-01-13 21:09:36 +01:00
- name: Reinstall Nix
uses: ./
with:
logger: pretty
log-directives: nix_installer=trace
backtrace: full
2024-05-02 18:54:44 +02:00
reinstall: true
extra-conf: |
use-sqlite-wal = true
2023-01-13 21:18:14 +01:00
- name: Test `nix` with `$GITHUB_PATH`
if: success() || failure()
run: |
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
nix profile install nixpkgs#hello
hello
2023-01-13 21:18:14 +01:00
nix store gc
2023-05-25 17:54:25 +02:00
nix run nixpkgs#hello
- name: Verify the generated nix.conf
run: |
cat /etc/nix/nix.conf
grep -E "^trusted-users = .*$USER" /etc/nix/nix.conf
grep -E "^use-sqlite-wal = true" /etc/nix/nix.conf
- name: Breakpoint if tests failed
if: failure()
uses: namespacelabs/breakpoint-action@v0
with:
duration: 5m
authorized-users: grahamc
2024-05-17 02:07:06 +02:00
install-with-non-default-source-inputs:
name: Install Nix using non-default source-${{ matrix.inputs.key }}
runs-on: ubuntu-22.04
strategy:
matrix:
inputs:
# https://github.com/DeterminateSystems/nix-installer/blob/v0.18.0
- key: url
value: https://github.com/DeterminateSystems/nix-installer/releases/download/v0.18.0/nix-installer-x86_64-linux
nix-version: "2.21.2"
# https://github.com/DeterminateSystems/nix-installer/tree/7011c077ec491da410fbc39f68676b0908b9ce7e
- key: revision
value: 7011c077ec491da410fbc39f68676b0908b9ce7e
nix-version: "2.19.2"
2024-05-17 02:02:46 +02:00
steps:
- uses: actions/checkout@v4
- name: Install with alternative source-${{ matrix.inputs.key }}
2024-05-17 02:04:04 +02:00
uses: ./
with:
source-${{ matrix.inputs.key }}: ${{ matrix.inputs.value }}
- name: Ensure that the expected Nix version ${{ matrix.inputs.nix-version }} is installed via alternative source-${{ matrix.inputs.key }}
run: .github/verify-version.sh ${{ matrix.inputs.nix-version }}