Add CLI Foundry Template (cont.) #918
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: pull-requests | |
on: | |
pull_request: | |
env: | |
TREE_DEPTH: 10 | |
jobs: | |
style: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: yarn | |
- name: Install dependencies | |
run: yarn | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@v44 | |
with: | |
files_yaml: | | |
circuits: | |
- packages/circuits/**/*.{circom,json,ts} | |
contracts: | |
- packages/contracts/**/*.{js,json,ts,sol} | |
docs: | |
- apps/docs/**/* | |
libraries: | |
- packages/**/*.{js,json,ts} | |
- '!packages/{circuits,contracts}/**/*' | |
subgraph: | |
- apps/subgraph/**/* | |
to_format: | |
- '**/*.{cjs,js,json,jsx,md,mdx,sol,ts,tsx,yaml,yml}' | |
to_lint: | |
- '**/*.{cjs,js,jsx,ts,tsx}' | |
- if: steps.changed-files.outputs.contracts_any_changed == 'true' | |
name: Compile and lint contracts | |
run: | | |
yarn workspace @semaphore-protocol/utils build | |
yarn compile:contracts | |
yarn workspace semaphore-contracts lint | |
- if: steps.changed-files.outputs.docs_any_changed == 'true' | |
name: Build and format docs | |
run: | | |
yarn workspace semaphore-docs build | |
yarn workspace semaphore-docs format | |
- if: steps.changed-files.outputs.libraries_any_changed == 'true' | |
name: Build libraries | |
run: yarn build:libraries | |
- if: steps.changed-files.outputs.subgraph_any_changed == 'true' | |
name: Build subgraph | |
run: | | |
yarn workspace @semaphore-protocol/utils build | |
yarn build:subgraph | |
- if: steps.changed-files.outputs.to_format_any_changed == 'true' | |
name: Format | |
run: yarn run prettier --check ${{ steps.changed-files.outputs.to_format_all_changed_files }} | |
- if: steps.changed-files.outputs.to_lint_any_changed == 'true' | |
name: Run Eslint | |
run: yarn run eslint ${{ steps.changed-files.outputs.to_lint_all_changed_files }} --ext .cjs,.js,.jsx,.ts,.tsx | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: yarn | |
- name: Install dependencies | |
run: yarn | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@v44 | |
with: | |
files_yaml: | | |
circuits: | |
- packages/circuits/**/*.{circom,json,ts} | |
contracts: | |
- packages/contracts/**/*.{js,json,ts,sol} | |
libraries: | |
- packages/**/*.{js,json,ts} | |
- '!packages/{circuits,contracts}/**/*' | |
subgraph: | |
- apps/subgraph/**/* | |
# https://github.com/iden3/circuits/blob/8fffb6609ecad0b7bcda19bb908bdb544bdb3cf7/.github/workflows/main.yml#L18-L22 | |
# https://stackoverflow.com/a/78377916 | |
- if: steps.changed-files.outputs.circuits_any_changed == 'true' | |
name: Setup Circom and Test circuits | |
run: | | |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list | |
sudo apt-get update && sudo apt-get install -y wget nlohmann-json3-dev libgmp-dev nasm g++ build-essential | |
sudo wget https://github.com/iden3/circom/releases/download/v2.1.9/circom-linux-amd64 -O /usr/bin/circom && sudo chmod +x /usr/bin/circom | |
yarn workspace @semaphore-protocol/group build | |
yarn workspace @semaphore-protocol/identity build | |
yarn workspace @semaphore-protocol/proof build | |
yarn workspace @semaphore-protocol/utils build | |
yarn test:circuits | |
- if: steps.changed-files.outputs.contracts_any_changed == 'true' | |
name: Build and Test contracts | |
run: | | |
yarn workspace @semaphore-protocol/group build | |
yarn workspace @semaphore-protocol/identity build | |
yarn workspace @semaphore-protocol/proof build | |
yarn workspace @semaphore-protocol/utils build | |
yarn compile:contracts | |
yarn test:contracts | |
- if: steps.changed-files.outputs.libraries_any_changed == 'true' | |
name: Build and Test libraries | |
run: yarn build:libraries && yarn test:libraries | |
- if: steps.changed-files.outputs.subgraph_any_changed == 'true' | |
name: Build and Test Subgraph | |
run: | | |
yarn workspace @semaphore-protocol/utils build | |
yarn build:subgraph | |
yarn test:subgraph |