1+ name : " Compile all queries using the latest stable CodeQL CLI"
2+
3+ on :
4+ push :
5+ branches : [main] # makes sure the cache gets populated
6+ pull_request :
7+ branches :
8+ - main
9+ - " rc/*"
10+
11+ jobs :
12+ compile-queries :
13+ runs-on : ubuntu-latest-xl
14+
15+ steps :
16+ - uses : actions/checkout@v3
17+ with :
18+ fetch-depth : 0
19+ # calculate the merge-base with main, in a way that works both on PRs and pushes to main.
20+ - name : Calculate merge-base
21+ id : merge-base
22+ env :
23+ BASE_BRANCH : ${{ github.base_ref }}
24+ run : |
25+ MERGE_BASE=$(git merge-base --fork-point origin/$BASE_BRANCH)
26+ echo "merge-base=$MERGE_BASE" >> $GITHUB_ENV
27+ - name : Cache CodeQL query compilation
28+ uses : actions/cache@v3
29+ with :
30+ path : ' */ql/src/.cache'
31+ # current GH HEAD first, merge-base second, generic third
32+ key : codeql-stable-compile-${{ github.sha }}
33+ restore-keys : |
34+ codeql-stable-compile-${{ env.merge-base }}
35+ codeql-stable-compile-
36+ - name : install codeql
37+ run : gh extension install github/gh-codeql
38+ env :
39+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
40+ - name : check formatting
41+ run : gh codeql query format */ql/{src,lib,test}/**/*.{qll,ql} --check-only
42+ env :
43+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
44+ - name : compile queries - check-only
45+ # run with --check-only if running in a PR (github.sha != main)
46+ if : ${{ github.sha != steps.merge-base.outputs.merge-base }}
47+ shell : bash
48+ run : gh codeql query compile -j0 */ql/src --keep-going --warnings=error --check-only
49+ env :
50+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
51+ - name : compile queries - full
52+ # do full compile if running on main - this populates the cache
53+ if : ${{ github.sha == steps.merge-base.outputs.merge-base }}
54+ shell : bash
55+ run : gh codeql query compile -j0 */ql/src --keep-going --warnings=error
56+ env :
57+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments