chore(ci): Avoid writing to cache in workflows triggered by the merge queue #342
Workflow file for this run
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: Publish Nargo | |
on: | |
workflow_dispatch: | |
# Allow pushing a manual nightly release | |
inputs: | |
tag: | |
description: The tag to build Nargo from (leave empty to build a nightly release from master) | |
required: false | |
publish: | |
description: Whether to publish the build artifacts | |
type: boolean | |
default: false | |
schedule: | |
# Run a nightly release at 2 AM UTC | |
- cron: "0 2 * * *" | |
merge_group: | |
pull_request: | |
permissions: | |
# Necessary to upload new release artifacts | |
contents: write | |
jobs: | |
build-barretenberg: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ inputs.tag || env.GITHUB_REF }} | |
- name: Collect locked barretenberg rev | |
run: | | |
echo "BB_REV=$(jq -r .nodes.barretenberg.locked.rev ./flake.lock)" >> $GITHUB_ENV | |
- uses: cachix/install-nix-action@v20 | |
with: | |
nix_path: nixpkgs=channel:nixos-22.11 | |
github_access_token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: cachix/cachix-action@v12 | |
with: | |
name: barretenberg | |
# Upload does not work with symlinks, using this workaround: | |
# https://github.com/actions/upload-artifact/issues/92#issuecomment-1080347032 | |
- name: Build barretenberg as libbarretenberg-wasm32 | |
run: | | |
nix build "github:AztecProtocol/barretenberg/${{ env.BB_REV }}#wasm32" | |
echo "ARTIFACT_UPLOAD_PATH=$(readlink -f result)" >> $GITHUB_ENV | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: libbarretenberg-wasm32 | |
path: ${{ env.ARTIFACT_UPLOAD_PATH }} | |
retention-days: 3 | |
build-apple-darwin: | |
needs: [build-barretenberg] | |
runs-on: macos-latest | |
env: | |
CROSS_CONFIG: ${{ github.workspace }}/.github/Cross.toml | |
CACHED_PATHS: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
strategy: | |
matrix: | |
target: [x86_64-apple-darwin, aarch64-apple-darwin] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ inputs.tag || env.GITHUB_REF }} | |
- name: Setup for Apple Silicon | |
if: matrix.target == 'aarch64-apple-darwin' | |
run: | | |
sudo xcode-select -s /Applications/Xcode_13.2.1.app/Contents/Developer/ | |
echo "SDKROOT=$(xcrun -sdk macosx$(sw_vers -productVersion) --show-sdk-path)" >> $GITHUB_ENV | |
echo "MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx$(sw_vers -productVersion) --show-sdk-platform-version)" >> $GITHUB_ENV | |
- uses: actions/cache/restore@v3 | |
id: cache | |
with: | |
path: ${{ env.CACHED_PATHS }} | |
key: ${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: libbarretenberg-wasm32 | |
path: ${{ github.workspace }}/libbarretenberg-wasm32 | |
- name: Setup toolchain | |
uses: dtolnay/[email protected] | |
with: | |
targets: ${{ matrix.target }} | |
- name: Build environment and Compile | |
env: | |
BARRETENBERG_BIN_DIR: ${{ github.workspace }}/libbarretenberg-wasm32/bin | |
run: | | |
cargo build --package nargo_cli --release --target ${{ matrix.target }} --no-default-features --features plonk_bn254_wasm | |
- uses: actions/cache/save@v3 | |
# Don't create cache entries for the merge queue. | |
if: ${{ steps.cache.outputs.cache-hit != 'true' && github.event_name != 'merge_group' }} | |
with: | |
path: ${{ env.CACHED_PATHS }} | |
key: ${{ steps.cache.outputs.cache-primary-key }} | |
- name: Package artifacts | |
run: | | |
mkdir dist | |
cp ./target/${{ matrix.target }}/release/nargo ./dist/nargo | |
7z a -ttar -so -an ./dist/* | 7z a -si ./nargo-${{ matrix.target }}.tar.gz | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nargo-${{ matrix.target }} | |
path: ./dist/* | |
retention-days: 3 | |
- name: Test built artifact | |
if: matrix.target == 'x86_64-apple-darwin' | |
run: | | |
cp ./target/${{ matrix.target }}/release/nargo ~/.cargo/bin/ | |
cd release-tests | |
yarn install | |
yarn test | |
- name: Upload binaries to release tag | |
uses: svenstaro/upload-release-action@v2 | |
if: ${{ inputs.publish || github.event_name == 'schedule' }} | |
with: | |
repo_name: noir-lang/noir | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ./nargo-${{ matrix.target }}.tar.gz | |
asset_name: nargo-${{ matrix.target }}.tar.gz | |
overwrite: true | |
tag: ${{ inputs.tag || 'nightly' }} # This will fail if `inputs.tag` is not a tag (e.g. testing a branch) | |
build-linux: | |
needs: [build-barretenberg] | |
runs-on: ubuntu-22.04 | |
env: | |
CROSS_CONFIG: ${{ github.workspace }}/.github/Cross.toml | |
CACHED_PATHS: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
[ | |
x86_64-unknown-linux-gnu, | |
x86_64-unknown-linux-musl, | |
aarch64-unknown-linux-gnu, | |
aarch64-unknown-linux-musl, | |
] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ inputs.tag || env.GITHUB_REF }} | |
- uses: actions/cache/restore@v3 | |
id: cache | |
with: | |
path: ${{ env.CACHED_PATHS }} | |
key: ${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: libbarretenberg-wasm32 | |
path: ${{ github.workspace }}/libbarretenberg-wasm32 | |
- name: Setup toolchain | |
uses: dtolnay/[email protected] | |
with: | |
targets: ${{ matrix.target }} | |
- name: Build Nargo | |
env: | |
BARRETENBERG_BIN_DIR: ${{ github.workspace }}/libbarretenberg-wasm32/bin | |
run: | | |
cargo install cross --force --git https://github.com/cross-rs/cross | |
cross build --package nargo_cli --release --target=${{ matrix.target }} --no-default-features --features plonk_bn254_wasm | |
- uses: actions/cache/save@v3 | |
# Don't create cache entries for the merge queue. | |
if: ${{ steps.cache.outputs.cache-hit != 'true' && github.event_name != 'merge_group' }} | |
with: | |
path: ${{ env.CACHED_PATHS }} | |
key: ${{ steps.cache.outputs.cache-primary-key }} | |
- name: Package artifacts | |
run: | | |
mkdir dist | |
cp ./target/${{ matrix.target }}/release/nargo ./dist/nargo | |
7z a -ttar -so -an ./dist/* | 7z a -si ./nargo-${{ matrix.target }}.tar.gz | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nargo-${{ matrix.target }} | |
path: ./dist/* | |
retention-days: 3 | |
- name: Test built artifact | |
if: startsWith(matrix.target, 'x86_64-unknown-linux') | |
run: | | |
cp ./target/${{ matrix.target }}/release/nargo ~/.cargo/bin/ | |
cd release-tests | |
yarn install | |
yarn test | |
- name: Upload binaries to release tag | |
uses: svenstaro/upload-release-action@v2 | |
if: ${{ inputs.publish || github.event_name == 'schedule' }} | |
with: | |
repo_name: noir-lang/noir | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ./nargo-${{ matrix.target }}.tar.gz | |
asset_name: nargo-${{ matrix.target }}.tar.gz | |
overwrite: true | |
tag: ${{ inputs.tag || 'nightly' }} # This will fail if `inputs.tag` is not a tag (e.g. testing a branch) | |
build-windows: | |
needs: [build-barretenberg] | |
runs-on: windows-2022 | |
env: | |
CROSS_CONFIG: ${{ github.workspace }}/.github/Cross.toml | |
CACHED_PATHS: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
strategy: | |
matrix: | |
target: [x86_64-pc-windows-msvc] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ inputs.tag || env.GITHUB_REF }} | |
- uses: actions/cache/restore@v3 | |
id: cache | |
with: | |
path: ${{ env.CACHED_PATHS }} | |
key: ${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: libbarretenberg-wasm32 | |
path: ${{ github.workspace }}/libbarretenberg-wasm32 | |
- name: Setup toolchain | |
uses: dtolnay/[email protected] | |
with: | |
targets: ${{ matrix.target }} | |
- name: Build environment and Compile | |
env: | |
BARRETENBERG_BIN_DIR: ${{ github.workspace }}/libbarretenberg-wasm32/bin | |
run: | | |
cargo build --package nargo_cli --release --target ${{ matrix.target }} --no-default-features --features plonk_bn254_wasm | |
- uses: actions/cache/save@v3 | |
# Don't create cache entries for the merge queue. | |
if: ${{ steps.cache.outputs.cache-hit != 'true' && github.event_name != 'merge_group' }} | |
with: | |
path: ${{ env.CACHED_PATHS }} | |
key: ${{ steps.cache.outputs.cache-primary-key }} | |
- name: Package artifacts | |
run: | | |
mkdir dist | |
cp ./target/${{ matrix.target }}/release/nargo.exe ./dist/nargo.exe | |
7z a -tzip nargo-${{ matrix.target }}.zip ./dist/* | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nargo-${{ matrix.target }} | |
path: ./dist/* | |
retention-days: 3 | |
- name: Test built artifact | |
shell: powershell | |
run: | | |
cp ./target/${{ matrix.target }}/release/nargo.exe ~/.cargo/bin/ | |
cd release-tests | |
yarn install | |
yarn test | |
- name: Upload binaries to release tag | |
uses: svenstaro/upload-release-action@v2 | |
if: ${{ inputs.publish || github.event_name == 'schedule' }} | |
with: | |
repo_name: noir-lang/noir | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: ./nargo-${{ matrix.target }}.zip | |
asset_name: nargo-${{ matrix.target }}.zip | |
overwrite: true | |
tag: ${{ inputs.tag || 'nightly' }} # This will fail if `inputs.tag` is not a tag (e.g. testing a branch) |