Daily Block Run #62
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 | |
SEQUENCER_REV: 1b1b95cae7ae07b9bc778443ca75ee18008a6bc8 | |
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: | |
matrix: | |
block: | |
- 740000 | |
- 741000 | |
- 742000 | |
- 743000 | |
- 744000 | |
- 745000 | |
- 746000 | |
- 747000 | |
- 748000 | |
- 749000 | |
runner: | |
- native | |
- vm | |
fail-fast: false | |
defaults: | |
run: | |
shell: bash | |
working-directory: ./starknet-replay | |
steps: | |
# We checkout replay first, 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 for building the runtime | |
- name: Checkout Native | |
uses: actions/checkout@v4 | |
with: | |
path: cairo_native | |
# 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 | |
- 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 dependencies | |
run: | | |
# Patches native dependency to local path, to use current cairo native version | |
DEPENDENCY="cairo-native" | |
NEW_PATH="../cairo_native" | |
sed -Ei "s#^($DEPENDENCY *=).*#\1 { path = '$NEW_PATH' }#" Cargo.toml | |
grep $DEPENDENCY Cargo.toml | |
# Patches sequencer dependency to specified rev | |
GIT="https://github.com/lambdaclass/sequencer" | |
NEW_REV="$SEQUENCER_REV" | |
sed -Ei "s#(\"$GIT\" *, *rev *= *\").?*(\".*)#\1$NEW_REV\2#" Cargo.toml | |
grep $GIT Cargo.toml | |
- 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() }} | |
strategy: | |
matrix: | |
block: | |
- 740000 | |
- 741000 | |
- 742000 | |
- 743000 | |
- 744000 | |
- 745000 | |
- 746000 | |
- 747000 | |
- 748000 | |
- 749000 | |
fail-fast: false | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Fetch Native dumps | |
uses: actions/download-artifact@v4 | |
with: | |
name: dump-${{matrix.block}}-native | |
path: state_dumps/native | |
continue-on-error: true | |
- name: Fetch VM dumps | |
uses: actions/download-artifact@v4 | |
with: | |
name: dump-${{matrix.block}}-vm | |
path: state_dumps/vm | |
continue-on-error: true | |
- name: Compare states | |
run: | | |
./scripts/cmp_state_dumps.sh | tee output | |
- name: Prepare env vars | |
if: ${{ always() }} | |
run: | | |
# Save blocks to env var | |
BLOCK_START=${{ matrix.block }} | |
BLOCK_END=$(($BLOCK_START + $RANGE_SIZE - 1)) | |
echo "BLOCK_END=$BLOCK_END" | tee -a $GITHUB_ENV | |
echo "BLOCK_START=$BLOCK_START" | tee -a $GITHUB_ENV | |
# 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 |