diff --git a/.github/workflows/integ-test-dependency-graph.yml b/.github/workflows/integ-test-dependency-graph.yml index 28cc0fa..3363b24 100644 --- a/.github/workflows/integ-test-dependency-graph.yml +++ b/.github/workflows/integ-test-dependency-graph.yml @@ -21,7 +21,7 @@ env: GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository jobs: - groovy-generate: + groovy-upload: strategy: fail-fast: false matrix: @@ -42,7 +42,7 @@ jobs: working-directory: .github/workflow-samples/groovy-dsl groovy-submit: - needs: [groovy-generate] + needs: [groovy-upload] runs-on: "ubuntu-latest" steps: - name: Checkout sources @@ -54,6 +54,8 @@ jobs: uses: ./setup-gradle with: dependency-graph: download-and-submit + env: + DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: groovy-upload kotlin-generate-and-submit: strategy: diff --git a/.github/workflows/integ-test-dependency-submission.yml b/.github/workflows/integ-test-dependency-submission.yml index 88cc58d..3b8c160 100644 --- a/.github/workflows/integ-test-dependency-submission.yml +++ b/.github/workflows/integ-test-dependency-submission.yml @@ -80,6 +80,8 @@ jobs: uses: ./dependency-submission with: dependency-graph: download-and-submit + env: + DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: groovy-generate-and-upload-${{ matrix.os }} kotlin-generate-and-submit: strategy: @@ -313,6 +315,8 @@ jobs: build-root-directory: .github/workflow-samples/groovy-dsl env: DEPENDENCY_GRAPH_REPORT_DIR: '${{ github.workspace }}/custom/report-dir' + DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: custom-report-dir-upload + - name: Check downloaded dependency graph shell: bash run: | diff --git a/sources/src/configuration.ts b/sources/src/configuration.ts index 9282308..df3161b 100644 --- a/sources/src/configuration.ts +++ b/sources/src/configuration.ts @@ -49,6 +49,10 @@ export class DependencyGraphConfig { return path.resolve(getWorkspaceDirectory(), 'dependency-graph-reports') } + getDownloadArtifactName(): string | undefined { + return process.env['DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME'] + } + static constructJobCorrelator(workflow: string, jobId: string, matrixJson: string): string { const matrixString = this.describeMatrix(matrixJson) const label = matrixString ? `${workflow}-${jobId}-${matrixString}` : `${workflow}-${jobId}` diff --git a/sources/src/dependency-graph.ts b/sources/src/dependency-graph.ts index a06d2cb..5650158 100644 --- a/sources/src/dependency-graph.ts +++ b/sources/src/dependency-graph.ts @@ -77,7 +77,7 @@ async function downloadAndSubmitDependencyGraphs(config: DependencyGraphConfig): } try { - await submitDependencyGraphs(await downloadDependencyGraphs()) + await submitDependencyGraphs(await downloadDependencyGraphs(config)) } catch (e) { warnOrFail(config, DependencyGraphOption.DownloadAndSubmit, e) } @@ -111,7 +111,7 @@ async function findAndUploadDependencyGraphs(config: DependencyGraphConfig): Pro await uploadDependencyGraphs(await findDependencyGraphFiles(), config) } -async function downloadDependencyGraphs(): Promise { +async function downloadDependencyGraphs(config: DependencyGraphConfig): Promise { const findBy = github.context.payload.workflow_run ? { token: getGithubToken(), @@ -123,13 +123,19 @@ async function downloadDependencyGraphs(): Promise { const artifactClient = new DefaultArtifactClient() - const dependencyGraphArtifacts = ( + let dependencyGraphArtifacts = ( await artifactClient.listArtifacts({ latest: true, findBy }) ).artifacts.filter(artifact => artifact.name.startsWith(DEPENDENCY_GRAPH_PREFIX)) + const artifactName = config.getDownloadArtifactName() + if (artifactName) { + core.info(`Filtering for artifacts ending with ${artifactName}`) + dependencyGraphArtifacts = dependencyGraphArtifacts.filter(artifact => artifact.name.includes(artifactName)) + } + for (const artifact of dependencyGraphArtifacts) { const downloadedArtifact = await artifactClient.downloadArtifact(artifact.id, { findBy