@@ -10,60 +10,7 @@ permissions:
1010
1111jobs :
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