CI #368
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: CI | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
schedule: | |
- cron: "40 2 * * *" # Run 40 mins after nightly noir release (which happens at 2 AM UTC) | |
permissions: | |
contents: read | |
env: | |
REPO: ${{ github.event.pull_request.head.repo.full_name || github.repository }} | |
REF: ${{ github.head_ref || github.ref_name }} | |
jobs: | |
install: | |
name: Noir ${{matrix.toolchain}} (CLI) on ${{matrix.os == 'ubuntu' && 'Linux' || matrix.os == 'macos' && 'macOS' || matrix.os == 'windows' && 'Windows' || '???'}} | |
runs-on: ${{matrix.os}}-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, macos] | |
toolchain: [stable, nightly, 0.1.0, 0.1.1, 0.2.0, 0.3.0, 0.4.1] | |
timeout-minutes: 45 | |
steps: | |
- name: Parse toolchain | |
id: parse | |
run: | | |
: parse toolchain version | |
if [[ $toolchain == "stable" ]]; then | |
: By default, noirup installs the latest stable version | |
elif [[ $toolchain == "nightly" ]]; then | |
echo "toolchain="--nightly"" >> $GITHUB_OUTPUT | |
else | |
echo "toolchain="--version $toolchain"" >> $GITHUB_OUTPUT | |
fi | |
env: | |
toolchain: ${{matrix.toolchain}} | |
- name: Install noirup | |
run: | | |
curl -L $INSTALL_URL | bash | |
echo "${HOME}/.nargo/bin" >> $GITHUB_PATH | |
env: | |
INSTALL_URL: https://raw.githubusercontent.com/${{ env.REPO }}/${{ env.REF }}/install | |
NOIRUP_BIN_URL: https://raw.githubusercontent.com/${{ env.REPO }}/${{ env.REF }}/noirup | |
- name: Install nargo with noirup | |
run: noirup ${{steps.parse.outputs.toolchain}} | |
- name: Check nargo installation | |
run: nargo --version | |
install-source: | |
name: Noir ${{matrix.version}} (from source) on ${{matrix.os == 'ubuntu' && 'Linux' || matrix.os == 'macos' && 'macOS' || matrix.os == 'windows' && 'Windows' || '???'}} | |
runs-on: ${{matrix.os}}-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, macos] | |
# Installing from source can technically target any commit. | |
# However, we only guarantee that noirup will build release commits. | |
version: [0.1.0, 0.1.1, 0.2.0, 0.3.0, 0.4.1] | |
timeout-minutes: 45 | |
steps: | |
- name: Install noirup | |
run: | | |
curl -L $INSTALL_URL | bash | |
echo "${HOME}/.nargo/bin" >> $GITHUB_PATH | |
env: | |
INSTALL_URL: https://raw.githubusercontent.com/${{ env.REPO }}/${{ env.REF }}/install | |
NOIRUP_BIN_URL: https://raw.githubusercontent.com/${{ env.REPO }}/${{ env.REF }}/noirup | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
key: ${{ runner.os }}-cargo-${{ matrix.version }} | |
- name: Install Barretenberg dependencies | |
if: matrix.os == 'ubuntu' | |
run: sudo apt update && sudo apt install clang lld cmake libomp-dev | |
- name: Install Barretenberg dependencies | |
if: matrix.os == 'macos' | |
run: brew install cmake llvm libomp | |
- name: Install nargo from source with noirup | |
run: noirup $toolchain | |
env: | |
toolchain: -b tags/v${{matrix.version}} | |
- name: Check nargo installation | |
run: nargo --version | |
install-action: | |
name: Noir ${{matrix.toolchain}} (GH action) on ${{matrix.os == 'ubuntu' && 'Linux' || matrix.os == 'macos' && 'macOS' || matrix.os == 'windows' && 'Windows' || '???'}} | |
runs-on: ${{matrix.os}}-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, macos] | |
toolchain: [stable, nightly, 0.1.0, 0.1.1, 0.2.0, 0.3.0, 0.4.1] | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./ | |
name: Run noir-lang/noirup | |
id: version | |
with: | |
toolchain: ${{matrix.toolchain}} | |
- run: nargo --version | |
- run: nargo new project | |
- run: nargo check | |
working-directory: ./project | |
- run: | | |
# Extract the minor version number from the version output | |
version=$(nargo --version) | |
version="${version#* }" | |
version="${version%% (*}" | |
minor=$(echo $version | cut -d '.' -f 2) | |
# The version in which the compile syntax changed | |
if [ "$minor" -lt 10 ]; then | |
nargo compile test-circuit | |
else | |
nargo compile | |
fi | |
name: nargo compile | |
working-directory: ./project | |
shell: bash | |
- run: nargo test | |
if: matrix.toolchain != '0.1.0' | |
working-directory: ./project |