Skip to content

Commit 987345c

Browse files
FEAT [DTECSCSAO-4805] GHAS integration: Code scanning & Dependency review (#21)
* enabling ghas * adding java version details * limiting java to 8 as per codebase * testing the filter-sarif * Fixing the PR comments * enabling push for the graph submission * disable the graph submission as it wont support * testing the gradle upgrade * testing the gradle * test the action of gradle * updating the java version * test the action of java8 * test dd * Update build.gradle
1 parent 991a349 commit 987345c

File tree

4 files changed

+101
-2
lines changed

4 files changed

+101
-2
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: CodeQL
2+
3+
on:
4+
pull_request:
5+
branches: [ main ]
6+
push:
7+
branches: [ main ]
8+
workflow_dispatch:
9+
10+
jobs:
11+
codeql-java:
12+
uses: chargehound/security-workflows-public/.github/workflows/codeql-java.yml@test-gradle-submission
13+
with:
14+
build-mode: 'manual'
15+
build-command: './gradlew --parallel --no-daemon --no-build-cache clean assemble -x test'
16+
java-version: '8'
17+
secrets:
18+
DATADOG_API_KEY: ${{ secrets.DATADOG_PAYPAL_QA_TOKEN }}
19+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Dependency Review
2+
3+
on:
4+
push:
5+
branches: ['main']
6+
7+
pull_request:
8+
branches: [ main ]
9+
workflow_dispatch:
10+
11+
jobs:
12+
dependency-review:
13+
uses: chargehound/security-workflows-public/.github/workflows/dependency-review-gradle.yml@test-gradle-submission
14+
with:
15+
java-version: 8
16+
secrets:
17+
DATADOG_API_KEY: ${{ secrets.DATADOG_PAYPAL_QA_TOKEN }}

.github/workflows/test-java.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-latest
1212
strategy:
1313
matrix:
14-
java: [ '8', '9', '10', '11']
14+
java: [ '8' ]
1515
name: Test Java ${{ matrix.java }}
1616
steps:
1717
- uses: actions/checkout@v2

build.gradle

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,67 @@ uploadArchives {
134134
}
135135
}
136136
}
137-
}
137+
}
138+
139+
// TODO: Remove task after upgrading Gradle >= 5.2
140+
import org.gradle.api.artifacts.ResolvedDependency
141+
import org.gradle.api.artifacts.Configuration
142+
import java.io.BufferedWriter
143+
import java.io.FileWriter
144+
145+
tasks.register("generateDependencyReport") {
146+
doLast {
147+
def outputFile = file("${buildDir}/dependency-report.txt")
148+
File parentDir = outputFile.parentFile
149+
if (!parentDir.exists() && !parentDir.mkdirs()) {
150+
throw new IOException("Failed to create directory ${parentDir}")
151+
}
152+
153+
// Create a writer to write the dependency report to the file
154+
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))
155+
try {
156+
writer.write("Manifest: ${project.name}\n")
157+
writer.write("# Generated on ${new Date()}\n\n")
158+
159+
// Iterate through all project configurations
160+
project.configurations.each { Configuration config ->
161+
try {
162+
if (config.isCanBeResolved()) {
163+
writer.write("${config.name}:\n")
164+
165+
def dependencies = config.resolvedConfiguration.firstLevelModuleDependencies
166+
if (dependencies.isEmpty()) {
167+
writer.write(" (No dependencies found)\n")
168+
} else {
169+
dependencies.each { ResolvedDependency dep ->
170+
printDependency(dep, writer, 1)
171+
}
172+
}
173+
} else {
174+
writer.write("${config.name}:\n")
175+
writer.write(" (Cannot be resolved)\n")
176+
}
177+
} catch (Exception e) {
178+
writer.write("${config.name}:\n")
179+
writer.write(" (Resolution failed: ${e.message})\n")
180+
}
181+
182+
writer.write("\n")
183+
}
184+
} finally {
185+
writer.close()
186+
}
187+
188+
println("Dependency report generated: ${outputFile.absolutePath}")
189+
}
190+
}
191+
192+
// Recursive function to print dependencies with proper indentation
193+
void printDependency(ResolvedDependency dependency, BufferedWriter writer, int level) {
194+
def indentation = " " * level
195+
writer.write("${indentation}- ${dependency.moduleGroup}:${dependency.moduleName}:${dependency.moduleVersion}\n")
196+
197+
dependency.children.each { ResolvedDependency child ->
198+
printDependency(child, writer, level + 1)
199+
}
200+
}

0 commit comments

Comments
 (0)