89 lines
2.4 KiB
YAML
89 lines
2.4 KiB
YAML
name: Linting and type checking (standalone)
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
SONARQUBE_ENABLED:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
TESTS_ENABLED:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
SETUP_REPO_SCRIPT:
|
|
required: false
|
|
type: string
|
|
default: yarn run setup
|
|
TEST_SCRIPT:
|
|
required: false
|
|
type: string
|
|
default: yarn run test
|
|
LINT_SCRIPT:
|
|
required: false
|
|
type: string
|
|
default: yarn run lint
|
|
CHECK_TYPES_SCRIPT:
|
|
required: false
|
|
type: string
|
|
default: yarn run check-types
|
|
INSTALL_SCRIPT:
|
|
required: false
|
|
type: string
|
|
default: yarn install --immutable --inline-builds
|
|
NODE_VERSION:
|
|
required: false
|
|
type: string
|
|
default: "24"
|
|
|
|
jobs:
|
|
linting_type_checking:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
NO_YARN_POSTINSTALL: 1
|
|
FONTAWESOME_PACKAGE_TOKEN: ${{ secrets.FONTAWESOME_PACKAGE_TOKEN }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Set up Node.js and Corepack
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: ${{ inputs.NODE_VERSION }}
|
|
|
|
- name: Enable Corepack
|
|
run: |
|
|
corepack enable
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
echo "--------------------------------------------------------------------"
|
|
echo "Install dependencies"
|
|
echo script: "${{ inputs.INSTALL_SCRIPT }}"
|
|
echo "--------------------------------------------------------------------"
|
|
${{ inputs.INSTALL_SCRIPT }}
|
|
|
|
- name: Setup repostitory
|
|
run: |
|
|
${{ inputs.SETUP_REPO_SCRIPT }}
|
|
|
|
- name: Lint source code (eslint)
|
|
run: |
|
|
${{ inputs.LINT_SCRIPT }}
|
|
|
|
- name: Static type checking (TypeScript)
|
|
run: |
|
|
${{ inputs.CHECK_TYPES_SCRIPT}}
|
|
|
|
- name: Run tests
|
|
if: ${{ inputs.TESTS_ENABLED == true }}
|
|
run: |
|
|
${{ inputs.TEST_SCRIPT }}
|
|
|
|
- name: Static code analysis with SonarQube
|
|
uses: https://github.com/SonarSource/sonarqube-scan-action@v6
|
|
if: ${{ inputs.SONARQUBE_ENABLED == true }}
|
|
env:
|
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
|
SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL }}
|
|
|
|
# TODO add dependency scanning / graph here
|