Skip to content

sourcify_single_chain #4

sourcify_single_chain

sourcify_single_chain #4

name: "sourcify_single_chain"
on:
# Run using manual triggers from GitHub UI:
# https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
workflow_dispatch:
inputs:
chain_id:
description: "ID of the chain to run against."
type: "number"
required: true
default: 1
check_infer_version:
description: "Check that we can infer the correct language version based on the available version pragmas."
type: "boolean"
required: false
default: false
check_binder:
description: "Check name bindings on contracts reporting if there's any unresolved symbol."
type: "choice"
required: true
default: "none"
options:
- "none"
- "v1"
- "v2"
- "compare"
workflow_call:
inputs:
chain_id:
description: "ID of the chain to run against: https://docs.sourcify.dev/docs/chains/"
type: "number"
required: true
default: 1
check_infer_version:
description: "Check that we can infer the correct language version based on the available version pragmas."
type: "boolean"
required: false
default: false
check_binder:
description: "Check name bindings on contracts reporting if there's any unresolved symbol."
type: "string"
required: false
default: null
jobs:
buildSlang:
runs-on: "ubuntu-22.04" # _SLANG_DEV_CONTAINER_BASE_IMAGE_ (keep in sync)
steps:
- name: "Checkout Repository"
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683"
- name: "Restore Cache"
uses: "./.github/actions/cache/restore"
- name: "Build Test Binary"
run: "./scripts/bin/with-hermit cargo build --bin solidity_testing_sourcify --release"
- name: "Save Test Binary"
uses: "actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02"
with:
name: "solidity_testing_sourcify_${{ inputs.chain_id }}"
path: "./target/release/solidity_testing_sourcify"
overwrite: true
retention-days: 1
singleShard:
runs-on: "ubuntu-22.04" # _SLANG_DEV_CONTAINER_BASE_IMAGE_ (keep in sync)
needs: "buildSlang"
outputs:
__SLANG_SOURCIFY_SHARD_RESULTS__0: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__0 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__1: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__1 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__2: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__2 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__3: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__3 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__4: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__4 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__5: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__5 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__6: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__6 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__7: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__7 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__8: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__8 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__9: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__9 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__10: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__10 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__11: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__11 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__12: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__12 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__13: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__13 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__14: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__14 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__15: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__15 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__16: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__16 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__17: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__17 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__18: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__18 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__19: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__19 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__20: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__20 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__21: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__21 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__22: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__22 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__23: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__23 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__24: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__24 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__25: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__25 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__26: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__26 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__27: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__27 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__28: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__28 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__29: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__29 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__30: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__30 }}"
__SLANG_SOURCIFY_SHARD_RESULTS__31: "${{ steps.output-shard-results.outputs.__SLANG_SOURCIFY_SHARD_RESULTS__31 }}"
strategy:
fail-fast: false # Continue running all shards even if some fail.
matrix:
shard_index:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
env:
SHARD_COUNT: 32 # Length of the 'shard_index' array above.
steps:
- name: "Checkout Repository"
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683"
- name: "Restore Cache"
uses: "./.github/actions/cache/restore"
- name: "Restore Test Binary"
uses: "actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093"
with:
name: "solidity_testing_sourcify_${{ inputs.chain_id }}"
- name: "Run Tests"
run: |
chmod +x solidity_testing_sourcify
./scripts/bin/with-hermit ./solidity_testing_sourcify test \
--chain-id ${{ inputs.chain_id }} \
--shard-count ${{ env.SHARD_COUNT }} \
--shard-index ${{ matrix.shard_index }} \
${{ inputs.check_binder != 'none' && format('--check-binder={0}', inputs.check_binder) || '' }} \
${{ inputs.check_infer_version == true && '--check-infer-version' || '' }}
- name: "Write shard results to output"
if: "!cancelled()"
id: "output-shard-results"
run: 'echo "__SLANG_SOURCIFY_SHARD_RESULTS__${{ matrix.shard_index }}=$(cat target/__SLANG_SOURCIFY_SHARD_RESULTS__.json)" >> "$GITHUB_OUTPUT"'
combinedResults:
runs-on: "ubuntu-22.04" # _SLANG_DEV_CONTAINER_BASE_IMAGE_ (keep in sync)
needs:
- "buildSlang"
- "singleShard"
if: "!cancelled()"
steps:
- name: "Checkout Repository"
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683"
- name: "Restore Cache"
uses: "./.github/actions/cache/restore"
- name: "Restore Test Binary"
uses: "actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093"
with:
name: "solidity_testing_sourcify_${{ inputs.chain_id }}"
- name: "Output shards results"
run: "echo '${{ toJSON(needs.singleShard.outputs) }}' > __SLANG_SOURCIFY_MATRIX_RESULTS__.json"
- name: "Show combined results"
run: |
chmod +x solidity_testing_sourcify
./scripts/bin/with-hermit ./solidity_testing_sourcify show-combined-results __SLANG_SOURCIFY_MATRIX_RESULTS__.json