Skip to content

Commit

Permalink
Improve PR-builder workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
JayaShakthi97 committed Jul 4, 2024
1 parent 88119ea commit f0795fb
Showing 1 changed file with 16 additions and 157 deletions.
173 changes: 16 additions & 157 deletions .github/workflows/pr-builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,45 +19,35 @@ env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
lint:
name: ⬣ ESLint (STATIC ANALYSIS)
if: ${{ github.event_name == 'pull_request' || github.event.label.name == 'trigger-pr-builder' }}
setup:
name: ⬇️ Setup
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [ lts/* ]
pnpm-version: [ 8.7.4 ]
outputs:
pnpm-cache-path: ${{ steps.get-pnpm-cache-dir.outputs.pnpm_cache_dir }}
steps:
- name: ⬇️ Checkout
id: checkout
uses: actions/[email protected]
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0

- name: 🟒 Setup node
id: setup-node
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}

- name: 🐳 Set SHAs for Nx
id: set-shas
uses: nrwl/nx-set-shas@v3
with:
main-branch-name: "master"

- name: πŸ₯‘ Setup pnpm
id: setup-pnpm
uses: pnpm/[email protected]
with:
version: ${{ matrix.pnpm-version }}
run_install: false

- name: 🎈 Get pnpm store directory
id: get-pnpm-cache-dir
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
run: echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"

- name: πŸ”† Cache pnpm modules
uses: actions/cache@v3
Expand All @@ -69,144 +59,52 @@ jobs:
${{ runner.os }}-pnpm-store-
- name: 🧩 Install Dependencies
id: install-dependencies
run: pnpm install

lint:
needs: setup
name: ⬣ ESLint (STATIC ANALYSIS)
if: ${{ github.event_name == 'pull_request' || github.event.label.name == 'trigger-pr-builder' }}
runs-on: ubuntu-latest
steps:
- name: πŸ¦„ Lint Changed Files
id: lint-changed-with-eslint
working-directory: .github/workflows
run: |
bash ./scripts/lint-changed.sh ${{ github.event.pull_request.number }}
# Temporarily disable linting all files as it is failing intermittently.
# - name: ⏳ Lint All Files
# id: lint-with-eslint
# run: pnpm nx affected --base=${{ env.NX_BASE }} --head=${{ env.NX_HEAD }} --plain --target=lint --parallel=3

typecheck:
needs: setup
name: Κ¦ Typecheck (STATIC ANALYSIS)
if: ${{github.event.label.name == 'trigger-pr-builder' || github.event_name == 'pull_request'}}
if: ${{ github.event_name == 'pull_request' || github.event.label.name == 'trigger-pr-builder' }}
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [ lts/* ]
pnpm-version: [ 8.7.4 ]
steps:
- name: ⬇️ Checkout
id: checkout
uses: actions/[email protected]
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0

- name: 🟒 Setup node
id: setup-node
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}

- name: 🐳 Set SHAs for Nx
id: set-shas
uses: nrwl/nx-set-shas@v3
with:
main-branch-name: "master"

- name: πŸ₯‘ Setup pnpm
uses: pnpm/[email protected]
with:
version: ${{ matrix.pnpm-version }}
run_install: false

- name: 🎈 Get pnpm store directory
id: get-pnpm-cache-dir
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- name: πŸ”† Cache pnpm modules
uses: actions/cache@v3
id: pnpm-cache
with:
path: ${{ steps.get-pnpm-cache-dir.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: 🧩 Install Dependencies
id: install-dependencies
run: pnpm install

- name: πŸ‘· Build Re-usable Modules
id: build-reusable-modules
run: pnpm build:modules

- name: β˜„οΈ Check Type Errors
run: pnpm nx affected --base=${{ env.NX_BASE }} --head=${{ env.NX_HEAD }} --plain --target=typecheck --parallel=3

test:
needs: [ setup, typecheck ]
name: πŸ‘Ύ Unit Test (TESTING)
needs: [ typecheck ]
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [ lts/* ]
pnpm-version: [ 8.7.4 ]
steps:
- name: ⬇️ Checkout
id: checkout
uses: actions/[email protected]

- name: 🟒 Setup node
id: setup-node
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}

- name: πŸ₯‘ Setup pnpm
uses: pnpm/[email protected]
with:
version: ${{ matrix.pnpm-version }}
run_install: false

- name: 🎈 Get pnpm store directory
id: get-pnpm-cache-dir
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- name: πŸ”† Cache pnpm modules
uses: actions/cache@v3
id: pnpm-cache
with:
path: ${{ steps.get-pnpm-cache-dir.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: 🧩 Install Dependencies
id: install-dependencies
run: pnpm install

- name: πŸ‘· Build Re-usable Modules
id: build-reusable-modules
run: pnpm build:modules
run: pnpm build:modules

- name: πŸƒ Run Jest & Collect Coverage
id: run-jest-test-and-coverage
# TODO: Update the command to "test:unit:coverage" once the coverage command related issues
# are sorted out
run: pnpm test:unit

- name: πŸ€– Aggregate Test Coverage
# TODO: Enable this step once the coverage command related issues are fixed
if: false
id: aggregate-coverage-reports
run: |
pnpm test:unit:coverage:aggregate
pnpm nyc:text-summary-report
pnpm nyc:text-report
build:
needs: [ setup, lint, typecheck, test ]
name: 🚧 Build
needs: [ test, typecheck ]
runs-on: ubuntu-latest
strategy:
matrix:
Expand All @@ -215,18 +113,7 @@ jobs:
java-version: [ 11 ]
pnpm-version: [ 8.7.4 ]
steps:
- name: ⬇️ Checkout
id: checkout
uses: actions/[email protected]

- name: 🟒 Setup node
id: setup-node
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}

- name: β˜• Set up JDK 11
id: jdk-setup
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.java-version }}
Expand All @@ -235,46 +122,18 @@ jobs:

- name: 🦩 Set up Maven
uses: stCarolas/setup-maven@v4
id: mvn-setup
with:
maven-version: ${{ matrix.maven-version }}

- name: πŸ₯‘ Setup pnpm
uses: pnpm/[email protected]
with:
version: ${{ matrix.pnpm-version }}
run_install: false

- name: 🎈 Get pnpm store directory
id: get-pnpm-cache-dir
run: |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
- name: πŸ”† Cache pnpm modules
uses: actions/cache@v3
id: pnpm-cache
with:
path: ${{ steps.get-pnpm-cache-dir.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: 🧩 Install Dependencies
id: install-dependencies
run: pnpm install

- name: πŸ‘· PNPM Build
id: build-with-pnpm
run: pnpm build

- name: πŸ—οΈ Maven Build identity-apps-core
id: build-with-maven
run: |
cd identity-apps-core
mvn clean install -U -Dlint.exec.skip=true -Dbootstrap.exec.skip=true
- name: πŸ’Ύ Cache local Maven repository
id: cache-maven-m2
uses: actions/cache@v2
with:
path: ~/.m2/repository
Expand Down

0 comments on commit f0795fb

Please sign in to comment.