[KGA-19] dev: use Cairo1Helpers class for 'call_contract' for future-proofness #499
Workflow file for this run
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: cairo-zero-CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- "*" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
concurrency: | |
group: cairo-zero-${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: read-all | |
jobs: | |
paths-filter: | |
runs-on: ubuntu-latest | |
outputs: | |
src: ${{ steps.filter.outputs.src }} | |
kakarot_scripts: ${{ steps.filter.outputs.kakarot_scripts }} | |
solidity: ${{ steps.filter.outputs.solidity }} | |
tests: ${{ steps.filter.outputs.tests }} | |
makefile: ${{ steps.filter.outputs.makefile }} | |
rust: ${{ steps.filter.outputs.rust }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
src: | |
- 'cairo_zero/**' | |
kakarot_scripts: | |
- 'kakarot_scripts/**' | |
solidity: | |
- 'solidity_contracts/**' | |
tests: | |
- 'tests/**' | |
makefile: | |
- 'Makefile' | |
rust: | |
- 'rust-toolchain' | |
build: | |
runs-on: ubuntu-latest | |
needs: paths-filter | |
if: | |
needs.paths-filter.outputs.src == 'true' || | |
needs.paths-filter.outputs.kakarot_scripts == 'true' || | |
needs.paths-filter.outputs.makefile == 'true' || | |
needs.paths-filter.outputs.rust == 'true' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: astral-sh/setup-uv@v2 | |
with: | |
enable-cache: true | |
cache-dependency-glob: uv.lock | |
- uses: actions/setup-python@v5 | |
with: | |
python-version-file: .python-version | |
- uses: asdf-vm/actions/install@v3 | |
- run: asdf install | |
- name: Compile all the cairo files | |
run: | | |
cp .env.example .env | |
make build | |
- name: Uploads Kakarot build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: kakarot-build | |
path: ./build | |
tests-unit: | |
runs-on: ubuntu-latest-16-cores | |
env: | |
PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
needs: paths-filter | |
if: | |
needs.paths-filter.outputs.src == 'true' || | |
needs.paths-filter.outputs.tests == 'true' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: astral-sh/setup-uv@v2 | |
with: | |
enable-cache: true | |
cache-dependency-glob: uv.lock | |
- uses: actions/setup-python@v5 | |
with: | |
python-version-file: .python-version | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: nightly | |
- name: Run tests | |
env: | |
HYPOTHESIS_PROFILE: ci | |
run: | | |
cp .env.example .env | |
make test-unit-cairo-zero | |
- name: Upload coverage report to codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
directory: ./coverage/ | |
tests-end-to-end: | |
runs-on: ubuntu-latest | |
env: | |
STARKNET_NETWORK: katana | |
PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python | |
needs: paths-filter | |
if: | |
needs.paths-filter.outputs.src == 'true' || | |
needs.paths-filter.outputs.kakarot_scripts == 'true' || | |
needs.paths-filter.outputs.solidity == 'true' || | |
needs.paths-filter.outputs.tests == 'true' || | |
needs.paths-filter.outputs.makefile == 'true' || | |
needs.paths-filter.outputs.rust == 'true' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Extract Katana Version | |
id: extract_katana_version | |
run: | | |
KATANA_VERSION=$(grep -E "^KATANA_VERSION\s*=" kakarot_scripts/setup/setup.py | cut -d'"' -f2) | |
echo "katana_version=$KATANA_VERSION" >> "$GITHUB_OUTPUT" | |
- uses: astral-sh/setup-uv@v2 | |
with: | |
enable-cache: true | |
cache-dependency-glob: uv.lock | |
- uses: actions/setup-python@v5 | |
with: | |
python-version-file: .python-version | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: nightly | |
- uses: asdf-vm/actions/install@v3 | |
- name: Load cached katana | |
id: cached-katana | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/bin | |
key: katana-${{ steps.extract_katana_version.outputs.katana_version }} | |
- name: Install Katana | |
if: steps.cached-katana.outputs.cache-hit != 'true' | |
run: make setup "katana" | |
- name: Run tests | |
run: | | |
cp .env.example .env | |
make run-nodes & make test-end-to-end | |
forge-test: | |
runs-on: ubuntu-latest | |
needs: paths-filter | |
if: needs.paths-filter.outputs.solidity == 'true' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: nightly | |
- name: Install deps | |
run: forge install | |
- name: Run tests | |
run: forge test -vvv | |
ef-tests: | |
runs-on: ubuntu-latest-32-cores | |
needs: | |
- build | |
- paths-filter | |
if: needs.paths-filter.outputs.src == 'true' | |
steps: | |
- name: Checkout ef-tests | |
uses: actions/checkout@v4 | |
with: | |
repository: kkrt-labs/ef-tests | |
ref: feat/update-base-fee-state | |
- name: Checkout local skip file | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
blockchain-tests-skip.yml | |
sparse-checkout-cone-mode: false | |
path: skip-file | |
- name: Replace the skip files | |
run: | | |
mv skip-file/blockchain-tests-skip.yml blockchain-tests-skip.yml | |
- name: Rust cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: "true" | |
- name: setup | |
run: mkdir -p build/common && make setup setup-kakarot-v1 | |
- uses: taiki-e/install-action@nextest | |
- name: Download Kakarot build artifacts in v0 | |
uses: actions/download-artifact@v4 | |
with: | |
name: kakarot-build | |
path: ./build/v0 | |
- name: Move ERC20 | |
run: mv build/v0/ERC20.json build/common | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.10.14 | |
- name: run tests | |
run: | | |
set -o pipefail | |
make ef-test-v0 | tee test_v0.out | |
set +o pipefail | |
- name: Retrieve ef-tests execution resources | |
run: python scripts/compute_resources.py | |
env: | |
KAKAROT_VERSION: v0 | |
- name: upload resources | |
uses: actions/upload-artifact@v4 | |
with: | |
path: resources | |
name: resources | |
resources: | |
runs-on: ubuntu-latest | |
needs: | |
- ef-tests | |
- paths-filter | |
if: needs.paths-filter.outputs.src == 'true' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: astral-sh/setup-uv@v2 | |
with: | |
enable-cache: true | |
cache-dependency-glob: uv.lock | |
- uses: actions/setup-python@v5 | |
with: | |
python-version-file: .python-version | |
- name: Load performance artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: resources | |
name: resources | |
- name: Check resources evolution | |
run: | | |
result=$(GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} make check-resources 2>&1) | |
echo "$result" >> "$GITHUB_STEP_SUMMARY" |