Skip to content

Commit b9be2ee

Browse files
author
Alvaro Muñoz
authored
Create hotspots.yml
1 parent 84e512d commit b9be2ee

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

.github/workflows/hotspots.yml

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
name: "Hotspots CodeQL Build/Publish"
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
version:
7+
description: "QLPack version"
8+
required: true
9+
10+
jobs:
11+
build:
12+
runs-on: ubuntu-latest
13+
permissions:
14+
contents: read
15+
packages: write
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
include:
20+
- language: cpp
21+
runner: ubuntu-latest
22+
- language: csharp
23+
runner: ubuntu-latest
24+
- language: go
25+
runner: ubuntu-latest
26+
- language: java
27+
runner: ubuntu-latest-xl
28+
- language: javascript
29+
runner: ubuntu-latest
30+
- language: python
31+
runner: ubuntu-latest
32+
- language: ruby
33+
runner: ubuntu-latest
34+
steps:
35+
- name: Checkout github/codeql
36+
uses: actions/checkout@v2
37+
with:
38+
path: codeql
39+
repository: github/codeql
40+
token: ${{ secrets.GHSECURITYLAB_TOKEN }}
41+
fetch-depth: 0
42+
43+
- name: Checkout github/codeql-community-packs
44+
uses: actions/checkout@v2
45+
with:
46+
path: codeql-community-packs
47+
repository: github/codeql-community-packs
48+
ref: ${{ github.ref }}
49+
50+
- name: Find codeql
51+
id: find-codeql
52+
uses: github/codeql-action/init@aa93aea877e5fb8841bcb1193f672abf6e9f2980
53+
with:
54+
languages: javascript # does not matter
55+
56+
- name: Initialize CodeQL
57+
id: init
58+
run: |
59+
# Take the most modern version
60+
VERSION="$(find "${{ runner.tool_cache }}/CodeQL/" -maxdepth 1 -mindepth 1 -type d -print \
61+
| sort \
62+
| tail -n 1 \
63+
| tr -d '\n')"
64+
65+
CODEQL="$VERSION/x64/codeql/"
66+
"${CODEQL}"/codeql version --format=json
67+
echo "${CODEQL}" >> $GITHUB_PATH
68+
69+
- name: Create CodeQL config
70+
run: |
71+
mkdir -p ~/.config/codeql
72+
echo '--search-path /home/runner/work/codeql-community-packs/codeql-community-packs/codeql/ql/extractor-pack' >> ~/.config/codeql/config
73+
74+
- name: Install QL extractor
75+
working-directory: codeql/ql
76+
run: |
77+
./scripts/create-extractor-pack.sh
78+
79+
- name: Patch the CodeQL distro
80+
working-directory: codeql-community-packs
81+
run: |
82+
ls -la "$GITHUB_WORKSPACE/codeql-community-packs/ql/hotspots/Hotspots.ql"
83+
pip install pandas
84+
python scripts/generate-hotspots-queries.py \
85+
--ql-extractor "$GITHUB_WORKSPACE/codeql/ql/extractor-pack" \
86+
--ql-path "$GITHUB_WORKSPACE/codeql"
87+
python scripts/patch-codeql.py \
88+
--hotspots "$GITHUB_WORKSPACE/codeql-community-packs/ql/hotspots/output" \
89+
--ql "$GITHUB_WORKSPACE/codeql" \
90+
--dest "$GITHUB_WORKSPACE/codeql-patched" \
91+
--qlpack-version ${{ inputs.version }}
92+
env:
93+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
94+
95+
- name: Check and publish hotspots lib packs
96+
working-directory: codeql-patched
97+
env:
98+
GITHUB_TOKEN: ${{ secrets.GHCR_TOKEN }}
99+
run: |
100+
PUBLISHED_VERSION=$(gh api /orgs/githubsecuritylab/packages/container/hotspots-${{ matrix.language }}-all/versions --jq '.[0].metadata.container.tags[0]')
101+
CURRENT_VERSION=$(grep version ${{ matrix.language }}/ql/lib/qlpack.yml | awk '{print $2}')
102+
103+
echo "Published lib version: $PUBLISHED_VERSION"
104+
echo "Local lib version: $CURRENT_VERSION"
105+
if [ "$PUBLISHED_VERSION" != "$CURRENT_VERSION" ]; then
106+
codeql pack install "${{ matrix.language }}/ql/lib"
107+
codeql pack publish "${{ matrix.language }}/ql/lib"
108+
fi
109+
110+
- name: Check and publish hotspots src packs
111+
working-directory: codeql-patched
112+
env:
113+
GITHUB_TOKEN: ${{ secrets.GHCR_TOKEN }}
114+
run: |
115+
PUBLISHED_VERSION=$(gh api /orgs/githubsecuritylab/packages/container/hotspots-${{ matrix.language }}-queries/versions --jq '.[0].metadata.container.tags[0]')
116+
CURRENT_VERSION=$(grep version ${{ matrix.language }}/ql/src/qlpack.yml | awk '{print $2}')
117+
118+
echo "Published queries version: $PUBLISHED_VERSION"
119+
echo "Local queries version: $CURRENT_VERSION"
120+
if [ "$PUBLISHED_VERSION" != "$CURRENT_VERSION" ]; then
121+
codeql pack install "${{ matrix.language }}/ql/src"
122+
codeql pack publish "${{ matrix.language }}/ql/src"
123+
fi

0 commit comments

Comments
 (0)