name: Test dependency graph on: workflow_call: inputs: cache-key-prefix: type: string runner-os: type: string default: '["ubuntu-latest", "windows-latest", "macos-latest"]' permissions: contents: write env: GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }} jobs: groovy-generate-and-upload: strategy: fail-fast: false 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: Generate dependency graph uses: ./dependency-submission with: dependency-graph: generate-and-upload build-root-directory: .github/workflow-samples/groovy-dsl cache-read-only: false groovy-restore-cache: needs: [groovy-generate-and-upload] strategy: fail-fast: false 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: needs: [groovy-generate-and-upload] strategy: fail-fast: false 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: Submit dependency graph uses: ./dependency-submission with: dependency-graph: download-and-submit kotlin-generate-and-submit: strategy: fail-fast: false 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: Generate and submit dependency graph uses: ./dependency-submission with: build-root-directory: .github/workflow-samples/kotlin-dsl multiple-builds: strategy: fail-fast: false 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: 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 dependency-resolution-task: assemble - 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: fail-fast: false 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 config-cache: strategy: fail-fast: false 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: config-cache-store uses: ./dependency-submission with: build-root-directory: .github/workflow-samples/groovy-dsl additional-arguments: --configuration-cache - name: Check and delete generated dependency graph shell: bash run: | if [ ! -e "${{ steps.config-cache-store.outputs.dependency-graph-file }}" ]; then echo "Did not find config-cache-store dependency graph files" exit 1 fi rm ${{ steps.config-cache-store.outputs.dependency-graph-file }}* - id: config-cache-reuse uses: ./dependency-submission with: build-root-directory: .github/workflow-samples/groovy-dsl additional-arguments: --configuration-cache - 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 gradle-versions: strategy: fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} gradle: [8.0.2, 7.6.4, 7.1.1, 6.9.4, 6.0.1, 5.6.4, 5.2.1] include: - gradle: 5.6.4 build-root-suffix: -gradle-5 - gradle: 5.2.1 build-root-suffix: -gradle-5 runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@v4 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Generate and submit dependencies uses: ./dependency-submission with: gradle-version: ${{ matrix.gradle }} build-root-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }} env: GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository after-setup-gradle: strategy: fail-fast: false 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: Setup Gradle uses: ./setup-gradle - name: Generate and submit dependencies id: dependency-submission uses: ./dependency-submission with: build-root-directory: .github/workflow-samples/groovy-dsl