16
16
- cron : ' 00 12 * * 0' # every Sunday at 12:00 UTC
17
17
18
18
concurrency :
19
- group : ${{ github.workflow }}-${{ github.ref }}
19
+ group : " ${{ github.workflow }}-${{ github.ref }}"
20
20
cancel-in-progress : true
21
21
22
22
jobs :
@@ -57,10 +57,25 @@ jobs:
57
57
console.log(`Remapping language: ${key} to ${remap_languages[key.toLowerCase()]}`)
58
58
key = remap_languages[key.toLowerCase()]
59
59
}
60
- if (supported_languages.includes(key.toLowerCase()) &&
61
- !matrix['include'].includes({"language": key.toLowerCase()})) {
60
+ if (supported_languages.includes(key.toLowerCase())) {
62
61
console.log(`Found supported language: ${key}`)
63
- matrix['include'].push({"language": key.toLowerCase()})
62
+ let osList = ['ubuntu-latest'];
63
+ if (key.toLowerCase() === 'swift') {
64
+ osList = ['macos-latest'];
65
+ } else if (key.toLowerCase() === 'cpp') {
66
+ osList = ['macos-latest', 'ubuntu-latest', 'windows-latest'];
67
+ }
68
+ for (let os of osList) {
69
+ // set name for matrix
70
+ if (osList.length == 1) {
71
+ name = key.toLowerCase()
72
+ } else {
73
+ name = `${key.toLowerCase()}, ${os}`
74
+ }
75
+
76
+ // add to matrix
77
+ matrix['include'].push({"language": key.toLowerCase(), "os": os, "name": name})
78
+ }
64
79
}
65
80
}
66
81
@@ -84,10 +99,15 @@ jobs:
84
99
}
85
100
86
101
analyze :
87
- name : Analyze
102
+ name : Analyze (${{ matrix.name }})
88
103
if : ${{ needs.languages.outputs.continue == 'true' }}
104
+ defaults :
105
+ run :
106
+ shell : ${{ matrix.os == 'windows-latest' && 'msys2 {0}' || 'bash' }}
107
+ env :
108
+ GITHUB_CODEQL_BUILD : true
89
109
needs : [languages]
90
- runs-on : ${{ ( matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
110
+ runs-on : ${{ matrix.os || 'ubuntu-latest' }}
91
111
timeout-minutes : ${{ (matrix.language == 'swift' && 120) || 360 }}
92
112
permissions :
93
113
actions : read
@@ -100,6 +120,7 @@ jobs:
100
120
101
121
steps :
102
122
- name : Maximize build space
123
+ if : runner.os == 'Linux'
103
124
uses : easimon/maximize-build-space@v8
104
125
with :
105
126
root-reserve-mb : 20480
@@ -114,6 +135,12 @@ jobs:
114
135
with :
115
136
submodules : recursive
116
137
138
+ - name : Setup msys2
139
+ if : runner.os == 'Windows'
140
+ uses : msys2/setup-msys2@v2
141
+ with :
142
+ update : true
143
+
117
144
# Initializes the CodeQL tools for scanning.
118
145
- name : Initialize CodeQL
119
146
uses : github/codeql-action/init@v3
@@ -129,16 +156,20 @@ jobs:
129
156
130
157
# Pre autobuild
131
158
# create a file named .codeql-prebuild-${{ matrix.language }}.sh in the root of your repository
159
+ # create a file named .codeql-build-${{ matrix.language }}.sh in the root of your repository
132
160
- name : Prebuild
161
+ id : prebuild
133
162
run : |
134
- # check if .qodeql-prebuild-${{ matrix.language }}.sh exists
135
- if [ -f "./.codeql-prebuild-${{ matrix.language }}.sh" ]; then
136
- echo "Running .codeql-prebuild-${{ matrix.language }}.sh"
137
- ./.codeql-prebuild-${{ matrix.language }}.sh
163
+ # check if prebuild script exists
164
+ filename=".codeql-prebuild-${{ matrix.language }}-${{ runner.os }}.sh"
165
+ if [ -f "./${filename}" ]; then
166
+ echo "Running prebuild script: ${filename}"
167
+ ./${filename}
138
168
fi
139
169
140
170
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
141
171
- name : Autobuild
172
+ if : steps.prebuild.outputs.skip_autobuild != 'true'
142
173
uses : github/codeql-action/autobuild@v3
143
174
144
175
- name : Perform CodeQL Analysis
0 commit comments