.github/workflows/__lint.yml
name: 'Lint'
on:
workflow_call:
inputs:
affected:
description: >
Run for affected projects.
required: false
default: true
type: boolean
node_version:
description: >
Optionally define the version of Node to install.
required: false
default: 'lts/*'
type: string
save_cache:
description: >
Should the cache be saved upon completion?
required: false
default: false
type: boolean
outputs:
isNxMeshAffected:
description: >
Is the nx-mesh lib affected?
value: ${{ jobs.lint.outputs.isNxMeshAffected }}
hasAffected:
description: >
Are there affected apps or libs?
value: ${{ jobs.lint.outputs.hasAffected }}
hasAffectedApps:
description: >
Are there affected apps?
value: ${{ jobs.lint.outputs.hasAffectedApps }}
hasAffectedLibs:
description: >
Are there affected libs?
value: ${{ jobs.lint.outputs.hasAffectedLibs }}
secrets:
NX_CLOUD_ACCESS_TOKEN:
description: 'The NX Cloud API token'
required: true
concurrency:
group: lint--${{ github.workflow }}--${{ github.ref }}
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
jobs:
lint:
name: Lint & Prettier
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
isNxMeshAffected: ${{ contains(steps.setup.outputs.affectedLibs, 'nx-mesh') }}
hasAffected: ${{ steps.setup.outputs.hasAffected }}
hasAffectedApps: ${{ steps.setup.outputs.hasAffectedApps }}
hasAffectedLibs: ${{ steps.setup.outputs.hasAffectedLibs }}
steps:
- name: Check out repository
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3
with:
fetch-depth: 0
- name: Setup Job
id: setup
uses: ./.github/actions/setup-job
with:
node_version: ${{ inputs.node_version }}
save_cache: '${{ inputs.save_cache }}'
- name: Format
run: |
pnpm nx-cloud record -- npx nx format:check
- name: Affected Lint
if: inputs.affected == true
run: |
pnpm nx affected \
--target=lint \
--parallel=4
- name: Lint
if: inputs.affected != true
run: |
pnpm nx run-many \
--target=lint \
--parallel=4 \
--all