mirror of
https://github.com/github/codeql.git
synced 2026-04-25 08:45:14 +02:00
79 lines
3.1 KiB
YAML
79 lines
3.1 KiB
YAML
name: "Compile all queries using the latest stable CodeQL CLI"
|
|
|
|
on:
|
|
push:
|
|
branches: # makes sure the cache gets populated - running on the branches people tend to merge into.
|
|
- main
|
|
- "rc/*"
|
|
- "codeql-cli-*"
|
|
pull_request:
|
|
paths:
|
|
- '**.ql'
|
|
- '**.qll'
|
|
- '**/qlpack.yml'
|
|
- '**.dbscheme'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
detect-changes:
|
|
if: github.repository_owner == 'github'
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
languages: ${{ steps.detect.outputs.languages }}
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Detect changed languages
|
|
id: detect
|
|
run: |
|
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
|
# For PRs, detect which languages have changes
|
|
changed_files=$(gh pr view ${{ github.event.pull_request.number }} --json files --jq '.files.[].path')
|
|
languages=()
|
|
for lang in actions cpp csharp go java javascript python ql ruby rust swift; do
|
|
if echo "$changed_files" | grep -qE "^($lang/|shared/)" ; then
|
|
languages+=("$lang")
|
|
fi
|
|
done
|
|
echo "languages=$(jq -c -n '$ARGS.positional' --args "${languages[@]}")" >> $GITHUB_OUTPUT
|
|
else
|
|
# For pushes to main/rc branches, run all languages
|
|
echo 'languages=["actions","cpp","csharp","go","java","javascript","python","ql","ruby","rust","swift"]' >> $GITHUB_OUTPUT
|
|
fi
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
|
|
compile-queries:
|
|
needs: detect-changes
|
|
if: github.repository_owner == 'github' && needs.detect-changes.outputs.languages != '[]'
|
|
runs-on: ubuntu-latest-xl
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
language: ${{ fromJson(needs.detect-changes.outputs.languages) }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- name: Setup CodeQL
|
|
uses: ./.github/actions/fetch-codeql
|
|
with:
|
|
channel: 'release'
|
|
- name: Cache compilation cache
|
|
id: query-cache
|
|
uses: ./.github/actions/cache-query-compilation
|
|
with:
|
|
key: ${{ matrix.language }}-queries
|
|
- name: check formatting
|
|
run: find shared ${{ matrix.language }}/ql -type f \( -name "*.qll" -o -name "*.ql" \) -print0 | xargs -0 -n 3000 -P 10 codeql query format -q --check-only
|
|
- name: compile queries - check-only
|
|
# run with --check-only if running in a PR (github.sha != main)
|
|
if : ${{ github.event_name == 'pull_request' }}
|
|
shell: bash
|
|
run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --check-only --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
|
|
- name: compile queries - full
|
|
# do full compile if running on main - this populates the cache
|
|
if : ${{ github.event_name != 'pull_request' }}
|
|
shell: bash
|
|
run: codeql query compile -q -j0 ${{ matrix.language }}/ql/{src,examples} --keep-going --warnings=error --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}" --compilation-cache-size=500 --ram=56000
|