Nightly With-Foundry drift test #42
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: Nightly With-Foundry drift test | |
on: | |
# Giving ourselves a way to trigger this manually | |
workflow_dispatch: | |
schedule: | |
# Run a nightly release at 2 AM UTC | |
- cron: '0 2 * * *' | |
jobs: | |
with-foundry-setup: | |
runs-on: ubuntu-latest | |
outputs: | |
versions: ${{ steps.set-matrix.outputs.versions }} | |
versions_map: ${{ steps.set-matrix.outputs.versions_map }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get versions to test for drift | |
id: versions_step | |
run: | | |
output=$(node ./.github/scripts/latest.js) | |
echo "Output from Node.js script: $output" | |
echo "::set-output name=versionsMap::$output" | |
- name: Set Up Matrix | |
id: set-matrix | |
run: | | |
VERSIONS_MAP='${{ steps.versions_step.outputs.versionsMap }}' | |
echo "Versions out of script: $VERSIONS_MAP" | |
VERSIONS=$(echo "$VERSIONS_MAP" | jq -c '[.[]]') | |
echo "::set-output name=versions::$VERSIONS" | |
echo "::set-output name=versions_map::$VERSIONS_MAP" | |
with-foundry-test-drift: | |
needs: with-foundry-setup | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: with-foundry | |
strategy: | |
fail-fast: false | |
matrix: | |
version: ${{ fromJson(needs.with-foundry-setup.outputs.versions) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up nargo | |
uses: ./.github/actions/setup-nargo | |
with: | |
version: ${{ matrix.version }} | |
- name: Set up foundry | |
uses: ./.github/actions/setup-foundry | |
- name: Get stability | |
id: get-stability | |
env: | |
VERSIONS_MAP: ${{ needs.with-foundry-setup.outputs.versions_map }} | |
run: | | |
VERSION="${{ matrix.version }}" | |
echo "Version Number: $VERSION" | |
STABLE_VERSION=$(echo "$VERSIONS_MAP" | jq -r --arg VERSION "$VERSION" '.stable') | |
if [ "$STABLE_VERSION" == "$VERSION" ]; then | |
IS_STABLE="true" | |
else | |
IS_STABLE="false" | |
fi | |
echo "Is stable: $IS_STABLE" | |
echo "::set-output name=is_stable::$IS_STABLE" | |
- name: Install test version | |
run: | | |
yarn add \ | |
@noir-lang/noir_js@${{ matrix.version }} \ | |
@noir-lang/backend_barretenberg@${{ matrix.version }} \ | |
@noir-lang/noir_wasm@${{ matrix.version }} \ | |
@noir-lang/types@${{ matrix.version }} | |
- name: 'Create env file' | |
run: | | |
touch .env | |
echo LOCALHOST_PRIVATE_KEY="${{ secrets.LOCALHOST_PRIVATE_KEY }}" >> .env | |
echo ANVIL_RPC="${{ secrets.ANVIL_RPC }}" >> .env | |
- name: Generate verifier contract | |
run: | | |
nargo codegen-verifier | |
working-directory: with-foundry/circuits | |
- name: Generate proof | |
run: | | |
nargo prove | |
working-directory: with-foundry/circuits | |
- name: Test with Foundry | |
run: | | |
forge test --optimize --optimizer-runs 5000 --evm-version london | |
- name: Send GitHub Action trigger data to Slack workflow - Stable | |
uses: slackapi/[email protected] | |
if: ${{ failure() && steps.get-stability.outputs.is_stable == 'true' }} | |
with: | |
payload: | | |
{ | |
"text": "Oooops, seems like latest stable Noir breaks noir-starter! Projects needing updating: with-foundry ${{ matrix.version }}" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
- name: Send GitHub Action trigger data to Slack workflow - Prerelease | |
uses: slackapi/[email protected] | |
if: ${{ failure() && steps.get-stability.outputs.is_stable == 'false' }} | |
with: | |
payload: | | |
{ | |
"text": "Heads up DevRel! Once the prerelease becomes stable, the following project will break: with-foundry ${{ matrix.version }}" | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} |