aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/codeql.yml
blob: 0dfd5a83150993acf1a0fd273f278c0d223a0a83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
name: "CodeQL"

on:
  push:
    branches: [ "master" ]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [ "master" ]
  schedule:
    - cron: '18 15 * * 0'

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
  analyze:
    name: Analyze
    runs-on: 'ubuntu-latest'
    timeout-minutes: 360
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: [ 'cpp', 'java', 'javascript', 'python' ]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ]

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    # Initializes the CodeQL tools for scanning.
    - name: Initialize CodeQL
      uses: github/codeql-action/init@v2
      with:
        languages: ${{ matrix.language }}
        # CodeQL is currently crashing on files with large lists:
        #   https://github.com/github/codeql/issues/13656
        config: |
          paths-ignore:
            - research
            - js/test_data.*

    - if: matrix.language == 'cpp'
      name: Build CPP
      uses: github/codeql-action/autobuild@v2

    - if: matrix.language == 'cpp' || matrix.language == 'java'
      name: Build Java
      run: |
        cd ${GITHUB_WORKSPACE}/java
        bazelisk build --spawn_strategy=local --nouse_action_cache -c opt ...:all

    - if: matrix.language == 'javascript'
      name: Build JS
      uses: github/codeql-action/autobuild@v2

    - if: matrix.language == 'cpp' || matrix.language == 'python'
      name: Build Python
      run: |
        python setup.py build_ext

    - name: Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2
      with:
        category: "/language:${{matrix.language}}"
        ref: "${{ github.ref != 'master' && github.ref || '/refs/heads/master' }}"
        sha: "${{ github.sha }}"