mirror of
https://github.com/gradle/actions.git
synced 2025-10-18 07:28:36 +08:00
Complete migration of 'dependency-submission' to Typescript (#124)
Finishes the migration of `dependency-submission` to a Typescript action (fixes #116) - Use consistent input params to ensure behaviour is consistent with 'setup-gradle' - Submit generated graph immediately instead of waiting until end of job (fixes #123) - Can now add a `dependency-submission` step after a `setup-gradle` step in the same job (fixes #36)
This commit is contained in:
commit
dbdb67aa6c
10
.github/workflows/ci-dependency-review.yml
vendored
10
.github/workflows/ci-dependency-review.yml
vendored
@ -8,7 +8,7 @@ name: CI-dependency-review
|
|||||||
on: [pull_request]
|
on: [pull_request]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
dependency-review:
|
dependency-review:
|
||||||
@ -16,5 +16,13 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: 'Checkout Repository'
|
- name: 'Checkout Repository'
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
- name: Dependencies for groovy-dsl
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
- name: Dependencies for kotlin-dsl
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/kotlin-dsl
|
||||||
- name: 'Dependency Review'
|
- name: 'Dependency Review'
|
||||||
uses: actions/dependency-review-action@v4
|
uses: actions/dependency-review-action@v4
|
||||||
|
10
.github/workflows/ci-full-check.yml
vendored
10
.github/workflows/ci-full-check.yml
vendored
@ -38,11 +38,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
cache-key-prefix: ${{github.run_number}}-
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
dependency-graph-failures:
|
|
||||||
uses: ./.github/workflows/integ-test-dependency-graph-failures.yml
|
|
||||||
with:
|
|
||||||
cache-key-prefix: ${{github.run_number}}-
|
|
||||||
|
|
||||||
dependency-submission:
|
dependency-submission:
|
||||||
uses: ./.github/workflows/integ-test-dependency-submission.yml
|
uses: ./.github/workflows/integ-test-dependency-submission.yml
|
||||||
permissions:
|
permissions:
|
||||||
@ -50,6 +45,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
cache-key-prefix: ${{github.run_number}}-
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
|
dependency-submission-failures:
|
||||||
|
uses: ./.github/workflows/integ-test-dependency-submission-failures.yml
|
||||||
|
with:
|
||||||
|
cache-key-prefix: ${{github.run_number}}-
|
||||||
|
|
||||||
execution-with-caching:
|
execution-with-caching:
|
||||||
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
uses: ./.github/workflows/integ-test-execution-with-caching.yml
|
||||||
with:
|
with:
|
||||||
|
10
.github/workflows/ci-quick-check.yml
vendored
10
.github/workflows/ci-quick-check.yml
vendored
@ -62,16 +62,18 @@ jobs:
|
|||||||
runner-os: '["ubuntu-latest"]'
|
runner-os: '["ubuntu-latest"]'
|
||||||
download-dist: true
|
download-dist: true
|
||||||
|
|
||||||
dependency-graph-failures:
|
dependency-submission:
|
||||||
needs: build-distribution
|
needs: build-distribution
|
||||||
uses: ./.github/workflows/integ-test-dependency-graph-failures.yml
|
uses: ./.github/workflows/integ-test-dependency-submission.yml
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
with:
|
with:
|
||||||
runner-os: '["ubuntu-latest"]'
|
runner-os: '["ubuntu-latest"]'
|
||||||
download-dist: true
|
download-dist: true
|
||||||
|
|
||||||
dependency-submission:
|
dependency-submission-failures:
|
||||||
needs: build-distribution
|
needs: build-distribution
|
||||||
uses: ./.github/workflows/integ-test-dependency-submission.yml
|
uses: ./.github/workflows/integ-test-dependency-submission-failures.yml
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
with:
|
with:
|
||||||
|
5
.github/workflows/demo-job-summary.yml
vendored
5
.github/workflows/demo-job-summary.yml
vendored
@ -40,6 +40,11 @@ jobs:
|
|||||||
working-directory: .github/workflow-samples/groovy-dsl
|
working-directory: .github/workflow-samples/groovy-dsl
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
run: ./gradlew not-a-real-task
|
run: ./gradlew not-a-real-task
|
||||||
|
- name: Dependency submission
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
dependency-graph: generate-and-upload
|
||||||
|
|
||||||
successful-builds-with-no-summary:
|
successful-builds-with-no-summary:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
@ -1,133 +0,0 @@
|
|||||||
name: Test dependency graph
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
cache-key-prefix:
|
|
||||||
type: string
|
|
||||||
runner-os:
|
|
||||||
type: string
|
|
||||||
default: '["ubuntu-latest"]'
|
|
||||||
download-dist:
|
|
||||||
type: boolean
|
|
||||||
default: false
|
|
||||||
|
|
||||||
env:
|
|
||||||
DOWNLOAD_DIST: ${{ inputs.download-dist }}
|
|
||||||
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
failing-build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Initialize integ-test
|
|
||||||
uses: ./.github/actions/init-integ-test
|
|
||||||
|
|
||||||
- name: Setup Gradle for dependency-graph generate
|
|
||||||
uses: ./setup-gradle
|
|
||||||
with:
|
|
||||||
dependency-graph: generate
|
|
||||||
dependency-graph-continue-on-failure: true
|
|
||||||
- name: Run build that will fail
|
|
||||||
id: gradle-build
|
|
||||||
continue-on-error: true
|
|
||||||
run: ./gradlew build fail
|
|
||||||
working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
- name: Check no dependency graph is generated
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if [ ! -z "$(ls -A dependency-graph-reports)" ]; then
|
|
||||||
echo "Expected no dependency graph files to be generated"
|
|
||||||
ls -l dependency-graph-reports
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
unsupported-gradle-version-warning:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Initialize integ-test
|
|
||||||
uses: ./.github/actions/init-integ-test
|
|
||||||
|
|
||||||
- name: Setup Gradle for dependency-graph generate
|
|
||||||
uses: ./setup-gradle
|
|
||||||
with:
|
|
||||||
gradle-version: 7.0.1
|
|
||||||
dependency-graph: generate
|
|
||||||
dependency-graph-continue-on-failure: true
|
|
||||||
- name: Run with unsupported Gradle version
|
|
||||||
working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
run: |
|
|
||||||
if gradle help | grep -q 'warning::Dependency Graph is not supported for Gradle 7.0.1. No dependency snapshot will be generated.';
|
|
||||||
then
|
|
||||||
echo "Got the expected warning"
|
|
||||||
else
|
|
||||||
echo "Did not get the expected warning"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
unsupported-gradle-version-failure:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Initialize integ-test
|
|
||||||
uses: ./.github/actions/init-integ-test
|
|
||||||
|
|
||||||
- name: Setup Gradle for dependency-graph generate
|
|
||||||
uses: ./setup-gradle
|
|
||||||
with:
|
|
||||||
gradle-version: 7.0.1
|
|
||||||
dependency-graph: generate
|
|
||||||
dependency-graph-continue-on-failure: false
|
|
||||||
- name: Run with unsupported Gradle version
|
|
||||||
working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
run: |
|
|
||||||
if gradle help; then
|
|
||||||
echo "Expected build to fail with Gradle 7.0.1"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
insufficient-permissions-warning:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Initialize integ-test
|
|
||||||
uses: ./.github/actions/init-integ-test
|
|
||||||
|
|
||||||
- name: Setup Gradle for dependency-graph generate
|
|
||||||
uses: ./setup-gradle
|
|
||||||
with:
|
|
||||||
dependency-graph: generate-and-submit
|
|
||||||
dependency-graph-continue-on-failure: true
|
|
||||||
- name: Run with insufficient permissions
|
|
||||||
working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
run: ./gradlew help
|
|
||||||
# This test is primarily for demonstration: it's unclear how to check for warnings emitted in the post-action
|
|
||||||
|
|
||||||
SHOULD_FAIL-insufficient-permissions-failure:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
continue-on-error: true
|
|
||||||
steps:
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Initialize integ-test
|
|
||||||
uses: ./.github/actions/init-integ-test
|
|
||||||
|
|
||||||
- name: Setup Gradle for dependency-graph generate
|
|
||||||
uses: ./setup-gradle
|
|
||||||
with:
|
|
||||||
dependency-graph: generate-and-submit
|
|
||||||
dependency-graph-continue-on-failure: false
|
|
||||||
- name: Run with insufficient permissions
|
|
||||||
working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
run: ./gradlew help
|
|
||||||
# This test is primarily for demonstration: it's unclear how to check for a failure in the post-action
|
|
98
.github/workflows/integ-test-dependency-submission-failures.yml
vendored
Normal file
98
.github/workflows/integ-test-dependency-submission-failures.yml
vendored
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
name: Test dependency graph
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
cache-key-prefix:
|
||||||
|
type: string
|
||||||
|
runner-os:
|
||||||
|
type: string
|
||||||
|
default: '["ubuntu-latest"]'
|
||||||
|
download-dist:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
env:
|
||||||
|
DOWNLOAD_DIST: ${{ inputs.download-dist }}
|
||||||
|
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
failing-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- name: Submit with failing build
|
||||||
|
id: gradle-build
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
additional-arguments: fail
|
||||||
|
continue-on-error: true
|
||||||
|
- name: Check step failed
|
||||||
|
if: steps.gradle-build.outcome != 'failure'
|
||||||
|
run: |
|
||||||
|
echo "Expected dependency submission step to fail"
|
||||||
|
exit 1
|
||||||
|
- name: Check no dependency graph is generated
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ ! -z "$(ls -A dependency-graph-reports)" ]; then
|
||||||
|
echo "Expected no dependency graph files to be generated"
|
||||||
|
ls -l dependency-graph-reports
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
unsupported-gradle-version:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- name: Submit with unsupported Gradle version
|
||||||
|
id: gradle-build
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
gradle-version: 7.0.1
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
continue-on-error: true
|
||||||
|
- name: Check step failed
|
||||||
|
if: steps.gradle-build.outcome != 'failure'
|
||||||
|
run: |
|
||||||
|
echo "Expected dependency submission step to fail"
|
||||||
|
exit 1
|
||||||
|
- name: Check no dependency graph is generated
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
if [ ! -z "$(ls -A dependency-graph-reports)" ]; then
|
||||||
|
echo "Expected no dependency graph files to be generated"
|
||||||
|
ls -l dependency-graph-reports
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
insufficient-permissions:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- name: Submit with insufficient permissions
|
||||||
|
id: gradle-build
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
continue-on-error: true
|
||||||
|
- name: Check step failed
|
||||||
|
if: steps.gradle-build.outcome != 'failure'
|
||||||
|
run: |
|
||||||
|
echo "Expected dependency submission step to fail"
|
||||||
|
exit 1
|
@ -36,10 +36,32 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
dependency-graph: generate-and-upload
|
dependency-graph: generate-and-upload
|
||||||
build-root-directory: .github/workflow-samples/groovy-dsl
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
cache-read-only: false
|
||||||
|
|
||||||
|
groovy-restore-cache:
|
||||||
|
needs: [groovy-generate-and-upload]
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- name: Restore dependency graph
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
additional-arguments: --offline
|
||||||
|
|
||||||
groovy-download-and-submit:
|
groovy-download-and-submit:
|
||||||
needs: [groovy-generate-and-upload]
|
needs: [groovy-generate-and-upload]
|
||||||
runs-on: "ubuntu-latest"
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout sources
|
- name: Checkout sources
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -67,51 +89,72 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
build-root-directory: .github/workflow-samples/kotlin-dsl
|
build-root-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
|
||||||
# TODO - Test this scenario (and make it work)
|
multiple-builds:
|
||||||
# multiple-builds:
|
strategy:
|
||||||
# strategy:
|
matrix:
|
||||||
# matrix:
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
# os: ${{fromJSON(inputs.runner-os)}}
|
runs-on: ${{ matrix.os }}
|
||||||
# runs-on: ${{ matrix.os }}
|
steps:
|
||||||
# steps:
|
- name: Checkout sources
|
||||||
# - name: Checkout sources
|
uses: actions/checkout@v4
|
||||||
# uses: actions/checkout@v4
|
- name: Initialize integ-test
|
||||||
# - name: Initialize integ-test
|
uses: ./.github/actions/init-integ-test
|
||||||
# uses: ./.github/actions/init-integ-test
|
|
||||||
|
- id: kotlin-dsl
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
- id: groovy-dsl
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
- id: groovy-dsl-again
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
additional-arguments: --no-build-cache
|
||||||
|
- name: Check generated dependency graphs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "kotlin-dsl report file: ${{ steps.kotlin-dsl.outputs.dependency-graph-file }}"
|
||||||
|
echo "groovy-dsl report file: ${{ steps.groovy-dsl.outputs.dependency-graph-file }}"
|
||||||
|
echo "groovy-dsl-again report file: ${{ steps.groovy-dsl-again.outputs.dependency-graph-file }}"
|
||||||
|
ls -l dependency-graph-reports
|
||||||
|
if [ ! -e "${{ steps.kotlin-dsl.outputs.dependency-graph-file }}" ]; then
|
||||||
|
echo "Did not find kotlin-dsl dependency graph file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -e "${{ steps.groovy-dsl.outputs.dependency-graph-file }}" ]; then
|
||||||
|
echo "Did not find groovy-dsl dependency graph file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -e "${{ steps.groovy-dsl-again.outputs.dependency-graph-file }}" ]; then
|
||||||
|
echo "Did not find groovy-dsl-again dependency graph file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
multiple-builds-upload:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: ${{fromJSON(inputs.runner-os)}}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout sources
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Initialize integ-test
|
||||||
|
uses: ./.github/actions/init-integ-test
|
||||||
|
|
||||||
|
- id: kotlin-dsl
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-upload
|
||||||
|
build-root-directory: .github/workflow-samples/kotlin-dsl
|
||||||
|
- id: groovy-dsl
|
||||||
|
uses: ./dependency-submission
|
||||||
|
with:
|
||||||
|
dependency-graph: generate-and-upload
|
||||||
|
build-root-directory: .github/workflow-samples/groovy-dsl
|
||||||
|
|
||||||
# - name: Setup Gradle for dependency-graph generate
|
|
||||||
# uses: ./setup-gradle
|
|
||||||
# with:
|
|
||||||
# dependency-graph: generate-and-submit
|
|
||||||
# - id: gradle-assemble
|
|
||||||
# run: ./gradlew assemble
|
|
||||||
# working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
# - id: gradle-build
|
|
||||||
# run: ./gradlew build
|
|
||||||
# working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
# - id: gradle-build-again
|
|
||||||
# run: ./gradlew build
|
|
||||||
# working-directory: .github/workflow-samples/groovy-dsl
|
|
||||||
# - name: Check generated dependency graphs
|
|
||||||
# shell: bash
|
|
||||||
# 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 }}"
|
|
||||||
# echo "gradle-build-again report file: ${{ steps.gradle-build-again.outputs.dependency-graph-file }}"
|
|
||||||
# ls -l dependency-graph-reports
|
|
||||||
# if [ ! -e "${{ steps.gradle-assemble.outputs.dependency-graph-file }}" ]; then
|
|
||||||
# echo "Did not find gradle-assemble dependency graph file"
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
# if [ ! -e "${{ steps.gradle-build.outputs.dependency-graph-file }}" ]; then
|
|
||||||
# echo "Did not find gradle-build dependency graph files"
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
# if [ ! -e "${{ steps.gradle-build-again.outputs.dependency-graph-file }}" ]; then
|
|
||||||
# echo "Did not find gradle-build-again dependency graph files"
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
|
|
||||||
config-cache:
|
config-cache:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@ -132,7 +175,7 @@ jobs:
|
|||||||
echo "Did not find config-cache-store dependency graph files"
|
echo "Did not find config-cache-store dependency graph files"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
rm ${{ steps.config-cache-store.outputs.dependency-graph-file }}
|
rm ${{ steps.config-cache-store.outputs.dependency-graph-file }}*
|
||||||
- id: config-cache-reuse
|
- id: config-cache-reuse
|
||||||
uses: ./dependency-submission
|
uses: ./dependency-submission
|
||||||
with:
|
with:
|
||||||
|
10
build
Executable file
10
build
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd sources
|
||||||
|
npm install
|
||||||
|
|
||||||
|
if [ "$1" == "all" ]; then
|
||||||
|
npm run all
|
||||||
|
else
|
||||||
|
npm run build
|
||||||
|
fi
|
@ -7,15 +7,77 @@ inputs:
|
|||||||
Gradle version to use. If specified, this Gradle version will be downloaded, added to the PATH and used for invoking Gradle.
|
Gradle version to use. If specified, this Gradle version will be downloaded, added to the PATH and used for invoking Gradle.
|
||||||
If not provided, it is assumed that the project uses the Gradle Wrapper.
|
If not provided, it is assumed that the project uses the Gradle Wrapper.
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
build-root-directory:
|
build-root-directory:
|
||||||
description: Path to the root directory of the build. Default is the root of the GitHub workspace.
|
description: Path to the root directory of the build. Default is the root of the GitHub workspace.
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
|
additional-arguments:
|
||||||
|
description: |
|
||||||
|
Additional arguments to pass to Gradle when generating the dependency graph.
|
||||||
|
For example, `--no-configuration-cache --stacktrace`.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
# Cache configuration
|
||||||
|
cache-disabled:
|
||||||
|
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
cache-read-only:
|
||||||
|
description: |
|
||||||
|
When 'true', existing entries will be read from the cache but no entries will be written.
|
||||||
|
By default this value is 'false' for workflows on the GitHub default branch and 'true' for workflows on other branches.
|
||||||
|
required: false
|
||||||
|
default: ${{ github.event.repository != null && github.ref_name != github.event.repository.default_branch }}
|
||||||
|
|
||||||
|
cache-write-only:
|
||||||
|
description: |
|
||||||
|
When 'true', entries will not be restored from the cache but will be saved at the end of the Job.
|
||||||
|
Setting this to 'true' implies cache-read-only will be 'false'.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
cache-overwrite-existing:
|
||||||
|
description: When 'true', a pre-existing Gradle User Home will not prevent the cache from being restored.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
cache-encryption-key:
|
cache-encryption-key:
|
||||||
description: |
|
description: |
|
||||||
A base64 encoded AES key used to encrypt the configuration-cache data. The key is exported as 'GRADLE_ENCRYPTION_KEY' for later steps.
|
A base64 encoded AES key used to encrypt the configuration-cache data. The key is exported as 'GRADLE_ENCRYPTION_KEY' for later steps.
|
||||||
A suitable key can be generated with `openssl rand -base64 16`.
|
A suitable key can be generated with `openssl rand -base64 16`.
|
||||||
Configuration-cache data will not be saved/restored without an encryption key being provided.
|
Configuration-cache data will not be saved/restored without an encryption key being provided.
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
|
gradle-home-cache-includes:
|
||||||
|
description: Paths within Gradle User Home to cache.
|
||||||
|
required: false
|
||||||
|
default: |
|
||||||
|
caches
|
||||||
|
notifications
|
||||||
|
|
||||||
|
gradle-home-cache-excludes:
|
||||||
|
description: Paths within Gradle User Home to exclude from cache.
|
||||||
|
required: false
|
||||||
|
|
||||||
|
gradle-home-cache-cleanup:
|
||||||
|
description: When 'true', the action will attempt to remove any stale/unused entries from the Gradle User Home prior to saving to the GitHub Actions cache.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
# Job summary configuration
|
||||||
|
add-job-summary:
|
||||||
|
description: Specifies when a Job Summary should be inluded in the action results. Valid values are 'never', 'always' (default), and 'on-failure'.
|
||||||
|
required: false
|
||||||
|
default: 'always'
|
||||||
|
|
||||||
|
add-job-summary-as-pr-comment:
|
||||||
|
description: Specifies when each Job Summary should be added as a PR comment. Valid values are 'never' (default), 'always', and 'on-failure'. No action will be taken if the workflow was not triggered from a pull request.
|
||||||
|
required: false
|
||||||
|
default: 'never'
|
||||||
|
|
||||||
|
# Dependency Graph configuration
|
||||||
dependency-graph:
|
dependency-graph:
|
||||||
description: |
|
description: |
|
||||||
Specifies how the dependency-graph should be handled by this action. By default a dependency-graph will be generated and submitted.
|
Specifies how the dependency-graph should be handled by this action. By default a dependency-graph will be generated and submitted.
|
||||||
@ -23,35 +85,35 @@ inputs:
|
|||||||
'generate-and-submit' (default): Generates a dependency graph for the project and submits it in the same Job.
|
'generate-and-submit' (default): Generates a dependency graph for the project and submits it in the same Job.
|
||||||
'generate-and-upload': Generates a dependency graph for the project and saves it as a workflow artifact.
|
'generate-and-upload': Generates a dependency graph for the project and saves it as a workflow artifact.
|
||||||
'download-and-submit': Retrieves a previously saved dependency-graph and submits it to the repository.
|
'download-and-submit': Retrieves a previously saved dependency-graph and submits it to the repository.
|
||||||
|
|
||||||
The `generate-and-upload` and `download-and-submit` options are designed to be used in an untrusted workflow scenario,
|
The `generate-and-upload` and `download-and-submit` options are designed to be used in an untrusted workflow scenario,
|
||||||
where the workflow generating the dependency-graph cannot (or should not) be given the `contents: write` permissions
|
where the workflow generating the dependency-graph cannot (or should not) be given the `contents: write` permissions
|
||||||
required to submit via the Dependency Submission API.
|
required to submit via the Dependency Submission API.
|
||||||
required: false
|
required: false
|
||||||
default: 'generate-and-submit'
|
default: 'generate-and-submit'
|
||||||
additional-arguments:
|
|
||||||
description: |
|
|
||||||
Additional arguments to pass to Gradle. For example, `--no-configuration-cache --stacktrace`.
|
|
||||||
required: false
|
|
||||||
|
|
||||||
add-job-summary:
|
dependency-graph-continue-on-failure:
|
||||||
description: Specifies when a Job Summary should be inluded in the action results. Valid values are 'never', 'always' (default), and 'on-failure'.
|
description: When 'false' a failure to generate or submit a dependency graph will fail the Step or Job. When 'true' a warning will be emitted but no failure will result.
|
||||||
required: false
|
required: false
|
||||||
default: 'always'
|
default: false
|
||||||
add-job-summary-as-pr-comment:
|
|
||||||
description: Specifies when each Job Summary should be added as a PR comment. Valid values are 'never' (default), 'always', and 'on-failure'. No action will be taken if the workflow was not triggered from a pull request.
|
|
||||||
required: false
|
|
||||||
default: 'never'
|
|
||||||
|
|
||||||
|
artifact-retention-days:
|
||||||
|
description: Specifies the number of days to retain any artifacts generated by the action. If not set, the default retention settings for the repository will apply.
|
||||||
|
required: false
|
||||||
|
default: 1
|
||||||
|
|
||||||
|
# Build Scan configuration
|
||||||
build-scan-publish:
|
build-scan-publish:
|
||||||
description: |
|
description: |
|
||||||
Set to 'true' to automatically publish build results as a Build Scan on scans.gradle.com.
|
Set to 'true' to automatically publish build results as a Build Scan on scans.gradle.com.
|
||||||
For publication to succeed without user input, you must also provide values for `build-scan-terms-of-use-url` and 'build-scan-terms-of-use-agree'.
|
For publication to succeed without user input, you must also provide values for `build-scan-terms-of-use-url` and 'build-scan-terms-of-use-agree'.
|
||||||
required: false
|
required: false
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
build-scan-terms-of-use-url:
|
build-scan-terms-of-use-url:
|
||||||
description: The URL to the Build Scan® terms of use. This input must be set to 'https://gradle.com/help/legal-terms-of-use'.
|
description: The URL to the Build Scan® terms of use. This input must be set to 'https://gradle.com/terms-of-service' or 'https://gradle.com/help/legal-terms-of-use'.
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
build-scan-terms-of-use-agree:
|
build-scan-terms-of-use-agree:
|
||||||
description: Indicate that you agree to the Build Scan® terms of use. This input value must be "yes".
|
description: Indicate that you agree to the Build Scan® terms of use. This input value must be "yes".
|
||||||
required: false
|
required: false
|
||||||
@ -67,16 +129,46 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-agree' instead.
|
deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-agree' instead.
|
||||||
|
|
||||||
|
generate-job-summary:
|
||||||
|
description: When 'false', no Job Summary will be generated for the Job.
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
deprecation-message: Superceded by the new 'add-job-summary' and 'add-job-summary-as-pr-comment' parameters.
|
||||||
|
|
||||||
|
# EXPERIMENTAL ACTION INPUTS
|
||||||
|
# The following action properties allow fine-grained tweaking of the action caching behaviour.
|
||||||
|
# These properties are experimental and not (yet) designed for production use, and may change without notice in a subsequent release of `setup-gradle`.
|
||||||
|
# Use at your own risk!
|
||||||
|
gradle-home-cache-strict-match:
|
||||||
|
description: When 'true', the action will not attempt to restore the Gradle User Home entries from other Jobs.
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
# INTERNAL ACTION INPUTS
|
# INTERNAL ACTION INPUTS
|
||||||
# These inputs should not be configured directly, and are only used to pass environmental information to the action
|
# These inputs should not be configured directly, and are only used to pass environmental information to the action
|
||||||
workflow-job-context:
|
workflow-job-context:
|
||||||
|
description: Used to uniquely identify the current job invocation. Defaults to the matrix values for this job; this should not be overridden by users (INTERNAL).
|
||||||
required: false
|
required: false
|
||||||
default: ${{ toJSON(matrix) }}
|
default: ${{ toJSON(matrix) }}
|
||||||
|
|
||||||
github-token:
|
github-token:
|
||||||
|
description: The GitHub token used to authenticate when submitting via the Dependency Submission API.
|
||||||
default: ${{ github.token }}
|
default: ${{ github.token }}
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
build-scan-url:
|
||||||
|
description: Link to the Build Scan® generated by a Gradle build. Note that this output applies to a Step executing Gradle, not to the `setup-gradle` Step itself.
|
||||||
|
dependency-graph-file:
|
||||||
|
description: Path to the GitHub Dependency Graph snapshot file generated by a Gradle build. Note that this output applies to a Step executing Gradle, not to the `setup-gradle` Step itself.
|
||||||
|
gradle-version:
|
||||||
|
description: Version of Gradle that was setup by the action
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: 'node20'
|
using: 'node20'
|
||||||
main: '../dist/dependency-submission/main/index.js'
|
main: '../dist/dependency-submission/main/index.js'
|
||||||
post: '../dist/dependency-submission/post/index.js'
|
post: '../dist/dependency-submission/post/index.js'
|
||||||
|
|
||||||
|
branding:
|
||||||
|
icon: 'box'
|
||||||
|
color: 'gray-dark'
|
||||||
|
71
dist/dependency-submission/main/index.js
vendored
71
dist/dependency-submission/main/index.js
vendored
@ -141173,24 +141173,25 @@ const input_params_1 = __nccwpck_require__(23885);
|
|||||||
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_';
|
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_';
|
||||||
function setup(config) {
|
function setup(config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.Disabled) {
|
const option = config.getDependencyGraphOption();
|
||||||
|
if (option === input_params_1.DependencyGraphOption.Disabled) {
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false');
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
if (option === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
||||||
yield downloadAndSubmitDependencyGraphs(config);
|
yield downloadAndSubmitDependencyGraphs(config);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
core.info('Enabling dependency graph generation');
|
core.info('Enabling dependency graph generation');
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true');
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true');
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.continueOnFailure);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.getDependencyGraphContinueOnFailure());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId);
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref);
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', getShaFromContext());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', getShaFromContext());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_WORKSPACE', layout.workspaceDirectory());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_WORKSPACE', layout.workspaceDirectory());
|
||||||
maybeExportVariable('DEPENDENCY_GRAPH_REPORT_DIR', path.resolve(layout.workspaceDirectory(), 'dependency-graph-reports'));
|
maybeExportVariable('DEPENDENCY_GRAPH_REPORT_DIR', path.resolve(layout.workspaceDirectory(), 'dependency-graph-reports'));
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.Clear) {
|
if (option === input_params_1.DependencyGraphOption.Clear) {
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '');
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '');
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '');
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '');
|
||||||
}
|
}
|
||||||
@ -141204,12 +141205,9 @@ function maybeExportVariable(variableName, value) {
|
|||||||
}
|
}
|
||||||
function complete(config) {
|
function complete(config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (isRunningInActEnvironment()) {
|
const option = config.getDependencyGraphOption();
|
||||||
core.info('Dependency graph upload and submit not supported in the ACT environment.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
switch (config.dependencyGraphOption) {
|
switch (option) {
|
||||||
case input_params_1.DependencyGraphOption.Disabled:
|
case input_params_1.DependencyGraphOption.Disabled:
|
||||||
case input_params_1.DependencyGraphOption.Generate:
|
case input_params_1.DependencyGraphOption.Generate:
|
||||||
case input_params_1.DependencyGraphOption.DownloadAndSubmit:
|
case input_params_1.DependencyGraphOption.DownloadAndSubmit:
|
||||||
@ -141223,7 +141221,7 @@ function complete(config) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
warnOrFail(config, e);
|
warnOrFail(config, option, e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -141236,6 +141234,11 @@ function findGeneratedDependencyGraphFiles() {
|
|||||||
}
|
}
|
||||||
function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph upload not supported in the ACT environment.');
|
||||||
|
core.info(`Would upload: ${dependencyGraphFiles.join(', ')}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const workspaceDirectory = layout.workspaceDirectory();
|
const workspaceDirectory = layout.workspaceDirectory();
|
||||||
const artifactClient = new artifact_1.DefaultArtifactClient();
|
const artifactClient = new artifact_1.DefaultArtifactClient();
|
||||||
for (const dependencyGraphFile of dependencyGraphFiles) {
|
for (const dependencyGraphFile of dependencyGraphFiles) {
|
||||||
@ -141243,7 +141246,7 @@ function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
|||||||
core.info(`Uploading dependency graph file: ${relativePath}`);
|
core.info(`Uploading dependency graph file: ${relativePath}`);
|
||||||
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`;
|
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`;
|
||||||
yield artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
yield artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
||||||
retentionDays: config.artifactRetentionDays
|
retentionDays: config.getArtifactRetentionDays()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -141258,19 +141261,24 @@ function downloadAndSubmitDependencyGraphs(config) {
|
|||||||
yield submitDependencyGraphs(yield downloadDependencyGraphs());
|
yield submitDependencyGraphs(yield downloadDependencyGraphs());
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
warnOrFail(config, e);
|
warnOrFail(config, input_params_1.DependencyGraphOption.DownloadAndSubmit, e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function submitDependencyGraphs(dependencyGraphFiles) {
|
function submitDependencyGraphs(dependencyGraphFiles) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
for (const jsonFile of dependencyGraphFiles) {
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph submit not supported in the ACT environment.');
|
||||||
|
core.info(`Would submit: ${dependencyGraphFiles.join(', ')}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (const dependencyGraphFile of dependencyGraphFiles) {
|
||||||
try {
|
try {
|
||||||
yield submitDependencyGraphFile(jsonFile);
|
yield submitDependencyGraphFile(dependencyGraphFile);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
if (error instanceof request_error_1.RequestError) {
|
if (error instanceof request_error_1.RequestError) {
|
||||||
throw new Error(translateErrorMessage(jsonFile, error));
|
throw new Error(translateErrorMessage(dependencyGraphFile, error));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw error;
|
throw error;
|
||||||
@ -141332,15 +141340,25 @@ function downloadDependencyGraphs() {
|
|||||||
function findDependencyGraphFiles(dir) {
|
function findDependencyGraphFiles(dir) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const globber = yield glob.create(`${dir}/dependency-graph-reports/*.json`);
|
const globber = yield glob.create(`${dir}/dependency-graph-reports/*.json`);
|
||||||
const graphFiles = globber.glob();
|
const allFiles = yield globber.glob();
|
||||||
return graphFiles;
|
const unprocessedFiles = allFiles.filter(file => !isProcessed(file));
|
||||||
|
unprocessedFiles.forEach(markProcessed);
|
||||||
|
return unprocessedFiles;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function warnOrFail(config, error) {
|
function isProcessed(dependencyGraphFile) {
|
||||||
if (!config.continueOnFailure) {
|
const markerFile = `${dependencyGraphFile}.processed`;
|
||||||
|
return fs_1.default.existsSync(markerFile);
|
||||||
|
}
|
||||||
|
function markProcessed(dependencyGraphFile) {
|
||||||
|
const markerFile = `${dependencyGraphFile}.processed`;
|
||||||
|
fs_1.default.writeFileSync(markerFile, '');
|
||||||
|
}
|
||||||
|
function warnOrFail(config, option, error) {
|
||||||
|
if (!config.getDependencyGraphContinueOnFailure()) {
|
||||||
throw new errors_1.PostActionJobFailure(error);
|
throw new errors_1.PostActionJobFailure(error);
|
||||||
}
|
}
|
||||||
core.warning(`Failed to ${config.dependencyGraphOption} dependency graph. Will continue.\n${String(error)}`);
|
core.warning(`Failed to ${option} dependency graph. Will continue.\n${String(error)}`);
|
||||||
}
|
}
|
||||||
function getOctokit() {
|
function getOctokit() {
|
||||||
return github.getOctokit((0, input_params_1.getGithubToken)());
|
return github.getOctokit((0, input_params_1.getGithubToken)());
|
||||||
@ -141424,10 +141442,8 @@ function run() {
|
|||||||
try {
|
try {
|
||||||
yield setupGradle.setup(new input_params_1.CacheConfig(), new input_params_1.BuildScanConfig());
|
yield setupGradle.setup(new input_params_1.CacheConfig(), new input_params_1.BuildScanConfig());
|
||||||
const config = new input_params_1.DependencyGraphConfig();
|
const config = new input_params_1.DependencyGraphConfig();
|
||||||
config.artifactRetentionDays = 1;
|
|
||||||
config.continueOnFailure = false;
|
|
||||||
yield dependencyGraph.setup(config);
|
yield dependencyGraph.setup(config);
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
if (config.getDependencyGraphOption() === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const executable = yield provisioner.provisionGradle();
|
const executable = yield provisioner.provisionGradle();
|
||||||
@ -141442,6 +141458,7 @@ function run() {
|
|||||||
const args = (0, string_argv_1.parseArgsStringToArgv)(executionArgs);
|
const args = (0, string_argv_1.parseArgsStringToArgv)(executionArgs);
|
||||||
const buildRootDirectory = layout.buildRootDirectory();
|
const buildRootDirectory = layout.buildRootDirectory();
|
||||||
yield execution.executeGradleBuild(executable, buildRootDirectory, args);
|
yield execution.executeGradleBuild(executable, buildRootDirectory, args);
|
||||||
|
yield dependencyGraph.complete(config);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
core.setFailed(String(error));
|
core.setFailed(String(error));
|
||||||
@ -141652,11 +141669,6 @@ const cache = __importStar(__nccwpck_require__(27799));
|
|||||||
const summary_1 = __nccwpck_require__(81327);
|
const summary_1 = __nccwpck_require__(81327);
|
||||||
const string_argv_1 = __nccwpck_require__(19663);
|
const string_argv_1 = __nccwpck_require__(19663);
|
||||||
class DependencyGraphConfig {
|
class DependencyGraphConfig {
|
||||||
constructor() {
|
|
||||||
this.dependencyGraphOption = this.getDependencyGraphOption();
|
|
||||||
this.continueOnFailure = this.getDependencyGraphContinueOnFailure();
|
|
||||||
this.artifactRetentionDays = this.getArtifactRetentionDays();
|
|
||||||
}
|
|
||||||
getDependencyGraphOption() {
|
getDependencyGraphOption() {
|
||||||
const val = core.getInput('dependency-graph');
|
const val = core.getInput('dependency-graph');
|
||||||
switch (val.toLowerCase().trim()) {
|
switch (val.toLowerCase().trim()) {
|
||||||
@ -141802,9 +141814,6 @@ var JobSummaryOption;
|
|||||||
})(JobSummaryOption || (exports.JobSummaryOption = JobSummaryOption = {}));
|
})(JobSummaryOption || (exports.JobSummaryOption = JobSummaryOption = {}));
|
||||||
class BuildScanConfig {
|
class BuildScanConfig {
|
||||||
getBuildScanPublishEnabled() {
|
getBuildScanPublishEnabled() {
|
||||||
if (!this.verifyTermsOfUseAgreement()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement();
|
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement();
|
||||||
}
|
}
|
||||||
getBuildScanTermsOfUseUrl() {
|
getBuildScanTermsOfUseUrl() {
|
||||||
|
2
dist/dependency-submission/main/index.js.map
vendored
2
dist/dependency-submission/main/index.js.map
vendored
File diff suppressed because one or more lines are too long
49072
dist/dependency-submission/post/index.js
vendored
49072
dist/dependency-submission/post/index.js
vendored
File diff suppressed because one or more lines are too long
2
dist/dependency-submission/post/index.js.map
vendored
2
dist/dependency-submission/post/index.js.map
vendored
File diff suppressed because one or more lines are too long
66
dist/setup-gradle/main/index.js
vendored
66
dist/setup-gradle/main/index.js
vendored
@ -141173,24 +141173,25 @@ const input_params_1 = __nccwpck_require__(23885);
|
|||||||
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_';
|
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_';
|
||||||
function setup(config) {
|
function setup(config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.Disabled) {
|
const option = config.getDependencyGraphOption();
|
||||||
|
if (option === input_params_1.DependencyGraphOption.Disabled) {
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false');
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
if (option === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
||||||
yield downloadAndSubmitDependencyGraphs(config);
|
yield downloadAndSubmitDependencyGraphs(config);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
core.info('Enabling dependency graph generation');
|
core.info('Enabling dependency graph generation');
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true');
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true');
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.continueOnFailure);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.getDependencyGraphContinueOnFailure());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId);
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref);
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', getShaFromContext());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', getShaFromContext());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_WORKSPACE', layout.workspaceDirectory());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_WORKSPACE', layout.workspaceDirectory());
|
||||||
maybeExportVariable('DEPENDENCY_GRAPH_REPORT_DIR', path.resolve(layout.workspaceDirectory(), 'dependency-graph-reports'));
|
maybeExportVariable('DEPENDENCY_GRAPH_REPORT_DIR', path.resolve(layout.workspaceDirectory(), 'dependency-graph-reports'));
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.Clear) {
|
if (option === input_params_1.DependencyGraphOption.Clear) {
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '');
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '');
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '');
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '');
|
||||||
}
|
}
|
||||||
@ -141204,12 +141205,9 @@ function maybeExportVariable(variableName, value) {
|
|||||||
}
|
}
|
||||||
function complete(config) {
|
function complete(config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (isRunningInActEnvironment()) {
|
const option = config.getDependencyGraphOption();
|
||||||
core.info('Dependency graph upload and submit not supported in the ACT environment.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
switch (config.dependencyGraphOption) {
|
switch (option) {
|
||||||
case input_params_1.DependencyGraphOption.Disabled:
|
case input_params_1.DependencyGraphOption.Disabled:
|
||||||
case input_params_1.DependencyGraphOption.Generate:
|
case input_params_1.DependencyGraphOption.Generate:
|
||||||
case input_params_1.DependencyGraphOption.DownloadAndSubmit:
|
case input_params_1.DependencyGraphOption.DownloadAndSubmit:
|
||||||
@ -141223,7 +141221,7 @@ function complete(config) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
warnOrFail(config, e);
|
warnOrFail(config, option, e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -141236,6 +141234,11 @@ function findGeneratedDependencyGraphFiles() {
|
|||||||
}
|
}
|
||||||
function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph upload not supported in the ACT environment.');
|
||||||
|
core.info(`Would upload: ${dependencyGraphFiles.join(', ')}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const workspaceDirectory = layout.workspaceDirectory();
|
const workspaceDirectory = layout.workspaceDirectory();
|
||||||
const artifactClient = new artifact_1.DefaultArtifactClient();
|
const artifactClient = new artifact_1.DefaultArtifactClient();
|
||||||
for (const dependencyGraphFile of dependencyGraphFiles) {
|
for (const dependencyGraphFile of dependencyGraphFiles) {
|
||||||
@ -141243,7 +141246,7 @@ function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
|||||||
core.info(`Uploading dependency graph file: ${relativePath}`);
|
core.info(`Uploading dependency graph file: ${relativePath}`);
|
||||||
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`;
|
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`;
|
||||||
yield artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
yield artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
||||||
retentionDays: config.artifactRetentionDays
|
retentionDays: config.getArtifactRetentionDays()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -141258,19 +141261,24 @@ function downloadAndSubmitDependencyGraphs(config) {
|
|||||||
yield submitDependencyGraphs(yield downloadDependencyGraphs());
|
yield submitDependencyGraphs(yield downloadDependencyGraphs());
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
warnOrFail(config, e);
|
warnOrFail(config, input_params_1.DependencyGraphOption.DownloadAndSubmit, e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function submitDependencyGraphs(dependencyGraphFiles) {
|
function submitDependencyGraphs(dependencyGraphFiles) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
for (const jsonFile of dependencyGraphFiles) {
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph submit not supported in the ACT environment.');
|
||||||
|
core.info(`Would submit: ${dependencyGraphFiles.join(', ')}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (const dependencyGraphFile of dependencyGraphFiles) {
|
||||||
try {
|
try {
|
||||||
yield submitDependencyGraphFile(jsonFile);
|
yield submitDependencyGraphFile(dependencyGraphFile);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
if (error instanceof request_error_1.RequestError) {
|
if (error instanceof request_error_1.RequestError) {
|
||||||
throw new Error(translateErrorMessage(jsonFile, error));
|
throw new Error(translateErrorMessage(dependencyGraphFile, error));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw error;
|
throw error;
|
||||||
@ -141332,15 +141340,25 @@ function downloadDependencyGraphs() {
|
|||||||
function findDependencyGraphFiles(dir) {
|
function findDependencyGraphFiles(dir) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const globber = yield glob.create(`${dir}/dependency-graph-reports/*.json`);
|
const globber = yield glob.create(`${dir}/dependency-graph-reports/*.json`);
|
||||||
const graphFiles = globber.glob();
|
const allFiles = yield globber.glob();
|
||||||
return graphFiles;
|
const unprocessedFiles = allFiles.filter(file => !isProcessed(file));
|
||||||
|
unprocessedFiles.forEach(markProcessed);
|
||||||
|
return unprocessedFiles;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function warnOrFail(config, error) {
|
function isProcessed(dependencyGraphFile) {
|
||||||
if (!config.continueOnFailure) {
|
const markerFile = `${dependencyGraphFile}.processed`;
|
||||||
|
return fs_1.default.existsSync(markerFile);
|
||||||
|
}
|
||||||
|
function markProcessed(dependencyGraphFile) {
|
||||||
|
const markerFile = `${dependencyGraphFile}.processed`;
|
||||||
|
fs_1.default.writeFileSync(markerFile, '');
|
||||||
|
}
|
||||||
|
function warnOrFail(config, option, error) {
|
||||||
|
if (!config.getDependencyGraphContinueOnFailure()) {
|
||||||
throw new errors_1.PostActionJobFailure(error);
|
throw new errors_1.PostActionJobFailure(error);
|
||||||
}
|
}
|
||||||
core.warning(`Failed to ${config.dependencyGraphOption} dependency graph. Will continue.\n${String(error)}`);
|
core.warning(`Failed to ${option} dependency graph. Will continue.\n${String(error)}`);
|
||||||
}
|
}
|
||||||
function getOctokit() {
|
function getOctokit() {
|
||||||
return github.getOctokit((0, input_params_1.getGithubToken)());
|
return github.getOctokit((0, input_params_1.getGithubToken)());
|
||||||
@ -141566,11 +141584,6 @@ const cache = __importStar(__nccwpck_require__(27799));
|
|||||||
const summary_1 = __nccwpck_require__(81327);
|
const summary_1 = __nccwpck_require__(81327);
|
||||||
const string_argv_1 = __nccwpck_require__(19663);
|
const string_argv_1 = __nccwpck_require__(19663);
|
||||||
class DependencyGraphConfig {
|
class DependencyGraphConfig {
|
||||||
constructor() {
|
|
||||||
this.dependencyGraphOption = this.getDependencyGraphOption();
|
|
||||||
this.continueOnFailure = this.getDependencyGraphContinueOnFailure();
|
|
||||||
this.artifactRetentionDays = this.getArtifactRetentionDays();
|
|
||||||
}
|
|
||||||
getDependencyGraphOption() {
|
getDependencyGraphOption() {
|
||||||
const val = core.getInput('dependency-graph');
|
const val = core.getInput('dependency-graph');
|
||||||
switch (val.toLowerCase().trim()) {
|
switch (val.toLowerCase().trim()) {
|
||||||
@ -141716,9 +141729,6 @@ var JobSummaryOption;
|
|||||||
})(JobSummaryOption || (exports.JobSummaryOption = JobSummaryOption = {}));
|
})(JobSummaryOption || (exports.JobSummaryOption = JobSummaryOption = {}));
|
||||||
class BuildScanConfig {
|
class BuildScanConfig {
|
||||||
getBuildScanPublishEnabled() {
|
getBuildScanPublishEnabled() {
|
||||||
if (!this.verifyTermsOfUseAgreement()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement();
|
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement();
|
||||||
}
|
}
|
||||||
getBuildScanTermsOfUseUrl() {
|
getBuildScanTermsOfUseUrl() {
|
||||||
|
2
dist/setup-gradle/main/index.js.map
vendored
2
dist/setup-gradle/main/index.js.map
vendored
File diff suppressed because one or more lines are too long
66
dist/setup-gradle/post/index.js
vendored
66
dist/setup-gradle/post/index.js
vendored
@ -138626,24 +138626,25 @@ const input_params_1 = __nccwpck_require__(23885);
|
|||||||
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_';
|
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_';
|
||||||
function setup(config) {
|
function setup(config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.Disabled) {
|
const option = config.getDependencyGraphOption();
|
||||||
|
if (option === input_params_1.DependencyGraphOption.Disabled) {
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false');
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
if (option === input_params_1.DependencyGraphOption.DownloadAndSubmit) {
|
||||||
yield downloadAndSubmitDependencyGraphs(config);
|
yield downloadAndSubmitDependencyGraphs(config);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
core.info('Enabling dependency graph generation');
|
core.info('Enabling dependency graph generation');
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true');
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true');
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.continueOnFailure);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.getDependencyGraphContinueOnFailure());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId);
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref);
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref);
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', getShaFromContext());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_SHA', getShaFromContext());
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_WORKSPACE', layout.workspaceDirectory());
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_WORKSPACE', layout.workspaceDirectory());
|
||||||
maybeExportVariable('DEPENDENCY_GRAPH_REPORT_DIR', path.resolve(layout.workspaceDirectory(), 'dependency-graph-reports'));
|
maybeExportVariable('DEPENDENCY_GRAPH_REPORT_DIR', path.resolve(layout.workspaceDirectory(), 'dependency-graph-reports'));
|
||||||
if (config.dependencyGraphOption === input_params_1.DependencyGraphOption.Clear) {
|
if (option === input_params_1.DependencyGraphOption.Clear) {
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '');
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '');
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '');
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '');
|
||||||
}
|
}
|
||||||
@ -138657,12 +138658,9 @@ function maybeExportVariable(variableName, value) {
|
|||||||
}
|
}
|
||||||
function complete(config) {
|
function complete(config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
if (isRunningInActEnvironment()) {
|
const option = config.getDependencyGraphOption();
|
||||||
core.info('Dependency graph upload and submit not supported in the ACT environment.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
switch (config.dependencyGraphOption) {
|
switch (option) {
|
||||||
case input_params_1.DependencyGraphOption.Disabled:
|
case input_params_1.DependencyGraphOption.Disabled:
|
||||||
case input_params_1.DependencyGraphOption.Generate:
|
case input_params_1.DependencyGraphOption.Generate:
|
||||||
case input_params_1.DependencyGraphOption.DownloadAndSubmit:
|
case input_params_1.DependencyGraphOption.DownloadAndSubmit:
|
||||||
@ -138676,7 +138674,7 @@ function complete(config) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
warnOrFail(config, e);
|
warnOrFail(config, option, e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -138689,6 +138687,11 @@ function findGeneratedDependencyGraphFiles() {
|
|||||||
}
|
}
|
||||||
function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph upload not supported in the ACT environment.');
|
||||||
|
core.info(`Would upload: ${dependencyGraphFiles.join(', ')}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const workspaceDirectory = layout.workspaceDirectory();
|
const workspaceDirectory = layout.workspaceDirectory();
|
||||||
const artifactClient = new artifact_1.DefaultArtifactClient();
|
const artifactClient = new artifact_1.DefaultArtifactClient();
|
||||||
for (const dependencyGraphFile of dependencyGraphFiles) {
|
for (const dependencyGraphFile of dependencyGraphFiles) {
|
||||||
@ -138696,7 +138699,7 @@ function uploadDependencyGraphs(dependencyGraphFiles, config) {
|
|||||||
core.info(`Uploading dependency graph file: ${relativePath}`);
|
core.info(`Uploading dependency graph file: ${relativePath}`);
|
||||||
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`;
|
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`;
|
||||||
yield artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
yield artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
||||||
retentionDays: config.artifactRetentionDays
|
retentionDays: config.getArtifactRetentionDays()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -138711,19 +138714,24 @@ function downloadAndSubmitDependencyGraphs(config) {
|
|||||||
yield submitDependencyGraphs(yield downloadDependencyGraphs());
|
yield submitDependencyGraphs(yield downloadDependencyGraphs());
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
warnOrFail(config, e);
|
warnOrFail(config, input_params_1.DependencyGraphOption.DownloadAndSubmit, e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function submitDependencyGraphs(dependencyGraphFiles) {
|
function submitDependencyGraphs(dependencyGraphFiles) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
for (const jsonFile of dependencyGraphFiles) {
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph submit not supported in the ACT environment.');
|
||||||
|
core.info(`Would submit: ${dependencyGraphFiles.join(', ')}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (const dependencyGraphFile of dependencyGraphFiles) {
|
||||||
try {
|
try {
|
||||||
yield submitDependencyGraphFile(jsonFile);
|
yield submitDependencyGraphFile(dependencyGraphFile);
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
if (error instanceof request_error_1.RequestError) {
|
if (error instanceof request_error_1.RequestError) {
|
||||||
throw new Error(translateErrorMessage(jsonFile, error));
|
throw new Error(translateErrorMessage(dependencyGraphFile, error));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw error;
|
throw error;
|
||||||
@ -138785,15 +138793,25 @@ function downloadDependencyGraphs() {
|
|||||||
function findDependencyGraphFiles(dir) {
|
function findDependencyGraphFiles(dir) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const globber = yield glob.create(`${dir}/dependency-graph-reports/*.json`);
|
const globber = yield glob.create(`${dir}/dependency-graph-reports/*.json`);
|
||||||
const graphFiles = globber.glob();
|
const allFiles = yield globber.glob();
|
||||||
return graphFiles;
|
const unprocessedFiles = allFiles.filter(file => !isProcessed(file));
|
||||||
|
unprocessedFiles.forEach(markProcessed);
|
||||||
|
return unprocessedFiles;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function warnOrFail(config, error) {
|
function isProcessed(dependencyGraphFile) {
|
||||||
if (!config.continueOnFailure) {
|
const markerFile = `${dependencyGraphFile}.processed`;
|
||||||
|
return fs_1.default.existsSync(markerFile);
|
||||||
|
}
|
||||||
|
function markProcessed(dependencyGraphFile) {
|
||||||
|
const markerFile = `${dependencyGraphFile}.processed`;
|
||||||
|
fs_1.default.writeFileSync(markerFile, '');
|
||||||
|
}
|
||||||
|
function warnOrFail(config, option, error) {
|
||||||
|
if (!config.getDependencyGraphContinueOnFailure()) {
|
||||||
throw new errors_1.PostActionJobFailure(error);
|
throw new errors_1.PostActionJobFailure(error);
|
||||||
}
|
}
|
||||||
core.warning(`Failed to ${config.dependencyGraphOption} dependency graph. Will continue.\n${String(error)}`);
|
core.warning(`Failed to ${option} dependency graph. Will continue.\n${String(error)}`);
|
||||||
}
|
}
|
||||||
function getOctokit() {
|
function getOctokit() {
|
||||||
return github.getOctokit((0, input_params_1.getGithubToken)());
|
return github.getOctokit((0, input_params_1.getGithubToken)());
|
||||||
@ -138885,11 +138903,6 @@ const cache = __importStar(__nccwpck_require__(27799));
|
|||||||
const summary_1 = __nccwpck_require__(81327);
|
const summary_1 = __nccwpck_require__(81327);
|
||||||
const string_argv_1 = __nccwpck_require__(19663);
|
const string_argv_1 = __nccwpck_require__(19663);
|
||||||
class DependencyGraphConfig {
|
class DependencyGraphConfig {
|
||||||
constructor() {
|
|
||||||
this.dependencyGraphOption = this.getDependencyGraphOption();
|
|
||||||
this.continueOnFailure = this.getDependencyGraphContinueOnFailure();
|
|
||||||
this.artifactRetentionDays = this.getArtifactRetentionDays();
|
|
||||||
}
|
|
||||||
getDependencyGraphOption() {
|
getDependencyGraphOption() {
|
||||||
const val = core.getInput('dependency-graph');
|
const val = core.getInput('dependency-graph');
|
||||||
switch (val.toLowerCase().trim()) {
|
switch (val.toLowerCase().trim()) {
|
||||||
@ -139035,9 +139048,6 @@ var JobSummaryOption;
|
|||||||
})(JobSummaryOption || (exports.JobSummaryOption = JobSummaryOption = {}));
|
})(JobSummaryOption || (exports.JobSummaryOption = JobSummaryOption = {}));
|
||||||
class BuildScanConfig {
|
class BuildScanConfig {
|
||||||
getBuildScanPublishEnabled() {
|
getBuildScanPublishEnabled() {
|
||||||
if (!this.verifyTermsOfUseAgreement()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement();
|
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement();
|
||||||
}
|
}
|
||||||
getBuildScanTermsOfUseUrl() {
|
getBuildScanTermsOfUseUrl() {
|
||||||
|
2
dist/setup-gradle/post/index.js.map
vendored
2
dist/setup-gradle/post/index.js.map
vendored
File diff suppressed because one or more lines are too long
@ -288,18 +288,11 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate and submit dependency graph
|
- name: Generate and submit dependency graph
|
||||||
uses: gradle/actions/dependency-submission@v3
|
uses: gradle/actions/dependency-submission@v3
|
||||||
|
|
||||||
dependency-review:
|
|
||||||
needs: dependency-submission
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Perform dependency review
|
- name: Perform dependency review
|
||||||
uses: actions/dependency-review-action@v3
|
uses: actions/dependency-review-action@v3
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that the `dependency-submission` action submits the dependency graph at the completion of the workflow Job.
|
|
||||||
For this reason, the `dependency-review-action` must be executed in a dependent job, and not as a subsequent step in the job that generates the dependency graph.
|
|
||||||
|
|
||||||
## Usage with pull requests from public forked repositories
|
## Usage with pull requests from public forked repositories
|
||||||
|
|
||||||
This `contents: write` permission is [not available for any workflow that is triggered by a pull request submitted from a public forked repository](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).
|
This `contents: write` permission is [not available for any workflow that is triggered by a pull request submitted from a public forked repository](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
name: 'Setup Gradle'
|
name: 'Setup Gradle'
|
||||||
description: 'Configures Gradle for GitHub actions, caching state and generating a dependency graph via Dependency Submission.'
|
description: 'Configures Gradle for GitHub actions, caching state and generating a dependency graph via Dependency Submission.'
|
||||||
|
|
||||||
# https://help.github.com/en/articles/metadata-syntax-for-github-actions
|
|
||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
gradle-version:
|
gradle-version:
|
||||||
description: Gradle version to use. If specified, this Gradle version will be downloaded, added to the PATH and used for invoking Gradle.
|
description: |
|
||||||
|
Gradle version to use. If specified, this Gradle version will be downloaded, added to the PATH and used for invoking Gradle.
|
||||||
|
If not provided, it is assumed that the project uses the Gradle Wrapper.
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
|
# Cache configuration
|
||||||
cache-disabled:
|
cache-disabled:
|
||||||
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
description: When 'true', all caching is disabled. No entries will be written to or read from the cache.
|
||||||
required: false
|
required: false
|
||||||
@ -49,15 +50,13 @@ inputs:
|
|||||||
gradle-home-cache-excludes:
|
gradle-home-cache-excludes:
|
||||||
description: Paths within Gradle User Home to exclude from cache.
|
description: Paths within Gradle User Home to exclude from cache.
|
||||||
required: false
|
required: false
|
||||||
# e.g. Use the following setting to prevent the local build cache from being saved/restored
|
|
||||||
# gradle-home-cache-excludes: |
|
|
||||||
# caches/build-cache-1
|
|
||||||
|
|
||||||
gradle-home-cache-cleanup:
|
gradle-home-cache-cleanup:
|
||||||
description: When 'true', the action will attempt to remove any stale/unused entries from the Gradle User Home prior to saving to the GitHub Actions cache.
|
description: When 'true', the action will attempt to remove any stale/unused entries from the Gradle User Home prior to saving to the GitHub Actions cache.
|
||||||
required: false
|
required: false
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
|
# Job summary configuration
|
||||||
add-job-summary:
|
add-job-summary:
|
||||||
description: Specifies when a Job Summary should be inluded in the action results. Valid values are 'never', 'always' (default), and 'on-failure'.
|
description: Specifies when a Job Summary should be inluded in the action results. Valid values are 'never', 'always' (default), and 'on-failure'.
|
||||||
required: false
|
required: false
|
||||||
@ -68,8 +67,11 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: 'never'
|
default: 'never'
|
||||||
|
|
||||||
|
# Dependency Graph configuration
|
||||||
dependency-graph:
|
dependency-graph:
|
||||||
description: Specifies if a GitHub dependency snapshot should be generated for each Gradle build, and if so, how. Valid values are 'disabled' (default), 'generate', 'generate-and-submit', 'generate-and-upload', 'download-and-submit' and 'clear'.
|
description: |
|
||||||
|
Specifies if a GitHub dependency snapshot should be generated for each Gradle build, and if so, how.
|
||||||
|
Valid values are 'disabled' (default), 'generate', 'generate-and-submit', 'generate-and-upload', 'download-and-submit' and 'clear'.
|
||||||
required: false
|
required: false
|
||||||
default: 'disabled'
|
default: 'disabled'
|
||||||
|
|
||||||
@ -82,6 +84,7 @@ inputs:
|
|||||||
description: Specifies the number of days to retain any artifacts generated by the action. If not set, the default retention settings for the repository will apply.
|
description: Specifies the number of days to retain any artifacts generated by the action. If not set, the default retention settings for the repository will apply.
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
|
# Build Scan configuration
|
||||||
build-scan-publish:
|
build-scan-publish:
|
||||||
description: |
|
description: |
|
||||||
Set to 'true' to automatically publish build results as a Build Scan on scans.gradle.com.
|
Set to 'true' to automatically publish build results as a Build Scan on scans.gradle.com.
|
||||||
@ -108,6 +111,12 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-agree' instead.
|
deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-agree' instead.
|
||||||
|
|
||||||
|
generate-job-summary:
|
||||||
|
description: When 'false', no Job Summary will be generated for the Job.
|
||||||
|
required: false
|
||||||
|
default: true
|
||||||
|
deprecation-message: Superceded by the new 'add-job-summary' and 'add-job-summary-as-pr-comment' parameters.
|
||||||
|
|
||||||
arguments:
|
arguments:
|
||||||
description: Gradle command line arguments (supports multi-line input)
|
description: Gradle command line arguments (supports multi-line input)
|
||||||
required: false
|
required: false
|
||||||
@ -118,13 +127,7 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
deprecation-message: Using the action to execute Gradle directly is deprecated in favor of using the action to setup Gradle, and executing Gradle in a subsequent Step.
|
deprecation-message: Using the action to execute Gradle directly is deprecated in favor of using the action to setup Gradle, and executing Gradle in a subsequent Step.
|
||||||
|
|
||||||
generate-job-summary:
|
# EXPERIMENTAL ACTION INPUTS
|
||||||
description: When 'false', no Job Summary will be generated for the Job.
|
|
||||||
required: false
|
|
||||||
default: true
|
|
||||||
deprecation-message: Superceded by the new 'add-job-summary' and 'add-job-summary-as-pr-comment' parameters.
|
|
||||||
|
|
||||||
# EXPERIMENTAL & INTERNAL ACTION INPUTS
|
|
||||||
# The following action properties allow fine-grained tweaking of the action caching behaviour.
|
# The following action properties allow fine-grained tweaking of the action caching behaviour.
|
||||||
# These properties are experimental and not (yet) designed for production use, and may change without notice in a subsequent release of `setup-gradle`.
|
# These properties are experimental and not (yet) designed for production use, and may change without notice in a subsequent release of `setup-gradle`.
|
||||||
# Use at your own risk!
|
# Use at your own risk!
|
||||||
@ -133,6 +136,8 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: false
|
default: false
|
||||||
|
|
||||||
|
# INTERNAL ACTION INPUTS
|
||||||
|
# These inputs should not be configured directly, and are only used to pass environmental information to the action
|
||||||
workflow-job-context:
|
workflow-job-context:
|
||||||
description: Used to uniquely identify the current job invocation. Defaults to the matrix values for this job; this should not be overridden by users (INTERNAL).
|
description: Used to uniquely identify the current job invocation. Defaults to the matrix values for this job; this should not be overridden by users (INTERNAL).
|
||||||
required: false
|
required: false
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
"no-unused-vars": "off",
|
"no-unused-vars": "off",
|
||||||
"no-shadow": "off",
|
"no-shadow": "off",
|
||||||
"sort-imports": "off",
|
"sort-imports": "off",
|
||||||
|
"github/array-foreach": "off",
|
||||||
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
|
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
|
||||||
"@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
|
"@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
|
||||||
"@typescript-eslint/no-require-imports": "error",
|
"@typescript-eslint/no-require-imports": "error",
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
cd sources
|
|
||||||
npm run build
|
|
@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
cd sources
|
|
||||||
npm run all
|
|
@ -16,19 +16,20 @@ import {DependencyGraphConfig, DependencyGraphOption, getGithubToken} from './in
|
|||||||
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_'
|
const DEPENDENCY_GRAPH_PREFIX = 'dependency-graph_'
|
||||||
|
|
||||||
export async function setup(config: DependencyGraphConfig): Promise<void> {
|
export async function setup(config: DependencyGraphConfig): Promise<void> {
|
||||||
if (config.dependencyGraphOption === DependencyGraphOption.Disabled) {
|
const option = config.getDependencyGraphOption()
|
||||||
|
if (option === DependencyGraphOption.Disabled) {
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false')
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'false')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Download and submit early, for compatability with dependency review.
|
// Download and submit early, for compatability with dependency review.
|
||||||
if (config.dependencyGraphOption === DependencyGraphOption.DownloadAndSubmit) {
|
if (option === DependencyGraphOption.DownloadAndSubmit) {
|
||||||
await downloadAndSubmitDependencyGraphs(config)
|
await downloadAndSubmitDependencyGraphs(config)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
core.info('Enabling dependency graph generation')
|
core.info('Enabling dependency graph generation')
|
||||||
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true')
|
core.exportVariable('GITHUB_DEPENDENCY_GRAPH_ENABLED', 'true')
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.continueOnFailure)
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_CONTINUE_ON_FAILURE', config.getDependencyGraphContinueOnFailure())
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator())
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_CORRELATOR', config.getJobCorrelator())
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId)
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_JOB_ID', github.context.runId)
|
||||||
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref)
|
maybeExportVariable('GITHUB_DEPENDENCY_GRAPH_REF', github.context.ref)
|
||||||
@ -40,7 +41,7 @@ export async function setup(config: DependencyGraphConfig): Promise<void> {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// To clear the dependency graph, we generate an empty graph by excluding all projects and configurations
|
// To clear the dependency graph, we generate an empty graph by excluding all projects and configurations
|
||||||
if (config.dependencyGraphOption === DependencyGraphOption.Clear) {
|
if (option === DependencyGraphOption.Clear) {
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '')
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_PROJECTS', '')
|
||||||
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '')
|
core.exportVariable('DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS', '')
|
||||||
}
|
}
|
||||||
@ -53,13 +54,9 @@ function maybeExportVariable(variableName: string, value: unknown): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function complete(config: DependencyGraphConfig): Promise<void> {
|
export async function complete(config: DependencyGraphConfig): Promise<void> {
|
||||||
if (isRunningInActEnvironment()) {
|
const option = config.getDependencyGraphOption()
|
||||||
core.info('Dependency graph upload and submit not supported in the ACT environment.')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
switch (config.dependencyGraphOption) {
|
switch (option) {
|
||||||
case DependencyGraphOption.Disabled:
|
case DependencyGraphOption.Disabled:
|
||||||
case DependencyGraphOption.Generate: // Performed via init-script: nothing to do here
|
case DependencyGraphOption.Generate: // Performed via init-script: nothing to do here
|
||||||
case DependencyGraphOption.DownloadAndSubmit: // Performed in setup
|
case DependencyGraphOption.DownloadAndSubmit: // Performed in setup
|
||||||
@ -72,7 +69,7 @@ export async function complete(config: DependencyGraphConfig): Promise<void> {
|
|||||||
await uploadDependencyGraphs(await findGeneratedDependencyGraphFiles(), config)
|
await uploadDependencyGraphs(await findGeneratedDependencyGraphFiles(), config)
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
warnOrFail(config, e)
|
warnOrFail(config, option, e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +79,12 @@ async function findGeneratedDependencyGraphFiles(): Promise<string[]> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function uploadDependencyGraphs(dependencyGraphFiles: string[], config: DependencyGraphConfig): Promise<void> {
|
async function uploadDependencyGraphs(dependencyGraphFiles: string[], config: DependencyGraphConfig): Promise<void> {
|
||||||
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph upload not supported in the ACT environment.')
|
||||||
|
core.info(`Would upload: ${dependencyGraphFiles.join(', ')}`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const workspaceDirectory = layout.workspaceDirectory()
|
const workspaceDirectory = layout.workspaceDirectory()
|
||||||
|
|
||||||
const artifactClient = new DefaultArtifactClient()
|
const artifactClient = new DefaultArtifactClient()
|
||||||
@ -90,7 +93,7 @@ async function uploadDependencyGraphs(dependencyGraphFiles: string[], config: De
|
|||||||
core.info(`Uploading dependency graph file: ${relativePath}`)
|
core.info(`Uploading dependency graph file: ${relativePath}`)
|
||||||
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`
|
const artifactName = `${DEPENDENCY_GRAPH_PREFIX}${path.basename(dependencyGraphFile)}`
|
||||||
await artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
await artifactClient.uploadArtifact(artifactName, [dependencyGraphFile], workspaceDirectory, {
|
||||||
retentionDays: config.artifactRetentionDays
|
retentionDays: config.getArtifactRetentionDays()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,17 +107,23 @@ async function downloadAndSubmitDependencyGraphs(config: DependencyGraphConfig):
|
|||||||
try {
|
try {
|
||||||
await submitDependencyGraphs(await downloadDependencyGraphs())
|
await submitDependencyGraphs(await downloadDependencyGraphs())
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
warnOrFail(config, e)
|
warnOrFail(config, DependencyGraphOption.DownloadAndSubmit, e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function submitDependencyGraphs(dependencyGraphFiles: string[]): Promise<void> {
|
async function submitDependencyGraphs(dependencyGraphFiles: string[]): Promise<void> {
|
||||||
for (const jsonFile of dependencyGraphFiles) {
|
if (isRunningInActEnvironment()) {
|
||||||
|
core.info('Dependency graph submit not supported in the ACT environment.')
|
||||||
|
core.info(`Would submit: ${dependencyGraphFiles.join(', ')}`)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const dependencyGraphFile of dependencyGraphFiles) {
|
||||||
try {
|
try {
|
||||||
await submitDependencyGraphFile(jsonFile)
|
await submitDependencyGraphFile(dependencyGraphFile)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof RequestError) {
|
if (error instanceof RequestError) {
|
||||||
throw new Error(translateErrorMessage(jsonFile, error))
|
throw new Error(translateErrorMessage(dependencyGraphFile, error))
|
||||||
} else {
|
} else {
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
@ -182,16 +191,28 @@ async function downloadDependencyGraphs(): Promise<string[]> {
|
|||||||
|
|
||||||
async function findDependencyGraphFiles(dir: string): Promise<string[]> {
|
async function findDependencyGraphFiles(dir: string): Promise<string[]> {
|
||||||
const globber = await glob.create(`${dir}/dependency-graph-reports/*.json`)
|
const globber = await glob.create(`${dir}/dependency-graph-reports/*.json`)
|
||||||
const graphFiles = globber.glob()
|
const allFiles = await globber.glob()
|
||||||
return graphFiles
|
const unprocessedFiles = allFiles.filter(file => !isProcessed(file))
|
||||||
|
unprocessedFiles.forEach(markProcessed)
|
||||||
|
return unprocessedFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
function warnOrFail(config: DependencyGraphConfig, error: unknown): void {
|
function isProcessed(dependencyGraphFile: string): boolean {
|
||||||
if (!config.continueOnFailure) {
|
const markerFile = `${dependencyGraphFile}.processed`
|
||||||
|
return fs.existsSync(markerFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
function markProcessed(dependencyGraphFile: string): void {
|
||||||
|
const markerFile = `${dependencyGraphFile}.processed`
|
||||||
|
fs.writeFileSync(markerFile, '')
|
||||||
|
}
|
||||||
|
|
||||||
|
function warnOrFail(config: DependencyGraphConfig, option: String, error: unknown): void {
|
||||||
|
if (!config.getDependencyGraphContinueOnFailure()) {
|
||||||
throw new PostActionJobFailure(error)
|
throw new PostActionJobFailure(error)
|
||||||
}
|
}
|
||||||
|
|
||||||
core.warning(`Failed to ${config.dependencyGraphOption} dependency graph. Will continue.\n${String(error)}`)
|
core.warning(`Failed to ${option} dependency graph. Will continue.\n${String(error)}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOctokit(): InstanceType<typeof GitHub> {
|
function getOctokit(): InstanceType<typeof GitHub> {
|
||||||
|
@ -19,12 +19,9 @@ export async function run(): Promise<void> {
|
|||||||
|
|
||||||
// Configure the dependency graph submission
|
// Configure the dependency graph submission
|
||||||
const config = new DependencyGraphConfig()
|
const config = new DependencyGraphConfig()
|
||||||
config.artifactRetentionDays = 1
|
|
||||||
config.continueOnFailure = false
|
|
||||||
|
|
||||||
await dependencyGraph.setup(config)
|
await dependencyGraph.setup(config)
|
||||||
|
|
||||||
if (config.dependencyGraphOption === DependencyGraphOption.DownloadAndSubmit) {
|
if (config.getDependencyGraphOption() === DependencyGraphOption.DownloadAndSubmit) {
|
||||||
// No execution to perform
|
// No execution to perform
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -45,6 +42,8 @@ export async function run(): Promise<void> {
|
|||||||
const args: string[] = parseArgsStringToArgv(executionArgs)
|
const args: string[] = parseArgsStringToArgv(executionArgs)
|
||||||
const buildRootDirectory = layout.buildRootDirectory()
|
const buildRootDirectory = layout.buildRootDirectory()
|
||||||
await execution.executeGradleBuild(executable, buildRootDirectory, args)
|
await execution.executeGradleBuild(executable, buildRootDirectory, args)
|
||||||
|
|
||||||
|
await dependencyGraph.complete(config)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(String(error))
|
core.setFailed(String(error))
|
||||||
if (error instanceof Error && error.stack) {
|
if (error instanceof Error && error.stack) {
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as setupGradle from '../setup-gradle'
|
import * as setupGradle from '../setup-gradle'
|
||||||
import * as dependencyGraph from '../dependency-graph'
|
|
||||||
|
|
||||||
import {CacheConfig, DependencyGraphConfig, SummaryConfig} from '../input-params'
|
import {CacheConfig, SummaryConfig} from '../input-params'
|
||||||
import {PostActionJobFailure} from '../errors'
|
import {PostActionJobFailure} from '../errors'
|
||||||
|
|
||||||
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in
|
// Catch and log any unhandled exceptions. These exceptions can leak out of the uploadChunk method in
|
||||||
@ -15,10 +14,7 @@ process.on('uncaughtException', e => handleFailure(e))
|
|||||||
*/
|
*/
|
||||||
export async function run(): Promise<void> {
|
export async function run(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
if (await setupGradle.complete(new CacheConfig(), new SummaryConfig())) {
|
await setupGradle.complete(new CacheConfig(), new SummaryConfig())
|
||||||
// Only submit the dependency graphs once per job
|
|
||||||
await dependencyGraph.complete(new DependencyGraphConfig())
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof PostActionJobFailure) {
|
if (error instanceof PostActionJobFailure) {
|
||||||
core.setFailed(String(error))
|
core.setFailed(String(error))
|
||||||
|
@ -6,11 +6,7 @@ import {SUMMARY_ENV_VAR} from '@actions/core/lib/summary'
|
|||||||
import {parseArgsStringToArgv} from 'string-argv'
|
import {parseArgsStringToArgv} from 'string-argv'
|
||||||
|
|
||||||
export class DependencyGraphConfig {
|
export class DependencyGraphConfig {
|
||||||
dependencyGraphOption = this.getDependencyGraphOption()
|
getDependencyGraphOption(): DependencyGraphOption {
|
||||||
continueOnFailure = this.getDependencyGraphContinueOnFailure()
|
|
||||||
artifactRetentionDays = this.getArtifactRetentionDays()
|
|
||||||
|
|
||||||
private getDependencyGraphOption(): DependencyGraphOption {
|
|
||||||
const val = core.getInput('dependency-graph')
|
const val = core.getInput('dependency-graph')
|
||||||
switch (val.toLowerCase().trim()) {
|
switch (val.toLowerCase().trim()) {
|
||||||
case 'disabled':
|
case 'disabled':
|
||||||
@ -31,11 +27,11 @@ export class DependencyGraphConfig {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private getDependencyGraphContinueOnFailure(): boolean {
|
getDependencyGraphContinueOnFailure(): boolean {
|
||||||
return getBooleanInput('dependency-graph-continue-on-failure', true)
|
return getBooleanInput('dependency-graph-continue-on-failure', true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private getArtifactRetentionDays(): number {
|
getArtifactRetentionDays(): number {
|
||||||
const val = core.getInput('artifact-retention-days')
|
const val = core.getInput('artifact-retention-days')
|
||||||
return parseNumericInput('artifact-retention-days', val, 0)
|
return parseNumericInput('artifact-retention-days', val, 0)
|
||||||
// Zero indicates that the default repository settings should be used
|
// Zero indicates that the default repository settings should be used
|
||||||
@ -185,9 +181,6 @@ export enum JobSummaryOption {
|
|||||||
|
|
||||||
export class BuildScanConfig {
|
export class BuildScanConfig {
|
||||||
getBuildScanPublishEnabled(): boolean {
|
getBuildScanPublishEnabled(): boolean {
|
||||||
if (!this.verifyTermsOfUseAgreement()) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement()
|
return getBooleanInput('build-scan-publish') && this.verifyTermsOfUseAgreement()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user