Daily Block Run #137
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: Daily Block Run | |
on: | |
schedule: | |
# At the end of every day | |
- cron: "0 0 * * *" | |
env: | |
RANGE_SIZE: 25 | |
jobs: | |
run: | |
runs-on: ubuntu-latest | |
env: | |
LLVM_SYS_191_PREFIX: /usr/lib/llvm-19/ | |
MLIR_SYS_190_PREFIX: /usr/lib/llvm-19/ | |
TABLEGEN_190_PREFIX: /usr/lib/llvm-19/ | |
RPC_ENDPOINT_TESTNET: ${{ secrets.RPC_ENDPOINT_TESTNET }} | |
RPC_ENDPOINT_MAINNET: ${{ secrets.RPC_ENDPOINT_MAINNET }} | |
strategy: | |
max-parallel: 30 | |
matrix: | |
block: | |
- 740000 | |
- 741000 | |
- 742000 | |
- 743000 | |
- 744000 | |
- 745000 | |
- 746000 | |
- 747000 | |
- 748000 | |
- 749000 | |
- 800000 | |
- 800050 | |
- 800100 | |
- 800150 | |
- 800200 | |
- 800250 | |
- 800300 | |
- 800350 | |
- 800400 | |
- 800450 | |
- 900000 | |
- 900100 | |
- 900200 | |
- 900300 | |
- 900400 | |
- 900500 | |
- 900600 | |
- 900700 | |
- 900800 | |
- 900900 | |
- 1000000 | |
- 1001000 | |
- 1002000 | |
- 1003000 | |
- 1004000 | |
- 1005000 | |
- 1006000 | |
- 1007000 | |
- 1008000 | |
- 1009000 | |
runner: | |
- native | |
- vm | |
fail-fast: false | |
defaults: | |
run: | |
shell: bash | |
working-directory: ./starknet-replay | |
steps: | |
# We checkout replay as it's the main repository for this workflow | |
- name: Checkout Replay | |
uses: actions/checkout@v4 | |
with: | |
repository: lambdaclass/starknet-replay | |
path: starknet-replay | |
# We need native if we want to run with cairo native main | |
- name: Checkout Native | |
uses: actions/checkout@v4 | |
with: | |
path: cairo_native | |
# We need sequencer if we want to run with cairo native main | |
- name: Checkout Native | |
uses: actions/checkout@v4 | |
with: | |
repository: lambdaclass/sequencer | |
path: sequencer | |
ref: replay | |
# Install dependencies | |
- uses: ./cairo_native/.github/actions/install-linux-deps | |
- name: Setup rust env | |
uses: dtolnay/[email protected] | |
- name: Retreive cached dependecies | |
uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: "starknet-replay -> target" | |
cache-directories: "cairo_native" | |
- name: Build Cairo Native Runtime Library | |
shell: bash | |
run: | | |
cd ../cairo_native | |
make runtime | |
echo "CAIRO_NATIVE_RUNTIME_LIBRARY=$(pwd)/libcairo_native_runtime.a" > $GITHUB_ENV | |
- name: Patch replay dependencies | |
run: | | |
# Updates sequencer dependency to local path | |
name='[[:alnum:]_-]+' | |
sequencer_url='"https:\/\/github.com\/lambdaclass\/sequencer\.git"' | |
rev='"[[:alnum:]]+"' | |
new_path='"..\/sequencer\/crates\/\1"' | |
sed -i'' -r "s/^($name) = \{ git = $sequencer_url, rev = $rev/\1 = { path = $new_path/" Cargo.toml | |
# Updates native dependency to local path | |
new_path='"..\/cairo_native"' | |
sed -i'' -r "s/^cairo-native = .*/cairo-native.path = $new_path/" Cargo.toml | |
git diff | |
- name: Patch sequencer dependencies | |
run: | | |
cd ../sequencer | |
# Updates native dependency to local path | |
new_path='"..\/cairo_native"' | |
sed -i'' -r "s/^cairo-native = .*/cairo-native.path = $new_path/" Cargo.toml | |
# Update native submodule | |
git rm crates/blockifier/cairo_native | |
ln -s ../../../cairo_native/ crates/blockifier/cairo_native | |
git diff | |
- name: Run with Native | |
if: ${{ matrix.runner == 'native' }} | |
run: | | |
BLOCK_START=${{ matrix.block }} | |
BLOCK_END=$(($BLOCK_START + $RANGE_SIZE - 1)) | |
cargo run --release --features state_dump block-range $BLOCK_START $BLOCK_END mainnet | |
- name: Run with VM | |
if: ${{ matrix.runner == 'vm' }} | |
run: | | |
BLOCK_START=${{ matrix.block }} | |
BLOCK_END=$(($BLOCK_START + $RANGE_SIZE - 1)) | |
cargo run --release --features state_dump,only_cairo_vm block-range $BLOCK_START $BLOCK_END mainnet | |
# We always upload the dump, even if the job fails | |
- name: Upload dumps | |
uses: actions/upload-artifact@v4 | |
if: ${{ always() }} | |
with: | |
name: dump-${{matrix.block}}-${{matrix.runner}} | |
path: starknet-replay/state_dumps/${{matrix.runner}} | |
compare: | |
needs: [run] | |
runs-on: ubuntu-latest | |
# We always run the compare job, to ensure that a single run job failing | |
# would not cancel the whole comparison. | |
if: ${{ always() }} | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Fetch Native dumps | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: dump-*-native | |
path: state_dumps/native | |
merge-multiple: true | |
continue-on-error: true | |
- name: Fetch VM dumps | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: dump-*-vm | |
path: state_dumps/vm | |
merge-multiple: true | |
continue-on-error: true | |
- name: Compare states | |
run: | | |
./scripts/cmp_state_dumps.sh | tee output | |
- name: Prepare env vars | |
if: ${{ always() }} | |
run: | | |
# Save workflow url | |
REPO_URL="${{ github.server_url }}/${{ github.repository }}" | |
echo "WORKFLOW_URL=$REPO_URL/actions/runs/${{ github.run_id }}" | tee -a $GITHUB_ENV | |
# Save output | |
{ | |
echo 'OUTPUT<<EOF' | |
cat output | |
echo EOF | |
} >> "$GITHUB_ENV" | |
- name: Create Issue | |
if: ${{ failure() }} | |
uses: JasonEtco/create-an-issue@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COMMIT_SHA: ${{ github.sha }} | |
with: | |
filename: .github/ISSUE_TEMPLATE/daily_failure.md |