Skip to content

Commit

Permalink
Add dependency-graph-file as step output
Browse files Browse the repository at this point in the history
Fixes #804
  • Loading branch information
bigdaz committed Jul 24, 2023
1 parent 632e888 commit 9e58f8b
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 18 deletions.
16 changes: 7 additions & 9 deletions .github/workflows/integ-test-dependency-graph.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,21 +78,19 @@ jobs:
uses: ./
with:
dependency-graph: generate
- name: Run assemble
- id: gradle-assemble
run: ./gradlew assemble
working-directory: .github/workflow-samples/groovy-dsl
env:
GITHUB_JOB_CORRELATOR: job-correlator
- name: Run build
- id: gradle-build
run: ./gradlew build
working-directory: .github/workflow-samples/groovy-dsl
env:
GITHUB_JOB_CORRELATOR: job-correlator
working-directory: .github/workflow-samples/groovy-dsl
- name: Check generated dependency graphs
run: |
echo "gradle-assemble report file: ${{ steps.gradle-assemble.outputs.dependency-graph-file }}"
echo "gradle-build report file: ${{ steps.gradle-build.outputs.dependency-graph-file }}"
ls -l dependency-graph-reports
if ([ ! -e dependency-graph-reports/job-correlator.json ] || [ ! -e dependency-graph-reports/job-correlator-1.json ])
if ([ ! -e ${{ steps.gradle-assemble.outputs.dependency-graph-file }} ] || [ ! -e ${{ steps.gradle-build.outputs.dependency-graph-file }} ])
then
echo "Did not find expected dependency graph files"
exit 1
fi
fi
20 changes: 13 additions & 7 deletions src/resources/init-scripts/github-dependency-graph.init.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,20 @@ if (GradleVersion.current().baseVersion < GradleVersion.version("5.0")) {
// This is only required for top-level builds
def isTopLevelBuild = gradle.getParent() == null
if (isTopLevelBuild) {
def jobCorrelator = ensureUniqueJobCorrelator(System.env.GITHUB_JOB_CORRELATOR)
def reportFile = getUniqueReportFile(System.env.GITHUB_JOB_CORRELATOR)

if (jobCorrelator == null) {
println "::warning::No dependency snapshot generated for step: report file for '${jobCorrelator}' created in earlier step. Each build invocation requires a unique job correlator: specify GITHUB_JOB_CORRELATOR var for this step."
if (reportFile == null) {
println "::warning::No dependency snapshot generated for step. Could not determine unique job correlator - specify GITHUB_JOB_CORRELATOR var for this step."
return
}

println "Generating dependency graph for '${jobCorrelator}'"
def githubOutput = System.getenv("GITHUB_OUTPUT")
if (githubOutput) {
new File(githubOutput) << "dependency-graph-file=${reportFile.absolutePath}\n"
}


println "Generating dependency graph into '${reportFile}'"
}

apply from: 'github-dependency-graph-gradle-plugin-apply.groovy'
Expand All @@ -33,18 +39,18 @@ apply from: 'github-dependency-graph-gradle-plugin-apply.groovy'
* - If so, tries to find a unique value that does not yet have a corresponding report file.
* - When found, this value is set as a System property override.
*/
String ensureUniqueJobCorrelator(String jobCorrelator) {
File getUniqueReportFile(String jobCorrelator) {
def reportDir = System.env.DEPENDENCY_GRAPH_REPORT_DIR
def reportFile = new File(reportDir, jobCorrelator + ".json")
if (!reportFile.exists()) return jobCorrelator
if (!reportFile.exists()) return reportFile

// Try at most 100 suffixes
for (int i = 1; i < 100; i++) {
def candidateCorrelator = jobCorrelator + "-" + i
def candidateFile = new File(reportDir, candidateCorrelator + ".json")
if (!candidateFile.exists()) {
System.properties['GITHUB_JOB_CORRELATOR'] = candidateCorrelator
return candidateCorrelator
return candidateFile
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ class TestDependencyGraph extends BaseInitScriptTest {

then:
assert reportFile.exists()
assert gitHubOutputFile.text == "dependency-graph-file=${reportFile.absolutePath}\n"

where:
testGradleVersion << DEPENDENCY_GRAPH_VERSIONS
testGradleVersion << GRADLE_8_X
}

// Dependency-graph plugin doesn't support config-cache for 8.0 of Gradle
Expand Down Expand Up @@ -114,7 +115,8 @@ class TestDependencyGraph extends BaseInitScriptTest {
GITHUB_REF: "main",
GITHUB_SHA: "123456",
GITHUB_WORKSPACE: testProjectDir.absolutePath,
DEPENDENCY_GRAPH_REPORT_DIR: reportsDir.absolutePath
DEPENDENCY_GRAPH_REPORT_DIR: reportsDir.absolutePath,
GITHUB_OUTPUT: gitHubOutputFile.absolutePath
]
}

Expand All @@ -125,4 +127,8 @@ class TestDependencyGraph extends BaseInitScriptTest {
def getReportFile() {
return new File(reportsDir, "CORRELATOR.json")
}

def getGitHubOutputFile() {
return new File(testProjectDir, "GITHUB_OUTPUT")
}
}

0 comments on commit 9e58f8b

Please sign in to comment.