name: Static Analysis on: pull_request: {} push: branches: [develop, master] merge_group: types: [checks_requested] repository_dispatch: types: [element-web-notify] concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} cancel-in-progress: true env: # This must be set for fetchdep.sh to get the right branch PR_NUMBER: ${{ github.event.pull_request.number }} permissions: {} # No permissions required jobs: ts_lint: name: "Typescript Syntax Check" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 with: cache: "yarn" node-version: "lts/*" - name: Install Dependencies run: "./scripts/layered.sh" - name: Typecheck run: "yarn run lint:types" - name: Install Shared Component Dependencies run: "yarn --cwd packages/shared-components install" - name: Typecheck Shared Components run: "yarn --cwd packages/shared-components run lint:types" i18n_lint: name: "i18n Check" uses: matrix-org/matrix-web-i18n/.github/workflows/i18n_check.yml@main permissions: pull-requests: read with: hardcoded-words: "Element" allowed-hardcoded-keys: | console_dev_note labs|element_call_video_rooms labs|feature_disable_call_per_sender_encryption voip|element_call error|invalid_json error|misconfigured welcome_to_element devtools|settings|elementCallUrl labs|sliding_sync_description rethemendex_lint: name: "Rethemendex Check" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - run: ./res/css/rethemendex.sh - run: git diff --exit-code js_lint: name: "ESLint" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 with: cache: "yarn" node-version: "lts/*" # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install --frozen-lockfile" - name: Run Linter run: "yarn run lint:js" - name: Install Shared Component Deps run: "yarn --cwd packages/shared-components install --frozen-lockfile" - name: Run Linter run: "yarn --cwd packages/shared-components run lint:js" style_lint: name: "Style Lint" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 with: cache: "yarn" node-version: "lts/*" # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install" - name: Run Linter run: "yarn run lint:style" workflow_lint: name: "Workflow Lint" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 with: cache: "yarn" node-version: "lts/*" # Does not need branch matching as only analyses this layer - name: Install Deps run: "yarn install --frozen-lockfile" - name: Run Linter run: "yarn lint:workflows" analyse_dead_code: name: "Analyse Dead Code" runs-on: ubuntu-24.04 steps: - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6 - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6 with: cache: "yarn" node-version: "lts/*" - name: Install Deps run: "yarn install --frozen-lockfile" - name: Run linter run: "yarn run lint:knip"