Skip to content

Commit 6c8b8d1

Browse files
add semgrep
1 parent 6e3009d commit 6c8b8d1

1 file changed

Lines changed: 14 additions & 71 deletions

File tree

.github/workflows/security-scan.yml

Lines changed: 14 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -10,60 +10,7 @@ permissions:
1010

1111
jobs:
1212
###############################################
13-
# 1. Detect repository languages dynamically
14-
###############################################
15-
detect-languages:
16-
runs-on: ubuntu-latest
17-
permissions:
18-
contents: read
19-
outputs:
20-
languages: ${{ steps.detect.outputs.languages }}
21-
has-languages: ${{ steps.detect.outputs.has-languages }}
22-
23-
steps:
24-
- name: Checkout code
25-
uses: actions/checkout@v4
26-
27-
- name: Detect languages from GitHub API
28-
id: detect
29-
uses: actions/github-script@v7
30-
with:
31-
script: |
32-
const repo = context.repo;
33-
const res = await github.rest.repos.listLanguages({
34-
owner: repo.owner,
35-
repo: repo.repo
36-
});
37-
38-
const langMap = res.data;
39-
const supported = {
40-
"JavaScript": "javascript",
41-
"TypeScript": "javascript",
42-
"Python": "python",
43-
"Go": "go",
44-
"Ruby": "ruby",
45-
"Java": "java",
46-
"C": "cpp",
47-
"C++": "cpp",
48-
"C#": "csharp"
49-
// Note: PHP is NOT supported by CodeQL
50-
};
51-
52-
const detected = Object.keys(langMap)
53-
.filter(lang => supported[lang])
54-
.map(lang => supported[lang]);
55-
56-
// Remove duplicates
57-
const uniqueLanguages = [...new Set(detected)];
58-
59-
const languages = JSON.stringify(uniqueLanguages);
60-
core.setOutput('languages', languages);
61-
core.setOutput('has-languages', uniqueLanguages.length > 0 ? 'true' : 'false');
62-
console.log('Detected CodeQL-supported languages:', languages);
63-
console.log('Has supported languages:', uniqueLanguages.length > 0);
64-
65-
###############################################
66-
# 2. Run GITLEAKS (strong secret scanner)
13+
# 1. Run GITLEAKS (strong secret scanner)
6714
###############################################
6815
gitleaks:
6916
runs-on: ubuntu-latest
@@ -83,27 +30,23 @@ jobs:
8330
run: gitleaks detect --source . --verbose --redact --baseline-path gitleaks-baseline.json
8431

8532
###############################################
86-
# 3. Run CodeQL using auto-detected languages
33+
# 2. Run Semgrep (SAST with PHP, JS, TS, Go, HTML support)
8734
###############################################
88-
codeql:
89-
needs: [detect-languages]
90-
if: needs.detect-languages.outputs.has-languages == 'true'
35+
semgrep:
9136
runs-on: ubuntu-latest
92-
93-
strategy:
94-
matrix:
95-
language: ${{ fromJson(needs.detect-languages.outputs.languages) }}
37+
container:
38+
image: semgrep/semgrep
9639

9740
steps:
9841
- uses: actions/checkout@v4
9942

100-
- name: Initialize CodeQL
101-
uses: github/codeql-action/init@v3
102-
with:
103-
languages: ${{ matrix.language }}
104-
105-
- name: Autobuild
106-
uses: github/codeql-action/autobuild@v3
43+
- name: Run Semgrep scan
44+
run: semgrep scan --config auto --sarif --output semgrep-results.sarif
45+
env:
46+
SEMGREP_APP_TOKEN: ${{ secrets.SEMGREP_APP_TOKEN }}
10747

108-
- name: Perform CodeQL Analysis
109-
uses: github/codeql-action/analyze@v3
48+
- name: Upload Semgrep results to GitHub Security
49+
uses: github/codeql-action/upload-sarif@v3
50+
if: always()
51+
with:
52+
sarif_file: semgrep-results.sarif

0 commit comments

Comments
 (0)