From f62fe228841e512077ef7add46ec158b7348a693 Mon Sep 17 00:00:00 2001 From: Giacomo Date: Mon, 23 Sep 2024 16:37:46 +0200 Subject: [PATCH] ci: add basic automation for style and test on pull requests --- .github/workflows/pull-requests.yml | 90 +++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .github/workflows/pull-requests.yml diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml new file mode 100644 index 0000000..cc44b42 --- /dev/null +++ b/.github/workflows/pull-requests.yml @@ -0,0 +1,90 @@ +name: pull-requests + +on: + pull_request: + +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: | + contracts: + - packages/contracts/**/*.{js,json,ts,sol} + docs: + - apps/docs/**/* + 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 compile:contracts + yarn workspace excubiae-contracts lint + + - if: steps.changed-files.outputs.docs_any_changed == 'true' + name: Build and format docs + run: | + yarn workspace excubiae-docs build + yarn workspace excubiae-docs format + + - if: steps.changed-files.outputs.libraries_any_changed == 'true' + name: Build packages + run: yarn build:packages + + - if: steps.changed-files.outputs.to_format_any_changed == 'true' + name: Format + run: yarn run prettier --check --ignore-unknown ${{ 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: | + contracts: + - packages/contracts/**/*.{js,json,ts,sol} + libraries: + - packages/**/*.{js,json,ts} + - '!packages/{circuits,contracts}/**/*' + + - if: steps.changed-files.outputs.contracts_any_changed == 'true' + name: Build and Test contracts + run: | + yarn compile:contracts + yarn test:contracts