Merge pull request #1648 from cachix/package-nix #3307
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Build & Test" | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
tags: | |
- v* | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
[ | |
[self-hosted, linux, X64], | |
[macos-13], | |
[self-hosted, macOS, ARM64], | |
[self-hosted, linux, ARM64], | |
] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v30 | |
with: | |
extra_nix_config: | | |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | |
- uses: cachix/cachix-action@v15 | |
with: | |
name: devenv | |
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" | |
- id: build | |
run: | | |
bin=$(nix build --print-out-paths) | |
echo "bin=$bin" >> $GITHUB_OUTPUT | |
- name: Run tests | |
run: ./result/bin/devenv test | |
tests: | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
[ | |
[self-hosted, linux, X64], | |
[macos-13], | |
[self-hosted, macOS, ARM64], | |
[self-hosted, linux, ARM64], | |
] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v30 | |
with: | |
extra_nix_config: | | |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | |
- uses: cachix/cachix-action@v15 | |
with: | |
name: devenv | |
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" | |
- name: Build devenv | |
run: | | |
nix build | |
echo "$PWD/result/bin" >> $GITHUB_PATH | |
- name: Run devenv-test-cli | |
run: devenv shell devenv-test-cli | |
- name: Run tests | |
run: devenv-run-tests tests | |
pin: | |
needs: build | |
if: startsWith(github.ref, 'refs/tags/v') | |
uses: ./.github/workflows/pin.yml | |
secrets: inherit | |
generate-examples: | |
runs-on: [self-hosted, linux, X64] | |
outputs: | |
examples: ${{ steps.set-examples.outputs.examples }} | |
steps: | |
- name: Checkout base repo | |
uses: actions/checkout@v4 | |
- name: Fetch examples to run | |
id: set-examples | |
run: | | |
set -euxo pipefail | |
json=$(nix shell nixpkgs#tree -c tree -J -L 1 examples | nix shell nixpkgs#jq -c jq -c '[.[0].contents[] | .name]') | |
echo "examples=$json" >> $GITHUB_OUTPUT | |
examples: | |
name: ${{ matrix.example }} (${{ join(matrix.os) }}) | |
needs: [generate-examples, build] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
[ | |
[self-hosted, linux, X64], | |
[macos-13], | |
[self-hosted, macOS, ARM64], | |
[self-hosted, linux, ARM64], | |
] | |
example: ${{ fromJSON(needs.generate-examples.outputs.examples) }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- run: sudo rm -rf /opt& | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v30 | |
with: | |
extra_nix_config: | | |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | |
- uses: cachix/cachix-action@v15 | |
with: | |
name: devenv | |
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" | |
- name: Build devenv | |
run: | | |
nix build | |
echo "$PWD/result/bin" >> $GITHUB_PATH | |
- name: Run examples | |
run: devenv-run-tests --only ${{ matrix.example }} examples | |
direnv: | |
name: direnv (${{ join(matrix.os) }}) | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
[ | |
[ubuntu-latest], | |
[macos-13], | |
[self-hosted, macOS, ARM64], | |
[self-hosted, Linux, ARM64], | |
] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v30 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- uses: cachix/cachix-action@v15 | |
with: | |
name: devenv | |
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" | |
- name: Build devenv | |
run: | | |
nix build | |
echo "$PWD/result/bin" >> $GITHUB_PATH | |
- run: | | |
mkdir -p ~/.config/direnv/ | |
cat > ~/.config/direnv/direnv.toml << 'EOF' | |
[global] | |
strict_env = true | |
EOF | |
devenv_dir=$PWD | |
tmp="$(mktemp -d)" | |
pushd "$tmp" | |
nix shell nixpkgs#direnv -c devenv --override-input devenv path:$devenv_dir?dir=src/modules init | |
popd | |
fish-zsh: | |
name: zsh/fish (${{ join(matrix.os) }}) | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
[ | |
[ubuntu-latest], | |
[macos-13], | |
[self-hosted, macOS, ARM64], | |
[self-hosted, linux, ARM64], | |
] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v30 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- uses: cachix/cachix-action@v15 | |
with: | |
name: devenv | |
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" | |
- name: Build devenv | |
run: nix build | |
- name: Test devenv in fish and zsh | |
run: | | |
nix shell nixpkgs#zsh -c zsh -c "./result/bin/devenv version" | |
nix shell nixpkgs#fish -c fish -c "./result/bin/devenv version" |