name: Test dependency submission on: workflow_call: inputs: cache-key-prefix: type: string default: '0' runner-os: type: string default: '["ubuntu-latest"]' skip-dist: type: boolean default: false env: SKIP_DIST: ${{ inputs.skip-dist }} GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-submission-${{ inputs.cache-key-prefix }} GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository permissions: contents: read jobs: dependency-submission-groovy-generate-and-upload: permissions: contents: write strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: groovy-dependency-submission dependency-submission-groovy-restore-cache: permissions: contents: write needs: [dependency-submission-groovy-generate-and-upload] strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 env: GRADLE_BUILD_ACTION_CACHE_KEY_JOB: groovy-dependency-submission dependency-submission-groovy-download-and-submit: permissions: contents: write needs: [dependency-submission-groovy-generate-and-upload] strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Submit dependency graph uses: ./dependency-submission with: dependency-graph: download-and-submit env: DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: groovy-generate-and-upload-${{ matrix.os }} dependency-submission-kotlin-generate-and-submit: permissions: contents: write strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 dependency-submission-multiple-builds: permissions: contents: write strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 dependency-submission-multiple-builds-upload: permissions: contents: write strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 dependency-submission-config-cache: permissions: contents: write runs-on: ubuntu-latest # Test is not compatible with Windows steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 dependency-submission-gradle-versions: permissions: contents: write 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@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 }} dependency-submission-with-setup-gradle: permissions: contents: write runs-on: ubuntu-latest # Test is not compatible with Windows steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - 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 - name: Check and delete generated dependency graph shell: bash run: | if [ ! -e "${{ steps.dependency-submission.outputs.dependency-graph-file }}" ]; then echo "Did not find generated dependency graph files" exit 1 fi rm ${{ steps.dependency-submission.outputs.dependency-graph-file }}* - name: Run Gradle build run: ./gradlew build 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 dependency-submission-with-includes-and-excludes: permissions: contents: write runs-on: ubuntu-latest # Test is not compatible with Windows steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Generate and submit dependencies id: dependency-submission uses: ./dependency-submission with: build-root-directory: .github/workflow-samples/groovy-dsl dependency-graph-exclude-projects: excluded-project dependency-graph-include-projects: included-project dependency-graph-exclude-configurations: excluded-configuration dependency-graph-include-configurations: included-configuration - name: Check generated dependency graph and env vars shell: bash run: | if [ ! -e "${{ steps.dependency-submission.outputs.dependency-graph-file }}" ]; then echo "Did not find generated dependency graph file" exit 1 fi if [ "$DEPENDENCY_GRAPH_EXCLUDE_PROJECTS" != "excluded-project" ] || [ "$DEPENDENCY_GRAPH_INCLUDE_PROJECTS" != "included-project" ] || [ "$DEPENDENCY_GRAPH_EXCLUDE_CONFIGURATIONS" != "excluded-configuration" ] || [ "$DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS" != "included-configuration" ]; then echo "Did not set expected environment variables" exit 1 fi dependency-submission-custom-report-dir-submit: permissions: contents: write strategy: max-parallel: 1 fail-fast: false matrix: os: ${{fromJSON(inputs.runner-os)}} runs-on: ${{ matrix.os }} steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Generate dependency graph id: dependency-graph uses: ./dependency-submission with: dependency-graph: generate-and-submit dependency-graph-report-dir: '${{ github.workspace }}/custom/report-dir' build-root-directory: .github/workflow-samples/groovy-dsl - name: Check generated dependency graphs shell: bash run: | echo "report file: ${{ steps.dependency-graph.outputs.dependency-graph-file }}" if [ ! -e "${{ steps.dependency-graph.outputs.dependency-graph-file }}" ]; then echo "Did not find dependency graph file" exit 1 fi if [ -z "$(ls -A "${{ github.workspace }}/custom/report-dir")" ]; then echo "No dependency graph files found in custom directory" exit 1 fi dependency-submission-custom-report-dir-upload: permissions: contents: write runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Generate and upload dependency graph id: dependency-graph uses: ./dependency-submission with: dependency-graph: generate-and-upload dependency-graph-report-dir: '${{ github.workspace }}/custom/report-dir' build-root-directory: .github/workflow-samples/groovy-dsl custom-report-dir-download-and-submit: permissions: contents: write needs: [dependency-submission-custom-report-dir-upload] runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Initialize integ-test uses: ./.github/actions/init-integ-test - name: Download and submit dependency graph uses: ./dependency-submission with: dependency-graph: download-and-submit dependency-graph-report-dir: '${{ github.workspace }}/custom/report-dir' build-root-directory: .github/workflow-samples/groovy-dsl env: DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: custom-report-dir-upload # For testing, to avoid downloading artifacts from other worklfows - name: Check downloaded dependency graph shell: bash run: | if [ -z "$(ls -A "${{ github.workspace }}/custom/report-dir")" ]; then echo "No dependency graph files found in custom directory" exit 1 fi