Skip to content

Workflow file for this run

name: Build and Test
on:
pull_request:
push:
paths-ignore:
- README.md
- .gitignore
- doc
- docs
jobs:
build-and-test:
# See https://wildwolf.name/github-actions-how-to-avoid-running-the-same-workflow-multiple-times/
if: (! contains(github.event.head_commit.message, '[skip ci]') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name !=
github.event.pull_request.base.repo.full_name))
)
runs-on: ${{ matrix.os }}
#continue-on-error: ${{ matrix.allow-fail }}
#continue-on-error: ${{ matrix.devshell == 'gcc' }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, macos-12]
py: [311]
devshell: [ clang, gcc ]
#allow-fail: [false]
steps:
- uses: actions/checkout@v3.5.3
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: cachix/install-nix-action@v22
with:
nix_path: nixpkgs=channel:nixos-23.05
extra_nix_config: |
experimental-features = nix-command flakes
- uses: cachix/cachix-action@v12
with:
name: nain4 # The name of the Cachix cache
# If you chose signing key for write access
#signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
# If you chose API tokens for write access OR if you have a private cache
authToken: '${{ secrets.CACHIX_JACG_NAIN4 }}'
- name: pre-build
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
echo "GITHUB_USERNAME=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV
else
echo "GITHUB_USERNAME=${{ github.actor }}" >> $GITHUB_ENV
fi
- name: Nix build
run: nix develop
- name: Test nain4
run: nix develop .#${{ matrix.devshell }} -c just test-nain4 -v
- name: Run compile-time tests
run: nix develop .#${{ matrix.devshell }} -c just test-compile-time
- name: Run N4 examples
run: nix develop .#${{ matrix.devshell }} -c just n4-examples/run-all
- name: Run G4 examples
run: nix develop .#${{ matrix.devshell }} -c just g4-examples/run-examples-that-work