From 8b536918b6f3a11e2fc5ee4b1a668fa2bd04a014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro=20Sousa?= Date: Thu, 21 Dec 2023 10:09:45 +0000 Subject: [PATCH] shamelessly pushing to master a workflow_dispatch CI --- .github/workflows/with_foundry_nightly.yaml | 104 ++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 .github/workflows/with_foundry_nightly.yaml diff --git a/.github/workflows/with_foundry_nightly.yaml b/.github/workflows/with_foundry_nightly.yaml new file mode 100644 index 0000000..2027ce1 --- /dev/null +++ b/.github/workflows/with_foundry_nightly.yaml @@ -0,0 +1,104 @@ +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 test environment + uses: ./.github/actions/setup + with: + version: ${{ matrix.version }} + + - 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 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 + id: slack + uses: slackapi/slack-github-action@v1.24.0 + if: ${{ failure() && steps.get-stability.outputs.is_stable == 'false' }} + with: + payload: | + { + "text": "Once the prerelease becomes stable, projects need updating: with-foundry ${{ matrix.version }}" + } + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}