mirror of
https://github.com/selfxyz/self.git
synced 2026-01-09 14:48:06 -05:00
custom circuit build (#1238)
* feat: update particular circuit type * feat: script to build single circuit * feat: update single circuit build artifact * feat: support for multiple circuit name build
This commit is contained in:
70
.github/workflows/circuits-build.yml
vendored
70
.github/workflows/circuits-build.yml
vendored
@@ -9,6 +9,17 @@ on:
|
||||
- "circuits/circuits/**"
|
||||
- ".github/workflows/artifacts.yml"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
circuit-type:
|
||||
description: 'Circuits to build (comma-separated: register, register_id, register_aadhaar, disclose, dsc). Leave empty to build all.'
|
||||
required: false
|
||||
type: string
|
||||
default: ''
|
||||
circuit-name:
|
||||
description: 'Circuit names to build (comma-separated: register_sha256_sha224_sha224_ecdsa_secp224r1, dsc_sha256_rsa_65537_4096). Cannot be used with circuit-type.'
|
||||
required: false
|
||||
type: string
|
||||
default: ''
|
||||
|
||||
concurrency:
|
||||
group: circuits-build-${{ github.workflow }}-${{ github.ref }}
|
||||
@@ -139,14 +150,61 @@ jobs:
|
||||
- name: Print Circom version
|
||||
run: circom --version
|
||||
|
||||
- name: Download previous artifacts
|
||||
if: github.event_name == 'workflow_dispatch' && (inputs.circuit-type != '' || inputs.circuit-name != '')
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: circuits
|
||||
path: output/
|
||||
continue-on-error: true
|
||||
|
||||
- name: Build cpp circuits
|
||||
run: |
|
||||
chmod +x circuits/scripts/build/build_cpp.sh && \
|
||||
./circuits/scripts/build/build_cpp.sh register &&
|
||||
./circuits/scripts/build/build_cpp.sh register_id &&
|
||||
./circuits/scripts/build/build_cpp.sh register_aadhaar &&
|
||||
./circuits/scripts/build/build_cpp.sh disclose &&
|
||||
./circuits/scripts/build/build_cpp.sh dsc
|
||||
chmod +x circuits/scripts/build/build_cpp.sh
|
||||
chmod +x circuits/scripts/build/build_single_circuit.sh
|
||||
|
||||
# Validate inputs - only one should be provided
|
||||
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
||||
if [[ "${{ inputs.circuit-type }}" != "" && "${{ inputs.circuit-name }}" != "" ]]; then
|
||||
echo " Error: Cannot provide both circuit-type and circuit-name. Use only one."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check what type of build to perform
|
||||
if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ inputs.circuit-name }}" != "" ]]; then
|
||||
# Build circuits by name
|
||||
INPUT_CIRCUITS="${{ inputs.circuit-name }}"
|
||||
INPUT_CIRCUITS=$(echo "$INPUT_CIRCUITS" | tr -d ' ')
|
||||
IFS=',' read -ra CIRCUITS_ARRAY <<< "$INPUT_CIRCUITS"
|
||||
|
||||
echo "Building selected circuits: ${{ inputs.circuit-name }}"
|
||||
for circuit_name in "${CIRCUITS_ARRAY[@]}"; do
|
||||
echo "Building circuit: $circuit_name"
|
||||
./circuits/scripts/build/build_single_circuit.sh "$circuit_name"
|
||||
done
|
||||
|
||||
elif [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ inputs.circuit-type }}" != "" ]]; then
|
||||
# Build circuits by type
|
||||
INPUT_CIRCUITS="${{ inputs.circuit-type }}"
|
||||
INPUT_CIRCUITS=$(echo "$INPUT_CIRCUITS" | tr -d ' ')
|
||||
IFS=',' read -ra CIRCUITS_ARRAY <<< "$INPUT_CIRCUITS"
|
||||
|
||||
echo "Building selected circuits: ${{ inputs.circuit-type }}"
|
||||
for circuit in "${CIRCUITS_ARRAY[@]}"; do
|
||||
echo "Building circuit: $circuit"
|
||||
./circuits/scripts/build/build_cpp.sh "$circuit"
|
||||
done
|
||||
|
||||
else
|
||||
# Build all circuits (default behavior)
|
||||
echo "Building all circuits (default behavior)"
|
||||
./circuits/scripts/build/build_cpp.sh register
|
||||
./circuits/scripts/build/build_cpp.sh register_id
|
||||
./circuits/scripts/build/build_cpp.sh register_aadhaar
|
||||
./circuits/scripts/build/build_cpp.sh disclose
|
||||
./circuits/scripts/build/build_cpp.sh dsc
|
||||
fi
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4
|
||||
|
||||
Reference in New Issue
Block a user