Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev: use native in ci #992

Merged
merged 10 commits into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Reusable Build Workflow

on:
workflow_call:
inputs:
artifact-name:
required: true
type: string

permissions: read-all

jobs:
build:
runs-on: ubuntu-latest
env:
CI_COMMIT_MESSAGE: CI Formatting Auto Commit
CI_COMMIT_AUTHOR: ${{ github.event.repository.name }} CI
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Scarb
uses: software-mansion/setup-scarb@v1

- name: Build contracts
run: scarb build -p contracts

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ inputs.artifact-name }}
path: target/dev
116 changes: 11 additions & 105 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,118 +16,24 @@ permissions: read-all

jobs:
build:
runs-on: ubuntu-latest
env:
CI_COMMIT_MESSAGE: CI Formatting Auto Commit
CI_COMMIT_AUTHOR: ${{ github.event.repository.name }} CI
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Scarb
uses: software-mansion/setup-scarb@v1

- name: Build contracts
run: scarb build -p contracts

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: kakarot-ssj-build
path: target/dev
uses: ./.github/workflows/build.yml
with:
artifact-name: kakarot-ssj-build

tests-unit:
# trunk-ignore(actionlint/runner-label)
runs-on: ubuntu-latest-16-cores
steps:
- uses: actions/checkout@v3
- uses: foundry-rs/setup-snfoundry@v3
- uses: software-mansion/setup-scarb@v1
- run: scarb fmt --check
- run: scarb build
- run: scarb test
uses: ./.github/workflows/tests-unit.yml
with:
run-fmt-check: false

ef-tests:
# trunk-ignore(actionlint/runner-label)
runs-on: ubuntu-latest-32-cores
needs: build
steps:
- name: Checkout ef-tests
uses: actions/checkout@v4
with:
repository: kkrt-labs/ef-tests

- 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-v0

- name: Install nextest
uses: taiki-e/install-action@nextest

- name: Download Kakarot-SSJ build artifacts in v1
uses: actions/download-artifact@v3
with:
name: kakarot-ssj-build
path: ./build/v1

- name: Move Cairo1Helpers
run:
mv build/v1/contracts_Cairo1Helpers.compiled_contract_class.json
build/common/cairo1_helpers.json

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.10.14

- name: Run tests
run: |
set -o pipefail
make ef-test-v1 | tee data.txt
set +o pipefail

- name: Retrieve ef-tests execution resources
run: python scripts/compute_resources.py
env:
KAKAROT_VERSION: v1

- name: Upload resources
uses: actions/upload-artifact@v3
with:
path: resources
name: resources

- name: Generate blockchain-tests-skip.yml file
if: github.event_name == 'workflow_dispatch'
run: make generate-skip-file

- name: Upload skip file
if: github.event_name == 'workflow_dispatch'
uses: actions/upload-artifact@v3
with:
path: blockchain-tests-skip.yml
name: blockchain-tests-skip
uses: ./.github/workflows/ef-tests.yml
needs: [build]
with:
artifact-name: kakarot-ssj-build

resources:
runs-on: ubuntu-latest
needs: ef-tests
needs: [ef-tests]
steps:
- uses: actions/checkout@v4

Expand Down
129 changes: 129 additions & 0 deletions .github/workflows/ef-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: EF-Tests

on:
workflow_call:
inputs:
artifact-name:
required: true
type: string

permissions: read-all

jobs:
ef-tests:
# trunk-ignore(actionlint/runner-label)
runs-on: ubuntu-latest-16-cores
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Cache cairo-native setup
id: cache-cairo-native
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
./libcairo_native_runtime.a
key:
${{ runner.os }}-cairo-native-${{ hashFiles('**/Cargo.lock',
'scripts/setup_cairo_native.sh') }}

- name: Make setup script executable
run: chmod +x ./scripts/setup_cairo_native.sh

- name: Setup Cairo Native
run: |
if [[ "${{ steps.cache-cairo-native.outputs.cache-hit }}" == 'true' ]]; then
sudo ./scripts/setup_cairo_native.sh -s
else
sudo ./scripts/setup_cairo_native.sh
fi

- name: Set Environment Variables
run: |
echo "MLIR_SYS_190_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "LLVM_SYS_191_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "TABLEGEN_190_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "CAIRO_NATIVE_RUNTIME_LIBRARY=$(pwd)/libcairo_native_runtime.a" >> $GITHUB_ENV

- name: Checkout ef-tests
uses: actions/checkout@v4
with:
repository: kkrt-labs/ef-tests
ref: feat/cairo-native
path: ef-tests # Check out to a subdirectory to avoid cleaning the kakarot-ssj directory

- 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: Setup ef-tests
run: |
mv skip-file/blockchain-tests-skip.yml ef-tests/blockchain-tests-skip.yml
cd ef-tests
mkdir -p build/common
make setup setup-kakarot-v0

- name: Install nextest
uses: taiki-e/install-action@nextest

- name: Download Kakarot-SSJ build artifacts in v1
uses: actions/download-artifact@v3
with:
name: ${{ inputs.artifact-name }}
path: ef-tests/build/v1

- name: Move Cairo1Helpers
run: |
mv ef-tests/build/v1/contracts_Cairo1Helpers.compiled_contract_class.json \
ef-tests/build/common/cairo1_helpers.json

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.10.14

# Add this step to verify the file exists
- name: Verify libcairo_native_runtime.a
run: |
echo $CAIRO_NATIVE_RUNTIME_LIBRARY
ls -l $CAIRO_NATIVE_RUNTIME_LIBRARY

- name: Run tests
working-directory: ef-tests
run: |
set -o pipefail
RUST_MIN_STACK=1342177280 make ef-test-v1-native | tee data.txt
set +o pipefail

- name: Retrieve ef-tests execution resources
working-directory: ef-tests
run: python scripts/compute_resources.py
env:
KAKAROT_VERSION: v1

- name: Upload resources
uses: actions/upload-artifact@v3
with:
path: ef-tests/resources
name: resources

- name: Generate blockchain-tests-skip.yml file
if: github.event_name == 'workflow_dispatch'
working-directory: ef-tests
run: make generate-skip-file

- name: Upload skip file
if: github.event_name == 'workflow_dispatch'
uses: actions/upload-artifact@v3
with:
path: ef-tests/blockchain-tests-skip.yml
name: blockchain-tests-skip
43 changes: 0 additions & 43 deletions .github/workflows/gas_reports.yml

This file was deleted.

34 changes: 0 additions & 34 deletions .github/workflows/gas_snapshot.yml

This file was deleted.

Loading
Loading