feat: AES NIVC + build #46
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: build-circuits | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
branches: [ "main" ] | |
jobs: | |
check-version: | |
name: Check package.json version update | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 # Fetch two commits to get the base branch | |
- name: Fetch main branch | |
run: | | |
git fetch origin main | |
- name: Compare package.json version with main | |
id: version_check | |
run: | | |
# Extract version from package.json in PR branch | |
PR_VERSION=$(jq -r .version package.json) | |
# Extract version from package.json in main branch | |
MAIN_VERSION=$(git show origin/main:package.json | jq -r .version) | |
echo "PR version: $PR_VERSION" | |
echo "Main version: $MAIN_VERSION" | |
# Fail if versions match | |
if [ "$PR_VERSION" == "$MAIN_VERSION" ]; then | |
echo "Error: package.json version has not been updated in this PR." | |
exit 1 | |
else | |
echo "package.json version has been updated in this PR." | |
fi | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Need full history to compare with previous release | |
- name: Install Protocol Buffers | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y protobuf-compiler libprotobuf-dev | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly-2024-06-10 | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
- name: Install Circom | |
run: | | |
CIRCOM_VERSION=2.1.9 | |
curl -L https://github.com/iden3/circom/releases/download/v$CIRCOM_VERSION/circom-linux-amd64 -o circom | |
chmod +x circom | |
sudo mv circom /usr/local/bin/ | |
circom --version | |
- name: Install circom-witnesscalc | |
run: | | |
cd .. && git clone https://github.com/pluto/circom-witnesscalc.git | |
cd circom-witnesscalc | |
cargo install --path . | |
echo $(which build-circuit) | |
- name: Install Node.js dependencies | |
run: | | |
npm ci | |
- name: Get package version | |
id: package_version | |
run: | | |
VERSION=$(node -p "require('./package.json').version") | |
echo "VERSION=$VERSION" >> $GITHUB_ENV | |
- name: Compile Circom circuits | |
run: | | |
mkdir -p artifacts | |
for circuit in circuits/*.circom; do | |
if [ -f "$circuit" ]; then | |
filename=$(basename "$circuit" .circom) | |
output_dir="artifacts/$filename" | |
mkdir -p "$output_dir" | |
echo "Processing $filename..." | |
# Run circom compilation | |
circom "$circuit" --r1cs --wasm -o "$output_dir" -l node_modules | |
# Run witness calculator build | |
build-circuit "$circuit" "$output_dir/$filename.bin" -l node_modules | |
fi | |
done | |
- name: Create release artifacts | |
run: | | |
cd artifacts | |
zip -r ../circom-artifacts-v${{ env.VERSION }}.zip ./* | |
cd .. | |
# Upload artifacts for PR | |
- name: Upload artifacts for PR | |
if: github.event_name == 'pull_request' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: circom-artifacts-v${{ env.VERSION }} | |
path: circom-artifacts-v${{ env.VERSION }}.zip | |
retention-days: 5 |