1.0: Rewrite in Python #1987
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: [[ubuntu-latest], [macos-latest], [self-hosted, macOS], [self-hosted, linux, ARM64]] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v25 | |
- uses: cachix/cachix-action@v14 | |
with: | |
name: devenv | |
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- run: nix build | |
- name: Run tests | |
run: | | |
./result/bin/devenv ci | |
./result/bin/devenv shell devenv-run-tests | |
./result/bin/devenv search ncdu | grep "pkgs\.ncdu" | |
pin: | |
needs: build | |
if: startsWith(github.ref, 'refs/tags/v') | |
uses: ./.github/workflows/pin.yml | |
secrets: inherit | |
generate-examples: | |
runs-on: ubuntu-latest | |
outputs: | |
examples: ${{ steps.set-examples.outputs.examples }} | |
steps: | |
- name: Checkout base repo | |
uses: actions/checkout@v4 | |
- id: set-examples | |
run: | | |
json=$(tree -J -L 1 examples | 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: [[ubuntu-latest], [macos-latest], [self-hosted, macOS], [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@v25 | |
with: | |
extra_nix_config: | | |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} | |
- uses: cachix/cachix-action@v14 | |
with: | |
name: devenv | |
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- name: Disable package aliases | |
run: | | |
mkdir -p ~/.config/nixpkgs | |
echo '{ allowAliases = false; }' > ~/.config/nixpkgs/config.nix | |
- run: | | |
nix build | |
./result/bin/devenv test ${{ matrix.example }} | |
direnv: | |
name: direnv (${{ join(matrix.os) }}) | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [[ubuntu-latest], [macos-latest], [self-hosted, macOS], [self-hosted, Linux, ARM64]] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v25 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- uses: cachix/cachix-action@v14 | |
with: | |
name: devenv | |
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- run: | | |
mv ./examples/simple/devenv.yaml ./examples/simple/devenv.yaml.orig | |
nix run nixpkgs#gawk -- ' | |
{ print } | |
/^inputs:$/ { | |
print " devenv:"; | |
print " url: path:../../?dir=src/modules"; | |
} | |
' ./examples/simple/devenv.yaml.orig > ./examples/simple/devenv.yaml | |
nix profile remove '.*' | |
nix profile install . 'nixpkgs#direnv' | |
mkdir -p ~/.config/direnv/ | |
cat > ~/.config/direnv/direnv.toml << 'EOF' | |
[global] | |
strict_env = true | |
EOF | |
direnv allow ./examples/simple | |
direnv exec ./examples/simple true | |
fish-zsh: | |
name: zsh/fish (${{ join(matrix.os) }}) | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [[ubuntu-latest], [macos-latest], [self-hosted, macOS], [self-hosted, linux, ARM64]] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v25 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- uses: cachix/cachix-action@v14 | |
with: | |
name: devenv | |
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' | |
- run: nix build | |
- run: | | |
nix shell nixpkgs#zsh -c zsh -c "./result/bin/devenv version" | |
nix shell nixpkgs#fish -c fish -c "./result/bin/devenv version" |