diff --git a/.github-gen/velnor-workflow.toml b/.github-gen/velnor-workflow.toml index 11fab07..10c4d0a 100644 --- a/.github-gen/velnor-workflow.toml +++ b/.github-gen/velnor-workflow.toml @@ -2,19 +2,12 @@ schema = 1 [generator] repository = "tailrocks/graphql-java-datetime" +revision = "e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91" [workflow] runners = "both" -automatic = "both" -default_dispatch_runner = "github" automatic_lanes = "github" +default_dispatch_runner = "github" github_runner = "ubuntu-24.04" velnor_labels = ["self-hosted", "velnor-target-mvp"] default_branch = "main" - -[policy] -exclude_workflows = ["publish-sonatype.yml"] - -[[static_files]] -file = ".github/workflows/publish-sonatype.yml" -source = ".github/workflows/publish-sonatype.yml" diff --git a/.github/ci/.github-actions-generator-state b/.github/ci/.github-actions-generator-state index 01b6379..d571710 100644 --- a/.github/ci/.github-actions-generator-state +++ b/.github/ci/.github-actions-generator-state @@ -1,17 +1,16 @@ # Generated ownership state; do not edit. schema = 2 [inputs] -config 417292d6f190ea7b -scan 9b6ded87d05c3853 -generator 43 +config 13a120079b9f4689 +scan 1b72102e5495def6 +generator 47 [outputs] .github/actionlint.yaml ec35f48ae7e90e0e -.github/ci/project.toml 76cf91bcf683691e -.github/workflows/ci-main.yml 8cc4741ea977b4c0 -.github/workflows/ci-policy.yml 69433f8da7a62fc7 -.github/workflows/ci-pr.yml a85a08ed202ab35f -.github/workflows/ci-unit-gradle.yml 445cbd7a934c6df2 -.github/workflows/maintenance.yml 89c1acfcaee89682 +.github/ci/project.toml b19da7b7165e2f66 +.github/workflows/ci-main.yml d4fc11ddd2d354cd +.github/workflows/ci-policy.yml 679740121455a70d +.github/workflows/ci-pr.yml e9a103db9e62992b +.github/workflows/ci-unit-gradle.yml 6b620c5f48f93a63 +.github/workflows/maintenance.yml dd8712190b92c173 .github/workflows/nightly.yml 76e5e2bc12a599c6 -.github/workflows/publish-sonatype.yml 775e17aa5dc8cb4d config/fleet/velnor-host.env d14b419216449423 diff --git a/.github/ci/project.toml b/.github/ci/project.toml index 40503e1..47e25a8 100644 --- a/.github/ci/project.toml +++ b/.github/ci/project.toml @@ -30,7 +30,6 @@ github_pr_commands = ["./gradlew check --no-daemon"] github_full_commands = ["./gradlew check --no-daemon"] velnor_pr_commands = ["./gradlew check --no-daemon"] velnor_full_commands = ["./gradlew check --no-daemon"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -45,7 +44,6 @@ github_pr_commands = ["cd -- 'buildSrc' && gradle check --no-daemon"] github_full_commands = ["cd -- 'buildSrc' && gradle check --no-daemon"] velnor_pr_commands = ["cd -- 'buildSrc' && gradle check --no-daemon"] velnor_full_commands = ["cd -- 'buildSrc' && gradle check --no-daemon"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["buildSrc/gradle/wrapper/gradle-wrapper.properties", "buildSrc/gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -61,7 +59,6 @@ github_full_commands = ["./gradlew :graphql-datetime-dgs-autoconfigure:check --n velnor_pr_commands = ["./gradlew :graphql-datetime-dgs-autoconfigure:check --no-daemon"] velnor_full_commands = ["./gradlew :graphql-datetime-dgs-autoconfigure:check --no-daemon"] depends_on = ["gradle-graphql-datetime-spring-boot-common"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -77,7 +74,6 @@ github_full_commands = ["./gradlew :graphql-datetime-dgs-starter:check --no-daem velnor_pr_commands = ["./gradlew :graphql-datetime-dgs-starter:check --no-daemon"] velnor_full_commands = ["./gradlew :graphql-datetime-dgs-starter:check --no-daemon"] depends_on = ["gradle-graphql-datetime-dgs-autoconfigure"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -93,7 +89,6 @@ github_full_commands = ["./gradlew :graphql-datetime-kickstart-spring-boot-start velnor_pr_commands = ["./gradlew :graphql-datetime-kickstart-spring-boot-starter:check --no-daemon"] velnor_full_commands = ["./gradlew :graphql-datetime-kickstart-spring-boot-starter:check --no-daemon"] depends_on = ["gradle-graphql-datetime-spring-boot-common"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -109,7 +104,6 @@ github_full_commands = ["./gradlew :graphql-datetime-spring-boot-autoconfigure:c velnor_pr_commands = ["./gradlew :graphql-datetime-spring-boot-autoconfigure:check --no-daemon"] velnor_full_commands = ["./gradlew :graphql-datetime-spring-boot-autoconfigure:check --no-daemon"] depends_on = ["gradle-graphql-datetime-spring-boot-common"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -125,7 +119,6 @@ github_full_commands = ["./gradlew :graphql-datetime-spring-boot-common:check -- velnor_pr_commands = ["./gradlew :graphql-datetime-spring-boot-common:check --no-daemon"] velnor_full_commands = ["./gradlew :graphql-datetime-spring-boot-common:check --no-daemon"] depends_on = ["gradle-graphql-java-datetime"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -141,7 +134,6 @@ github_full_commands = ["./gradlew :graphql-datetime-spring-boot-starter:check - velnor_pr_commands = ["./gradlew :graphql-datetime-spring-boot-starter:check --no-daemon"] velnor_full_commands = ["./gradlew :graphql-datetime-spring-boot-starter:check --no-daemon"] depends_on = ["gradle-graphql-datetime-spring-boot-autoconfigure"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -156,7 +148,6 @@ github_pr_commands = ["./gradlew :graphql-java-datetime:check --no-daemon"] github_full_commands = ["./gradlew :graphql-java-datetime:check --no-daemon"] velnor_pr_commands = ["./gradlew :graphql-java-datetime:check --no-daemon"] velnor_full_commands = ["./gradlew :graphql-java-datetime:check --no-daemon"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -172,7 +163,6 @@ github_full_commands = ["./gradlew :samples:dgs-webmvc:check --no-daemon"] velnor_pr_commands = ["./gradlew :samples:dgs-webmvc:check --no-daemon"] velnor_full_commands = ["./gradlew :samples:dgs-webmvc:check --no-daemon"] depends_on = ["gradle-graphql-datetime-dgs-starter"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -188,7 +178,6 @@ github_full_commands = ["./gradlew :samples:kickstart-webflux:check --no-daemon" velnor_pr_commands = ["./gradlew :samples:kickstart-webflux:check --no-daemon"] velnor_full_commands = ["./gradlew :samples:kickstart-webflux:check --no-daemon"] depends_on = ["gradle-graphql-datetime-kickstart-spring-boot-starter"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -204,7 +193,6 @@ github_full_commands = ["./gradlew :samples:kickstart-webmvc:check --no-daemon"] velnor_pr_commands = ["./gradlew :samples:kickstart-webmvc:check --no-daemon"] velnor_full_commands = ["./gradlew :samples:kickstart-webmvc:check --no-daemon"] depends_on = ["gradle-graphql-datetime-kickstart-spring-boot-starter"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] @@ -220,7 +208,6 @@ github_full_commands = ["./gradlew :samples:spring-boot-webmvc:check --no-daemon velnor_pr_commands = ["./gradlew :samples:spring-boot-webmvc:check --no-daemon"] velnor_full_commands = ["./gradlew :samples:spring-boot-webmvc:check --no-daemon"] depends_on = ["gradle-graphql-datetime-spring-boot-autoconfigure"] -workflow_file = "ci-unit-gradle.yml" [unit.cache] key_files = ["gradle/wrapper/gradle-wrapper.properties", "gradle/libs.versions.toml"] paths = ["~/.gradle/caches", "~/.gradle/wrapper"] diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index 6acaad1..be75bf8 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -32,7 +32,7 @@ on: concurrency: - group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + group: ci-${{ github.workflow }}-${{ github.run_id }} cancel-in-progress: false permissions: @@ -58,11 +58,11 @@ jobs: persist-credentials: false - name: Set up Velnor workflow runtime if: ${{ runner.environment == 'github-hosted' }} - uses: tailrocks/velnor/.github/actions/setup-velnor-workflow@e6fabca85499be62f939243d4452438449b69c53 + uses: tailrocks/velnor/.github/actions/setup-velnor-workflow@e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 with: - rev: e6fabca85499be62f939243d4452438449b69c53 + rev: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 - name: Set trusted workflow policy revision - run: echo "VELNOR_WORKFLOW_POLICY_REVISION=e6fabca85499be62f939243d4452438449b69c53" >> "$GITHUB_ENV" + run: echo "VELNOR_WORKFLOW_POLICY_REVISION=e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91" >> "$GITHUB_ENV" - name: Select affected units id: plan env: @@ -79,7 +79,7 @@ jobs: - name: Prepare Velnor workflow runtime shell: bash env: - EXPECTED_REVISION: e6fabca85499be62f939243d4452438449b69c53 + EXPECTED_REVISION: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 run: | set -euo pipefail stage="$RUNNER_TEMP/velnor-workflow-runtime" @@ -88,11 +88,16 @@ jobs: src="$(command -v velnor-workflow)" install -m 0755 "$src" "$stage/velnor-workflow" digest="$(sha256sum "$stage/velnor-workflow" | awk '{print $1}')" - jq -n --arg repository "$GITHUB_REPOSITORY" --arg revision "$EXPECTED_REVISION" --arg head_branch "${{ github.ref_name }}" --arg platform "${{ runner.os }}-${{ runner.arch }}" --arg run_id "$GITHUB_RUN_ID" --arg job_id "${{ github.job }}" --arg binary_sha256 "$digest" '{repository: $repository, revision: $revision, head_branch: $head_branch, platform: $platform, run_id: $run_id, job_id: $job_id, binary_sha256: $binary_sha256}' > "$stage/manifest.json" + policy_src="${VELNOR_WORKFLOW_PINNED_BINARY:-$src}" + install -m 0755 "$policy_src" "$stage/velnor-workflow-policy" + policy_revision="$("$stage/velnor-workflow-policy" --revision)" + [[ "$policy_revision" == "$EXPECTED_REVISION" ]] || { echo "::error::policy runtime reports revision $policy_revision, expected $EXPECTED_REVISION" >&2; exit 1; } + policy_digest="$(sha256sum "$stage/velnor-workflow-policy" | awk '{print $1}')" + jq -n --arg repository "$GITHUB_REPOSITORY" --arg revision "$EXPECTED_REVISION" --arg head_branch "${{ github.ref_name }}" --arg platform "${{ runner.os }}-${{ runner.arch }}" --arg run_id "$GITHUB_RUN_ID" --arg job_id "${{ github.job }}" --arg binary_sha256 "$digest" --arg policy_revision "$policy_revision" --arg policy_binary_sha256 "$policy_digest" '{repository: $repository, revision: $revision, head_branch: $head_branch, platform: $platform, run_id: $run_id, job_id: $job_id, binary_sha256: $binary_sha256, policy_revision: $policy_revision, policy_binary_sha256: $policy_binary_sha256}' > "$stage/manifest.json" - name: Publish Velnor workflow runtime uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: velnor-workflow-runtime-e6fabca85499be62f939243d4452438449b69c53-${{ runner.os }}-${{ runner.arch }} + name: velnor-workflow-runtime-e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91-${{ runner.os }}-${{ runner.arch }} path: ${{ runner.temp }}/velnor-workflow-runtime if-no-files-found: error retention-days: 7 @@ -108,32 +113,43 @@ jobs: policy: name: Policy runs-on: ubuntu-24.04 - timeout-minutes: 10 + timeout-minutes: 20 + # Trust invariant: this job runs the base branch's validator against the + # audited tree under pull_request_target. It holds `contents: read` only, + # references no secrets, and its checkout persists no credentials, so + # building and running the tree's declared generator here is no more + # privileged than the pull_request lanes that already build the tree. permissions: contents: read steps: - - name: Checkout caller workflow data + - name: Checkout repository history uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: - repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - ref: ${{ github.event.pull_request.head.sha || github.sha }} path: policy-checkout - sparse-checkout: | - .github/workflows - .github-gen - sparse-checkout-cone-mode: true - fetch-depth: 1 + fetch-depth: 0 persist-credentials: false - # Static policy validation only; fork head checkout is intentional. - allow-unsafe-pr-checkout: true + - name: Check out audited head + working-directory: policy-checkout + env: + HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }} + HEAD_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + run: | + set -euo pipefail + if ! git cat-file -e "$HEAD_SHA^{commit}" 2>/dev/null; then + git fetch --no-tags "$GITHUB_SERVER_URL/$HEAD_REPOSITORY" "$HEAD_SHA" + fi + git checkout --quiet --detach "$HEAD_SHA" + - name: Bound the Mr. Boxington store + shell: bash + run: echo "MBX_GC_MAX_SIZE=12GiB" >> "$GITHUB_ENV" - name: Set up Mr. Boxington uses: jdx/mr-boxington-action@7234d3dd1a6ca8f6c381eea8e4dfb03f18fcf777 # v1.3.0 with: backend: github - version: 1.8.3 - cache-key: velnor-policy-mbx-1.8.3-${{ runner.os }}-${{ runner.arch }}-e6fabca85499be62f939243d4452438449b69c53 + version: 1.11.1 + cache-key: velnor-policy-mbx-1.11.1-${{ runner.os }}-${{ runner.arch }}-e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 restore-keys: | - velnor-policy-mbx-1.8.3-${{ runner.os }}-${{ runner.arch }}- + velnor-policy-mbx-1.11.1-${{ runner.os }}-${{ runner.arch }}- - name: Install pinned Velnor workflow runtime env: CARGO_HOME: ${{ runner.temp }}/velnor-workflow-cargo-home @@ -151,16 +167,44 @@ jobs: cargo install \ --locked \ --git https://github.com/tailrocks/velnor \ - --rev e6fabca85499be62f939243d4452438449b69c53 \ + --rev e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 \ --root "$VELNOR_WORKFLOW_ROOT" \ velnor-workflow \ --bin velnor-workflow echo "$VELNOR_WORKFLOW_ROOT/bin" >> "$GITHUB_PATH" + - name: Resolve required status checks + env: + GH_TOKEN: ${{ github.token }} + DEFAULT_BRANCH: main + run: | + set -euo pipefail + contexts="$(gh api "repos/$GITHUB_REPOSITORY/rulesets?includes_parents=true" \ + | jq -r '.[] | select(.target == "branch" and .enforcement == "active") | .id' \ + | while read -r id; do gh api "repos/$GITHUB_REPOSITORY/rulesets/$id"; done \ + | jq -r --arg branch "refs/heads/$DEFAULT_BRANCH" 'select(.conditions.ref_name.include | any(. == "~DEFAULT_BRANCH" or . == "~ALL" or . == $branch)) | .rules[] | select(.type == "required_status_checks") | .parameters.required_status_checks[].context' \ + | sort -u | paste -sd, -)" + echo "RULESET_CONTEXTS=$contexts" >> "$GITHUB_ENV" - name: Enforce workflow policy env: WORKFLOW_ROOT: ${{ github.workspace }}/policy-checkout - VELNOR_WORKFLOW_POLICY_REVISION: e6fabca85499be62f939243d4452438449b69c53 - run: velnor-workflow policy --workflow-root "$WORKFLOW_ROOT" + HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }} + BASE_SHA: ${{ github.event.pull_request.base.sha || github.sha }} + VELNOR_WORKFLOW_POLICY_REVISION: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 + run: | + set -euo pipefail + velnor-workflow policy \ + --workflow-root "$WORKFLOW_ROOT" \ + --head-sha "$HEAD_SHA" \ + --base-sha "$BASE_SHA" \ + --ruleset-contexts "$RULESET_CONTEXTS" + - name: Set up actionlint + uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0 + with: + install_args: actionlint@1.7.12 + cache: false + - name: Lint caller workflows + working-directory: policy-checkout + run: mise exec actionlint@1.7.12 -- actionlint github-gradle: name: "Gradle · Gradle" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle,') }} @@ -174,6 +218,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle: name: "Gradle · Gradle" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -187,6 +237,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-buildsrc: name: "Gradle · Gradle (buildSrc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-buildsrc,') }} @@ -200,6 +256,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + buildSrc/gradle/wrapper/gradle-wrapper.properties + buildSrc/gradle/libs.versions.toml velnor-gradle-buildsrc: name: "Gradle · Gradle (buildSrc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-buildsrc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -213,6 +275,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + buildSrc/gradle/wrapper/gradle-wrapper.properties + buildSrc/gradle/libs.versions.toml github-gradle-graphql-datetime-dgs-autoconfigure: name: "Gradle · Gradle (graphql-datetime-dgs-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-autoconfigure,') }} @@ -226,6 +294,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-dgs-autoconfigure: name: "Gradle · Gradle (graphql-datetime-dgs-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-autoconfigure,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -239,6 +313,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-dgs-starter: name: "Gradle · Gradle (graphql-datetime-dgs-starter)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-starter,') }} @@ -252,6 +332,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-dgs-starter: name: "Gradle · Gradle (graphql-datetime-dgs-starter)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-starter,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -265,6 +351,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-kickstart-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-kickstart-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-kickstart-spring-boot-starter,') }} @@ -278,6 +370,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-kickstart-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-kickstart-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-kickstart-spring-boot-starter,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -291,6 +389,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-spring-boot-autoconfigure: name: "Gradle · Gradle (graphql-datetime-spring-boot-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-autoconfigure,') }} @@ -304,6 +408,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-spring-boot-autoconfigure: name: "Gradle · Gradle (graphql-datetime-spring-boot-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-autoconfigure,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -317,6 +427,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-spring-boot-common: name: "Gradle · Gradle (graphql-datetime-spring-boot-common)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-common,') }} @@ -330,6 +446,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-spring-boot-common: name: "Gradle · Gradle (graphql-datetime-spring-boot-common)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-common,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -343,6 +465,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-starter,') }} @@ -356,6 +484,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-starter,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -369,6 +503,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-java-datetime: name: "Gradle · Gradle (graphql-java-datetime)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-java-datetime,') }} @@ -382,6 +522,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-java-datetime: name: "Gradle · Gradle (graphql-java-datetime)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-java-datetime,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -395,6 +541,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-dgs-webmvc: name: "Gradle · Gradle (samples/dgs-webmvc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-dgs-webmvc,') }} @@ -408,6 +560,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-dgs-webmvc: name: "Gradle · Gradle (samples/dgs-webmvc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-dgs-webmvc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -421,6 +579,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-kickstart-webflux: name: "Gradle · Gradle (samples/kickstart-webflux)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webflux,') }} @@ -434,6 +598,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-kickstart-webflux: name: "Gradle · Gradle (samples/kickstart-webflux)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webflux,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -447,6 +617,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-kickstart-webmvc: name: "Gradle · Gradle (samples/kickstart-webmvc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webmvc,') }} @@ -460,6 +636,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-kickstart-webmvc: name: "Gradle · Gradle (samples/kickstart-webmvc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webmvc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -473,6 +655,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-spring-boot-webmvc: name: "Gradle · Gradle (samples/spring-boot-webmvc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-spring-boot-webmvc,') }} @@ -486,6 +674,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-spring-boot-webmvc: name: "Gradle · Gradle (samples/spring-boot-webmvc)" if: ${{ always() && needs.plan.result == 'success' && needs.policy.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-spring-boot-webmvc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} @@ -499,6 +693,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml ci-required: name: ci-required if: ${{ always() }} @@ -535,17 +735,10 @@ jobs: selected=",$SELECTED_UNITS," if [[ "$selected" == *",gradle,"* ]]; then result="$(result_for_job github-gradle)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle)" case "$result" in @@ -555,7 +748,7 @@ jobs: fi if [[ "$selected" == *",gradle,"* ]]; then result="$(result_for_job velnor-gradle)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle did not pass: $result" >&2; exit 1 ;; @@ -575,17 +768,10 @@ jobs: fi if [[ "$selected" == *",gradle-buildsrc,"* ]]; then result="$(result_for_job github-gradle-buildsrc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-buildsrc)" case "$result" in @@ -595,7 +781,7 @@ jobs: fi if [[ "$selected" == *",gradle-buildsrc,"* ]]; then result="$(result_for_job velnor-gradle-buildsrc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; @@ -615,17 +801,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-autoconfigure,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-dgs-autoconfigure)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-dgs-autoconfigure)" case "$result" in @@ -635,7 +814,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-autoconfigure,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-dgs-autoconfigure)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; @@ -655,17 +834,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-starter,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-dgs-starter)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-dgs-starter)" case "$result" in @@ -675,7 +847,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-starter,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-dgs-starter)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; @@ -695,17 +867,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-kickstart-spring-boot-starter,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-kickstart-spring-boot-starter)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-kickstart-spring-boot-starter)" case "$result" in @@ -715,7 +880,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-kickstart-spring-boot-starter,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-kickstart-spring-boot-starter)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; @@ -735,17 +900,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-autoconfigure,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-spring-boot-autoconfigure)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-spring-boot-autoconfigure)" case "$result" in @@ -755,7 +913,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-autoconfigure,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-spring-boot-autoconfigure)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; @@ -775,17 +933,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-common,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-spring-boot-common)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-spring-boot-common)" case "$result" in @@ -795,7 +946,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-common,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-spring-boot-common)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; @@ -815,17 +966,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-starter,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-spring-boot-starter)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-spring-boot-starter)" case "$result" in @@ -835,7 +979,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-starter,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-spring-boot-starter)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; @@ -855,17 +999,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-java-datetime,"* ]]; then result="$(result_for_job github-gradle-graphql-java-datetime)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-java-datetime)" case "$result" in @@ -875,7 +1012,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-java-datetime,"* ]]; then result="$(result_for_job velnor-gradle-graphql-java-datetime)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; @@ -895,17 +1032,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-dgs-webmvc,"* ]]; then result="$(result_for_job github-gradle-samples-dgs-webmvc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-dgs-webmvc)" case "$result" in @@ -915,7 +1045,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-dgs-webmvc,"* ]]; then result="$(result_for_job velnor-gradle-samples-dgs-webmvc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; @@ -935,17 +1065,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webflux,"* ]]; then result="$(result_for_job github-gradle-samples-kickstart-webflux)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-kickstart-webflux)" case "$result" in @@ -955,7 +1078,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webflux,"* ]]; then result="$(result_for_job velnor-gradle-samples-kickstart-webflux)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; @@ -975,17 +1098,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webmvc,"* ]]; then result="$(result_for_job github-gradle-samples-kickstart-webmvc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-kickstart-webmvc)" case "$result" in @@ -995,7 +1111,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webmvc,"* ]]; then result="$(result_for_job velnor-gradle-samples-kickstart-webmvc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; @@ -1015,17 +1131,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-spring-boot-webmvc,"* ]]; then result="$(result_for_job github-gradle-samples-spring-boot-webmvc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-spring-boot-webmvc)" case "$result" in @@ -1035,7 +1144,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-spring-boot-webmvc,"* ]]; then result="$(result_for_job velnor-gradle-samples-spring-boot-webmvc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; diff --git a/.github/workflows/ci-policy.yml b/.github/workflows/ci-policy.yml index 444bb3e..bc90e41 100644 --- a/.github/workflows/ci-policy.yml +++ b/.github/workflows/ci-policy.yml @@ -4,6 +4,7 @@ name: Velnor workflow policy on: pull_request_target: types: [opened, synchronize, reopened] + workflow_dispatch: concurrency: group: policy-${{ github.repository }}-${{ github.event.pull_request.number || github.ref }} @@ -16,32 +17,43 @@ jobs: policy: name: Policy runs-on: ubuntu-24.04 - timeout-minutes: 10 + timeout-minutes: 20 + # Trust invariant: this job runs the base branch's validator against the + # audited tree under pull_request_target. It holds `contents: read` only, + # references no secrets, and its checkout persists no credentials, so + # building and running the tree's declared generator here is no more + # privileged than the pull_request lanes that already build the tree. permissions: contents: read steps: - - name: Checkout caller workflow data + - name: Checkout repository history uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: - repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }} - ref: ${{ github.event.pull_request.head.sha || github.sha }} path: policy-checkout - sparse-checkout: | - .github/workflows - .github-gen - sparse-checkout-cone-mode: true - fetch-depth: 1 + fetch-depth: 0 persist-credentials: false - # Static policy validation only; fork head checkout is intentional. - allow-unsafe-pr-checkout: true + - name: Check out audited head + working-directory: policy-checkout + env: + HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }} + HEAD_REPOSITORY: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + run: | + set -euo pipefail + if ! git cat-file -e "$HEAD_SHA^{commit}" 2>/dev/null; then + git fetch --no-tags "$GITHUB_SERVER_URL/$HEAD_REPOSITORY" "$HEAD_SHA" + fi + git checkout --quiet --detach "$HEAD_SHA" + - name: Bound the Mr. Boxington store + shell: bash + run: echo "MBX_GC_MAX_SIZE=12GiB" >> "$GITHUB_ENV" - name: Set up Mr. Boxington uses: jdx/mr-boxington-action@7234d3dd1a6ca8f6c381eea8e4dfb03f18fcf777 # v1.3.0 with: backend: github - version: 1.8.3 - cache-key: velnor-policy-mbx-1.8.3-${{ runner.os }}-${{ runner.arch }}-e6fabca85499be62f939243d4452438449b69c53 + version: 1.11.1 + cache-key: velnor-policy-mbx-1.11.1-${{ runner.os }}-${{ runner.arch }}-e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 restore-keys: | - velnor-policy-mbx-1.8.3-${{ runner.os }}-${{ runner.arch }}- + velnor-policy-mbx-1.11.1-${{ runner.os }}-${{ runner.arch }}- - name: Install pinned Velnor workflow runtime env: CARGO_HOME: ${{ runner.temp }}/velnor-workflow-cargo-home @@ -59,13 +71,41 @@ jobs: cargo install \ --locked \ --git https://github.com/tailrocks/velnor \ - --rev e6fabca85499be62f939243d4452438449b69c53 \ + --rev e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 \ --root "$VELNOR_WORKFLOW_ROOT" \ velnor-workflow \ --bin velnor-workflow echo "$VELNOR_WORKFLOW_ROOT/bin" >> "$GITHUB_PATH" + - name: Resolve required status checks + env: + GH_TOKEN: ${{ github.token }} + DEFAULT_BRANCH: main + run: | + set -euo pipefail + contexts="$(gh api "repos/$GITHUB_REPOSITORY/rulesets?includes_parents=true" \ + | jq -r '.[] | select(.target == "branch" and .enforcement == "active") | .id' \ + | while read -r id; do gh api "repos/$GITHUB_REPOSITORY/rulesets/$id"; done \ + | jq -r --arg branch "refs/heads/$DEFAULT_BRANCH" 'select(.conditions.ref_name.include | any(. == "~DEFAULT_BRANCH" or . == "~ALL" or . == $branch)) | .rules[] | select(.type == "required_status_checks") | .parameters.required_status_checks[].context' \ + | sort -u | paste -sd, -)" + echo "RULESET_CONTEXTS=$contexts" >> "$GITHUB_ENV" - name: Enforce workflow policy env: WORKFLOW_ROOT: ${{ github.workspace }}/policy-checkout - VELNOR_WORKFLOW_POLICY_REVISION: e6fabca85499be62f939243d4452438449b69c53 - run: velnor-workflow policy --workflow-root "$WORKFLOW_ROOT" + HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }} + BASE_SHA: ${{ github.event.pull_request.base.sha || github.sha }} + VELNOR_WORKFLOW_POLICY_REVISION: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 + run: | + set -euo pipefail + velnor-workflow policy \ + --workflow-root "$WORKFLOW_ROOT" \ + --head-sha "$HEAD_SHA" \ + --base-sha "$BASE_SHA" \ + --ruleset-contexts "$RULESET_CONTEXTS" + - name: Set up actionlint + uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0 + with: + install_args: actionlint@1.7.12 + cache: false + - name: Lint caller workflows + working-directory: policy-checkout + run: mise exec actionlint@1.7.12 -- actionlint diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml index 90ecb79..35bde1b 100644 --- a/.github/workflows/ci-pr.yml +++ b/.github/workflows/ci-pr.yml @@ -57,11 +57,11 @@ jobs: persist-credentials: false - name: Set up Velnor workflow runtime if: ${{ runner.environment == 'github-hosted' }} - uses: tailrocks/velnor/.github/actions/setup-velnor-workflow@e6fabca85499be62f939243d4452438449b69c53 + uses: tailrocks/velnor/.github/actions/setup-velnor-workflow@e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 with: - rev: e6fabca85499be62f939243d4452438449b69c53 + rev: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 - name: Set trusted workflow policy revision - run: echo "VELNOR_WORKFLOW_POLICY_REVISION=e6fabca85499be62f939243d4452438449b69c53" >> "$GITHUB_ENV" + run: echo "VELNOR_WORKFLOW_POLICY_REVISION=e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91" >> "$GITHUB_ENV" - name: Select affected units id: plan env: @@ -78,7 +78,7 @@ jobs: - name: Prepare Velnor workflow runtime shell: bash env: - EXPECTED_REVISION: e6fabca85499be62f939243d4452438449b69c53 + EXPECTED_REVISION: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 run: | set -euo pipefail stage="$RUNNER_TEMP/velnor-workflow-runtime" @@ -87,11 +87,16 @@ jobs: src="$(command -v velnor-workflow)" install -m 0755 "$src" "$stage/velnor-workflow" digest="$(sha256sum "$stage/velnor-workflow" | awk '{print $1}')" - jq -n --arg repository "$GITHUB_REPOSITORY" --arg revision "$EXPECTED_REVISION" --arg head_branch "${{ github.ref_name }}" --arg platform "${{ runner.os }}-${{ runner.arch }}" --arg run_id "$GITHUB_RUN_ID" --arg job_id "${{ github.job }}" --arg binary_sha256 "$digest" '{repository: $repository, revision: $revision, head_branch: $head_branch, platform: $platform, run_id: $run_id, job_id: $job_id, binary_sha256: $binary_sha256}' > "$stage/manifest.json" + policy_src="${VELNOR_WORKFLOW_PINNED_BINARY:-$src}" + install -m 0755 "$policy_src" "$stage/velnor-workflow-policy" + policy_revision="$("$stage/velnor-workflow-policy" --revision)" + [[ "$policy_revision" == "$EXPECTED_REVISION" ]] || { echo "::error::policy runtime reports revision $policy_revision, expected $EXPECTED_REVISION" >&2; exit 1; } + policy_digest="$(sha256sum "$stage/velnor-workflow-policy" | awk '{print $1}')" + jq -n --arg repository "$GITHUB_REPOSITORY" --arg revision "$EXPECTED_REVISION" --arg head_branch "${{ github.ref_name }}" --arg platform "${{ runner.os }}-${{ runner.arch }}" --arg run_id "$GITHUB_RUN_ID" --arg job_id "${{ github.job }}" --arg binary_sha256 "$digest" --arg policy_revision "$policy_revision" --arg policy_binary_sha256 "$policy_digest" '{repository: $repository, revision: $revision, head_branch: $head_branch, platform: $platform, run_id: $run_id, job_id: $job_id, binary_sha256: $binary_sha256, policy_revision: $policy_revision, policy_binary_sha256: $policy_binary_sha256}' > "$stage/manifest.json" - name: Publish Velnor workflow runtime uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: velnor-workflow-runtime-e6fabca85499be62f939243d4452438449b69c53-${{ runner.os }}-${{ runner.arch }} + name: velnor-workflow-runtime-e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91-${{ runner.os }}-${{ runner.arch }} path: ${{ runner.temp }}/velnor-workflow-runtime if-no-files-found: error retention-days: 7 @@ -108,7 +113,6 @@ jobs: name: "Gradle · Gradle" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle @@ -118,11 +122,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle: name: "Gradle · Gradle" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle @@ -132,11 +141,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-buildsrc: name: "Gradle · Gradle (buildSrc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-buildsrc,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-buildsrc @@ -146,11 +160,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + buildSrc/gradle/wrapper/gradle-wrapper.properties + buildSrc/gradle/libs.versions.toml velnor-gradle-buildsrc: name: "Gradle · Gradle (buildSrc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-buildsrc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-buildsrc @@ -160,11 +179,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + buildSrc/gradle/wrapper/gradle-wrapper.properties + buildSrc/gradle/libs.versions.toml github-gradle-graphql-datetime-dgs-autoconfigure: name: "Gradle · Gradle (graphql-datetime-dgs-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-autoconfigure,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-dgs-autoconfigure @@ -174,11 +198,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-dgs-autoconfigure: name: "Gradle · Gradle (graphql-datetime-dgs-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-autoconfigure,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-dgs-autoconfigure @@ -188,11 +217,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-dgs-starter: name: "Gradle · Gradle (graphql-datetime-dgs-starter)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-starter,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-dgs-starter @@ -202,11 +236,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-dgs-starter: name: "Gradle · Gradle (graphql-datetime-dgs-starter)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-dgs-starter,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-dgs-starter @@ -216,11 +255,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-kickstart-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-kickstart-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-kickstart-spring-boot-starter,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-kickstart-spring-boot-starter @@ -230,11 +274,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-kickstart-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-kickstart-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-kickstart-spring-boot-starter,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-kickstart-spring-boot-starter @@ -244,11 +293,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-spring-boot-autoconfigure: name: "Gradle · Gradle (graphql-datetime-spring-boot-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-autoconfigure,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-spring-boot-autoconfigure @@ -258,11 +312,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-spring-boot-autoconfigure: name: "Gradle · Gradle (graphql-datetime-spring-boot-autoconfigure)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-autoconfigure,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-spring-boot-autoconfigure @@ -272,11 +331,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-spring-boot-common: name: "Gradle · Gradle (graphql-datetime-spring-boot-common)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-common,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-spring-boot-common @@ -286,11 +350,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-spring-boot-common: name: "Gradle · Gradle (graphql-datetime-spring-boot-common)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-common,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-spring-boot-common @@ -300,11 +369,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-datetime-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-starter,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-spring-boot-starter @@ -314,11 +388,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-datetime-spring-boot-starter: name: "Gradle · Gradle (graphql-datetime-spring-boot-starter)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-datetime-spring-boot-starter,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-datetime-spring-boot-starter @@ -328,11 +407,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-graphql-java-datetime: name: "Gradle · Gradle (graphql-java-datetime)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-java-datetime,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-java-datetime @@ -342,11 +426,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-graphql-java-datetime: name: "Gradle · Gradle (graphql-java-datetime)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-graphql-java-datetime,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-graphql-java-datetime @@ -356,11 +445,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-dgs-webmvc: name: "Gradle · Gradle (samples/dgs-webmvc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-dgs-webmvc,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-dgs-webmvc @@ -370,11 +464,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-dgs-webmvc: name: "Gradle · Gradle (samples/dgs-webmvc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-dgs-webmvc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-dgs-webmvc @@ -384,11 +483,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-kickstart-webflux: name: "Gradle · Gradle (samples/kickstart-webflux)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webflux,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-kickstart-webflux @@ -398,11 +502,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-kickstart-webflux: name: "Gradle · Gradle (samples/kickstart-webflux)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webflux,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-kickstart-webflux @@ -412,11 +521,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-kickstart-webmvc: name: "Gradle · Gradle (samples/kickstart-webmvc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webmvc,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-kickstart-webmvc @@ -426,11 +540,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-kickstart-webmvc: name: "Gradle · Gradle (samples/kickstart-webmvc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-kickstart-webmvc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-kickstart-webmvc @@ -440,11 +559,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml github-gradle-samples-spring-boot-webmvc: name: "Gradle · Gradle (samples/spring-boot-webmvc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-spring-boot-webmvc,') }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-spring-boot-webmvc @@ -454,11 +578,16 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml velnor-gradle-samples-spring-boot-webmvc: name: "Gradle · Gradle (samples/spring-boot-webmvc)" if: ${{ always() && needs.plan.result == 'success' && contains(format(',{0},', needs.plan.outputs.units), ',gradle-samples-spring-boot-webmvc,') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} needs: [plan] - cache-mode: read uses: ./.github/workflows/ci-unit-gradle.yml with: unit: gradle-samples-spring-boot-webmvc @@ -468,6 +597,12 @@ jobs: full_units: ${{ needs.plan.outputs.full_units }} base_sha: ${{ needs.plan.outputs.base_sha }} head_sha: ${{ needs.plan.outputs.head_sha }} + cache_paths: | + ~/.gradle/caches + ~/.gradle/wrapper + cache_key_files: | + gradle/wrapper/gradle-wrapper.properties + gradle/libs.versions.toml ci-required: name: ci-required if: ${{ always() }} @@ -499,17 +634,10 @@ jobs: selected=",$SELECTED_UNITS," if [[ "$selected" == *",gradle,"* ]]; then result="$(result_for_job github-gradle)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle)" case "$result" in @@ -519,7 +647,7 @@ jobs: fi if [[ "$selected" == *",gradle,"* ]]; then result="$(result_for_job velnor-gradle)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle did not pass: $result" >&2; exit 1 ;; @@ -539,17 +667,10 @@ jobs: fi if [[ "$selected" == *",gradle-buildsrc,"* ]]; then result="$(result_for_job github-gradle-buildsrc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-buildsrc)" case "$result" in @@ -559,7 +680,7 @@ jobs: fi if [[ "$selected" == *",gradle-buildsrc,"* ]]; then result="$(result_for_job velnor-gradle-buildsrc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-buildsrc did not pass: $result" >&2; exit 1 ;; @@ -579,17 +700,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-autoconfigure,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-dgs-autoconfigure)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-dgs-autoconfigure)" case "$result" in @@ -599,7 +713,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-autoconfigure,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-dgs-autoconfigure)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-dgs-autoconfigure did not pass: $result" >&2; exit 1 ;; @@ -619,17 +733,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-starter,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-dgs-starter)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-dgs-starter)" case "$result" in @@ -639,7 +746,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-dgs-starter,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-dgs-starter)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-dgs-starter did not pass: $result" >&2; exit 1 ;; @@ -659,17 +766,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-kickstart-spring-boot-starter,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-kickstart-spring-boot-starter)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-kickstart-spring-boot-starter)" case "$result" in @@ -679,7 +779,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-kickstart-spring-boot-starter,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-kickstart-spring-boot-starter)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-kickstart-spring-boot-starter did not pass: $result" >&2; exit 1 ;; @@ -699,17 +799,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-autoconfigure,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-spring-boot-autoconfigure)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-spring-boot-autoconfigure)" case "$result" in @@ -719,7 +812,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-autoconfigure,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-spring-boot-autoconfigure)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-spring-boot-autoconfigure did not pass: $result" >&2; exit 1 ;; @@ -739,17 +832,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-common,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-spring-boot-common)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-spring-boot-common)" case "$result" in @@ -759,7 +845,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-common,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-spring-boot-common)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-spring-boot-common did not pass: $result" >&2; exit 1 ;; @@ -779,17 +865,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-starter,"* ]]; then result="$(result_for_job github-gradle-graphql-datetime-spring-boot-starter)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-datetime-spring-boot-starter)" case "$result" in @@ -799,7 +878,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-datetime-spring-boot-starter,"* ]]; then result="$(result_for_job velnor-gradle-graphql-datetime-spring-boot-starter)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-datetime-spring-boot-starter did not pass: $result" >&2; exit 1 ;; @@ -819,17 +898,10 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-java-datetime,"* ]]; then result="$(result_for_job github-gradle-graphql-java-datetime)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-graphql-java-datetime)" case "$result" in @@ -839,7 +911,7 @@ jobs: fi if [[ "$selected" == *",gradle-graphql-java-datetime,"* ]]; then result="$(result_for_job velnor-gradle-graphql-java-datetime)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-graphql-java-datetime did not pass: $result" >&2; exit 1 ;; @@ -859,17 +931,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-dgs-webmvc,"* ]]; then result="$(result_for_job github-gradle-samples-dgs-webmvc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-dgs-webmvc)" case "$result" in @@ -879,7 +944,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-dgs-webmvc,"* ]]; then result="$(result_for_job velnor-gradle-samples-dgs-webmvc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-dgs-webmvc did not pass: $result" >&2; exit 1 ;; @@ -899,17 +964,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webflux,"* ]]; then result="$(result_for_job github-gradle-samples-kickstart-webflux)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-kickstart-webflux)" case "$result" in @@ -919,7 +977,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webflux,"* ]]; then result="$(result_for_job velnor-gradle-samples-kickstart-webflux)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-kickstart-webflux did not pass: $result" >&2; exit 1 ;; @@ -939,17 +997,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webmvc,"* ]]; then result="$(result_for_job github-gradle-samples-kickstart-webmvc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-kickstart-webmvc)" case "$result" in @@ -959,7 +1010,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-kickstart-webmvc,"* ]]; then result="$(result_for_job velnor-gradle-samples-kickstart-webmvc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-kickstart-webmvc did not pass: $result" >&2; exit 1 ;; @@ -979,17 +1030,10 @@ jobs: fi if [[ "$selected" == *",gradle-samples-spring-boot-webmvc,"* ]]; then result="$(result_for_job github-gradle-samples-spring-boot-webmvc)" - if [[ "$FORK_PR" == true && false ]]; then - case "$result" in - success|skipped) ;; - *) echo "selected CI job github-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; - esac - else - case "$result" in - success) ;; - *) echo "selected CI job github-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; - esac - fi + case "$result" in + success) ;; + *) echo "selected CI job github-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; + esac else result="$(result_for_job github-gradle-samples-spring-boot-webmvc)" case "$result" in @@ -999,7 +1043,7 @@ jobs: fi if [[ "$selected" == *",gradle-samples-spring-boot-webmvc,"* ]]; then result="$(result_for_job velnor-gradle-samples-spring-boot-webmvc)" - if [[ "$FORK_PR" == true && true ]]; then + if [[ "$FORK_PR" == true ]]; then case "$result" in success|skipped) ;; *) echo "selected CI job velnor-gradle-samples-spring-boot-webmvc did not pass: $result" >&2; exit 1 ;; diff --git a/.github/workflows/ci-unit-gradle.yml b/.github/workflows/ci-unit-gradle.yml index 594481e..8d12930 100644 --- a/.github/workflows/ci-unit-gradle.yml +++ b/.github/workflows/ci-unit-gradle.yml @@ -24,11 +24,83 @@ on: lane: required: true type: string + mise_tools: + required: false + type: string + default: "" + mise_runner: + required: false + type: boolean + default: false + mbx_compat: + required: false + type: string + default: "" + mbx_dependency_files: + required: false + type: string + default: "" + mbx_freshness_files: + required: false + type: string + default: "" + cargo_bin_tools: + required: false + type: string + default: "" + tool_version: + required: false + type: string + default: "" + node_cache_dependency_path: + required: false + type: string + default: "" + cache_paths: + required: false + type: string + default: "" + cache_key_files: + required: false + type: string + default: "" + seed_compat: + required: false + type: string + default: "" + seed_dependency_files: + required: false + type: string + default: "" + seed_freshness_files: + required: false + type: string + default: "" + cargo_root: + required: false + type: string + default: "" + cargo_fetch_skip_when_warm: + required: false + type: boolean + default: false + cargo_net_offline: + required: false + type: boolean + default: false + host_warm_layers: + required: false + type: string + default: "" + policy_runtime: + required: false + type: boolean + default: false jobs: verify-github: name: GitHub - if: ${{ inputs.lane == 'github' && (contains(format(',{0},', inputs.selected_units), ',gradle,') || contains(format(',{0},', inputs.selected_units), ',gradle-buildsrc,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-dgs-autoconfigure,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-dgs-starter,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-kickstart-spring-boot-starter,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-spring-boot-autoconfigure,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-spring-boot-common,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-spring-boot-starter,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-java-datetime,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-dgs-webmvc,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-kickstart-webflux,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-kickstart-webmvc,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-spring-boot-webmvc,')) && (github.event_name == 'pull_request' || (github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'schedule')) || (github.event_name == 'workflow_dispatch' && (github.event.inputs.runner == 'github' || github.event.inputs.runner == 'both' || github.event.inputs.runner == ''))) }} + if: ${{ inputs.lane == 'github' && contains(format(',{0},', inputs.selected_units), format(',{0},', inputs.unit)) && (github.event_name == 'pull_request' || (github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'schedule')) || (github.event_name == 'workflow_dispatch' && (github.event.inputs.runner == 'github' || github.event.inputs.runner == 'both' || github.event.inputs.runner == ''))) }} runs-on: ubuntu-24.04 timeout-minutes: 45 steps: @@ -49,30 +121,38 @@ jobs: with: persist-credentials: false ref: ${{ inputs.head_sha }} - - name: Set up Velnor workflow runtime - if: ${{ runner.environment == 'github-hosted' }} - name: Download Velnor workflow runtime uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: velnor-workflow-runtime-e6fabca85499be62f939243d4452438449b69c53-${{ runner.os }}-${{ runner.arch }} + name: velnor-workflow-runtime-e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91-${{ runner.os }}-${{ runner.arch }} path: .velnor-workflow-runtime - name: Verify Velnor workflow runtime shell: bash env: - EXPECTED_REVISION: e6fabca85499be62f939243d4452438449b69c53 + EXPECTED_REVISION: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 run: | set -euo pipefail manifest=.velnor-workflow-runtime/manifest.json - jq -e --arg revision "$EXPECTED_REVISION" --arg repository "$GITHUB_REPOSITORY" --arg platform "${RUNNER_OS}-${RUNNER_ARCH}" --arg run_id "$GITHUB_RUN_ID" '.revision == $revision and .repository == $repository and .platform == $platform and .run_id == $run_id and (.run_id | test("^[0-9]+$")) and .job_id != "" and (.binary_sha256 | test("^[0-9a-f]{64}$"))' "$manifest" >/dev/null + jq -e --arg revision "$EXPECTED_REVISION" --arg repository "$GITHUB_REPOSITORY" --arg platform "${RUNNER_OS}-${RUNNER_ARCH}" --arg run_id "$GITHUB_RUN_ID" '.revision == $revision and .repository == $repository and .platform == $platform and .run_id == $run_id and (.run_id | test("^[0-9]+$")) and .job_id != "" and (.binary_sha256 | test("^[0-9a-f]{64}$")) and .policy_revision == $revision and (.policy_binary_sha256 | test("^[0-9a-f]{64}$"))' "$manifest" >/dev/null expected="$(jq -er '.binary_sha256' "$manifest")" actual="$(sha256sum .velnor-workflow-runtime/velnor-workflow | awk '{print $1}')" [[ "$actual" == "$expected" ]] || { echo "::error::runtime digest mismatch" >&2; exit 1; } + expected="$(jq -er '.policy_binary_sha256' "$manifest")" + actual="$(sha256sum .velnor-workflow-runtime/velnor-workflow-policy | awk '{print $1}')" + [[ "$actual" == "$expected" ]] || { echo "::error::policy runtime digest mismatch" >&2; exit 1; } - name: Add Velnor workflow runtime to PATH shell: bash + env: + EXPECTED_REVISION: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 run: | set -euo pipefail - install -Dm0755 .velnor-workflow-runtime/velnor-workflow "$HOME/.cargo/bin/velnor-workflow" - echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + home="$RUNNER_TEMP/velnor-workflow-runtime-artifact" + install -Dm0755 .velnor-workflow-runtime/velnor-workflow "$home/bin/velnor-workflow" + install -Dm0755 .velnor-workflow-runtime/velnor-workflow-policy "$home/bin/velnor-workflow-policy" + reported="$("$home/bin/velnor-workflow-policy" --revision)" + [[ "$reported" == "$EXPECTED_REVISION" ]] || { echo "::error::policy runtime reports revision $reported, expected $EXPECTED_REVISION" >&2; exit 1; } + echo "$home/bin" >> "$GITHUB_PATH" + echo "VELNOR_WORKFLOW_PINNED_BINARY=$home/bin/velnor-workflow-policy" >> "$GITHUB_ENV" - name: Mark runner setup end if: always() run: | @@ -117,124 +197,9 @@ jobs: fi fi - name: Set up Gradle - if: ${{ inputs.unit == 'gradle' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore Gradle cache - if: ${{ inputs.unit == 'gradle' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run Gradle checks - if: ${{ inputs.unit == 'gradle' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save Gradle cache - if: ${{ inputs.unit == 'gradle' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-buildsrc' }} uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -245,19 +210,17 @@ jobs: chmod 0444 "$marker" 2>/dev/null || true fi fi - - name: Restore "Gradle (buildSrc)" cache - if: ${{ inputs.unit == 'gradle-buildsrc' }} + - name: Restore unit cache id: cache uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('buildSrc/gradle/wrapper/gradle-wrapper.properties', 'buildSrc/gradle/libs.versions.toml') }} + ${{ inputs.cache_paths }} + key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles(inputs.cache_key_files) }} restore-keys: | ci-${{ runner.os }}-${{ runner.arch }}-gradle- - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -269,7 +232,7 @@ jobs: fi fi - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -280,8 +243,7 @@ jobs: chmod 0444 "$marker" 2>/dev/null || true fi fi - - name: Run "Gradle (buildSrc)" checks - if: ${{ inputs.unit == 'gradle-buildsrc' }} + - name: Run unit checks env: CI_SCOPE: ${{ inputs.scope }} CI_UNIT_ID: ${{ inputs.unit }} @@ -315,16 +277,15 @@ jobs: fi fi exit $rc - - name: Save "Gradle (buildSrc)" cache - if: ${{ inputs.unit == 'gradle-buildsrc' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} + - name: Save unit cache + if: always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true' uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('buildSrc/gradle/wrapper/gradle-wrapper.properties', 'buildSrc/gradle/libs.versions.toml') }} + ${{ inputs.cache_paths }} + key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles(inputs.cache_key_files) }} - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -336,133 +297,98 @@ jobs: fi fi - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} + if: always() env: VELNOR_CI_LANE: github VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} uses: ./.github/actions/report-velnor-ci-outcomes with: - job_label: gradle-buildsrc - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} + job_label: ${{ inputs.unit }} + + verify-velnor: + name: Velnor + if: ${{ inputs.lane == 'velnor' && contains(format(',{0},', inputs.selected_units), format(',{0},', inputs.unit)) && (github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && (github.event.inputs.runner == 'velnor' || github.event.inputs.runner == 'both' || github.event.inputs.runner == '')))) }} + runs-on: [self-hosted, velnor-target-mvp] + timeout-minutes: 45 + steps: + - name: Mark CI job start + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" + marker="$timing_dir/JOB_STARTED" if [[ ! -e "$marker" ]]; then if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then chmod 0444 "$marker" 2>/dev/null || true fi fi - - name: Restore "Gradle (graphql-datetime-dgs-autoconfigure)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} + persist-credentials: false + ref: ${{ inputs.head_sha }} + - name: Velnor runner identity + shell: bash run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} + set -euo pipefail + { + echo '## Velnor runner identity' + echo + echo "- Host: ${VELNOR_HOST:-unset}" + echo "- Instance: ${VELNOR_INSTANCE:-unset}" + echo "- Slot: ${VELNOR_SLOT:-unset}" + echo "- GitHub runner: ${RUNNER_NAME:-unset}" + echo "- OS/arch: ${RUNNER_OS:-unset}/${RUNNER_ARCH:-unset}" + echo "- Execution backend: ${VELNOR_EXECUTION_BACKEND:-unset}" + echo "- Velnor version: ${VELNOR_MANIFEST_VERSION:-${VELNOR_SOURCE_SHA:-unset}}" + } | tee -a "${GITHUB_STEP_SUMMARY:-/dev/null}" + - name: Mark runner setup end + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" + marker="$timing_dir/RUNNER_SETUP_ENDED" if [[ ! -e "$marker" ]]; then if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then chmod 0444 "$marker" 2>/dev/null || true fi fi - - name: Run "Gradle (graphql-datetime-dgs-autoconfigure)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' }} + - name: Materialize Velnor CI selection + shell: bash env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" + SELECTION_BASE_SHA: ${{ inputs.base_sha }} + SELECTION_HEAD_SHA: ${{ inputs.head_sha }} + SELECTION_SCOPE: ${{ inputs.scope }} + SELECTION_UNITS: ${{ inputs.selected_units }} + SELECTION_FULL_UNITS: ${{ inputs.full_units }} run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (graphql-datetime-dgs-autoconfigure)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} + set -euo pipefail + mkdir -p .velnor-ci-selection + { + printf 'version=1\n' + printf 'base_sha=%s\n' "$SELECTION_BASE_SHA" + printf 'head_sha=%s\n' "$SELECTION_HEAD_SHA" + printf 'scope=%s\n' "$SELECTION_SCOPE" + printf 'units=%s\n' "$SELECTION_UNITS" + printf 'full_units=%s\n' "$SELECTION_FULL_UNITS" + } > .velnor-ci-selection/velnor-ci-selection + - name: Mark selection transport end + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" + marker="$timing_dir/SELECTION_ENDED" if [[ ! -e "$marker" ]]; then if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then chmod 0444 "$marker" 2>/dev/null || true fi fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-dgs-autoconfigure - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -473,19 +399,17 @@ jobs: chmod 0444 "$marker" 2>/dev/null || true fi fi - - name: Restore "Gradle (graphql-datetime-dgs-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' }} + - name: Restore unit cache id: cache uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} + ${{ inputs.cache_paths }} + key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles(inputs.cache_key_files) }} restore-keys: | ci-${{ runner.os }}-${{ runner.arch }}-gradle- - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -497,7 +421,7 @@ jobs: fi fi - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -508,8 +432,7 @@ jobs: chmod 0444 "$marker" 2>/dev/null || true fi fi - - name: Run "Gradle (graphql-datetime-dgs-starter)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' }} + - name: Run unit checks env: CI_SCOPE: ${{ inputs.scope }} CI_UNIT_ID: ${{ inputs.unit }} @@ -543,16 +466,8 @@ jobs: fi fi exit $rc - - name: Save "Gradle (graphql-datetime-dgs-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} + if: always() run: | timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" umask 077 @@ -564,2431 +479,10 @@ jobs: fi fi - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} + if: always() env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} + VELNOR_CI_LANE: velnor uses: ./.github/actions/report-velnor-ci-outcomes with: - job_label: gradle-graphql-datetime-dgs-starter - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-kickstart-spring-boot-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-kickstart-spring-boot-starter)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (graphql-datetime-kickstart-spring-boot-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-kickstart-spring-boot-starter - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-spring-boot-autoconfigure)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-spring-boot-autoconfigure)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (graphql-datetime-spring-boot-autoconfigure)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-spring-boot-autoconfigure - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-spring-boot-common)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-spring-boot-common)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (graphql-datetime-spring-boot-common)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-spring-boot-common - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-spring-boot-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-spring-boot-starter)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (graphql-datetime-spring-boot-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-spring-boot-starter - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-java-datetime)" cache - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-java-datetime)" checks - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (graphql-java-datetime)" cache - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-java-datetime - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/dgs-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/dgs-webmvc)" checks - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (samples/dgs-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-dgs-webmvc - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/kickstart-webflux)" cache - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/kickstart-webflux)" checks - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (samples/kickstart-webflux)" cache - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-kickstart-webflux - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/kickstart-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/kickstart-webmvc)" checks - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (samples/kickstart-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-kickstart-webmvc - - name: Set up Gradle - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' }} - uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/spring-boot-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/spring-boot-webmvc)" checks - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Save "Gradle (samples/spring-boot-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always() && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main')) && steps.cache.outputs.cache-hit != 'true') }} - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - env: - VELNOR_CI_LANE: github - VELNOR_CACHE_CARGO_PRIMARY: ${{ steps.cache.outputs.cache-primary-key }} - VELNOR_CACHE_CARGO_MATCHED: ${{ steps.cache.outputs.cache-matched-key }} - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-spring-boot-webmvc - verify-velnor: - name: Velnor - if: ${{ inputs.lane == 'velnor' && (contains(format(',{0},', inputs.selected_units), ',gradle,') || contains(format(',{0},', inputs.selected_units), ',gradle-buildsrc,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-dgs-autoconfigure,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-dgs-starter,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-kickstart-spring-boot-starter,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-spring-boot-autoconfigure,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-spring-boot-common,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-datetime-spring-boot-starter,') || contains(format(',{0},', inputs.selected_units), ',gradle-graphql-java-datetime,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-dgs-webmvc,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-kickstart-webflux,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-kickstart-webmvc,') || contains(format(',{0},', inputs.selected_units), ',gradle-samples-spring-boot-webmvc,')) && (github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && (github.event.inputs.runner == 'velnor' || github.event.inputs.runner == 'both' || github.event.inputs.runner == '')))) }} - runs-on: [self-hosted, velnor-target-mvp] - timeout-minutes: 45 - steps: - - name: Mark CI job start - if: always() - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/JOB_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Checkout - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - ref: ${{ inputs.head_sha }} - - name: Velnor runner identity - shell: bash - run: | - set -euo pipefail - { - echo '## Velnor runner identity' - echo - echo "- Host: ${VELNOR_HOST:-unset}" - echo "- Instance: ${VELNOR_INSTANCE:-unset}" - echo "- Slot: ${VELNOR_SLOT:-unset}" - echo "- GitHub runner: ${RUNNER_NAME:-unset}" - echo "- OS/arch: ${RUNNER_OS:-unset}/${RUNNER_ARCH:-unset}" - echo "- Execution backend: ${VELNOR_EXECUTION_BACKEND:-unset}" - echo "- Velnor version: ${VELNOR_MANIFEST_VERSION:-${VELNOR_SOURCE_SHA:-unset}}" - } | tee -a "${GITHUB_STEP_SUMMARY:-/dev/null}" - - name: Mark runner setup end - if: always() - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/RUNNER_SETUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Materialize Velnor CI selection - shell: bash - env: - SELECTION_BASE_SHA: ${{ inputs.base_sha }} - SELECTION_HEAD_SHA: ${{ inputs.head_sha }} - SELECTION_SCOPE: ${{ inputs.scope }} - SELECTION_UNITS: ${{ inputs.selected_units }} - SELECTION_FULL_UNITS: ${{ inputs.full_units }} - run: | - set -euo pipefail - mkdir -p .velnor-ci-selection - { - printf 'version=1\n' - printf 'base_sha=%s\n' "$SELECTION_BASE_SHA" - printf 'head_sha=%s\n' "$SELECTION_HEAD_SHA" - printf 'scope=%s\n' "$SELECTION_SCOPE" - printf 'units=%s\n' "$SELECTION_UNITS" - printf 'full_units=%s\n' "$SELECTION_FULL_UNITS" - } > .velnor-ci-selection/velnor-ci-selection - - name: Mark selection transport end - if: always() - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/SELECTION_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore Gradle cache - if: ${{ inputs.unit == 'gradle' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run Gradle checks - if: ${{ inputs.unit == 'gradle' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (buildSrc)" cache - if: ${{ inputs.unit == 'gradle-buildsrc' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('buildSrc/gradle/wrapper/gradle-wrapper.properties', 'buildSrc/gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (buildSrc)" checks - if: ${{ inputs.unit == 'gradle-buildsrc' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-buildsrc' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-buildsrc - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-dgs-autoconfigure)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-dgs-autoconfigure)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-autoconfigure' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-dgs-autoconfigure - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-dgs-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-dgs-starter)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-dgs-starter' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-dgs-starter - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-kickstart-spring-boot-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-kickstart-spring-boot-starter)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-kickstart-spring-boot-starter' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-kickstart-spring-boot-starter - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-spring-boot-autoconfigure)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-spring-boot-autoconfigure)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-autoconfigure' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-spring-boot-autoconfigure - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-spring-boot-common)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-spring-boot-common)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-common' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-spring-boot-common - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-datetime-spring-boot-starter)" cache - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-datetime-spring-boot-starter)" checks - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-datetime-spring-boot-starter' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-datetime-spring-boot-starter - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (graphql-java-datetime)" cache - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (graphql-java-datetime)" checks - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-graphql-java-datetime' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-graphql-java-datetime - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/dgs-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/dgs-webmvc)" checks - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-dgs-webmvc' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-dgs-webmvc - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/kickstart-webflux)" cache - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/kickstart-webflux)" checks - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-kickstart-webflux' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-kickstart-webflux - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/kickstart-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/kickstart-webmvc)" checks - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-kickstart-webmvc' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-kickstart-webmvc - - name: Mark tool bootstrap end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/TOOL_BOOTSTRAP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Restore "Gradle (samples/spring-boot-webmvc)" cache - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' }} - id: cache - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ci-${{ runner.os }}-${{ runner.arch }}-gradle-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }} - restore-keys: | - ci-${{ runner.os }}-${{ runner.arch }}-gradle- - - name: Mark cache prep end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CACHE_PREP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Mark cargo fetch end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CARGO_FETCH_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Run "Gradle (samples/spring-boot-webmvc)" checks - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' }} - env: - CI_SCOPE: ${{ inputs.scope }} - CI_UNIT_ID: ${{ inputs.unit }} - EVENT_NAME: ${{ github.event_name }} - BASE_SHA: ${{ inputs.base_sha }} - HEAD_SHA: ${{ inputs.head_sha }} - VELNOR_SELECTION_FILE: .velnor-ci-selection/velnor-ci-selection - MISE_AUTO_INSTALL: "false" - MISE_EXEC_AUTO_INSTALL: "false" - MISE_NOT_FOUND_AUTO_INSTALL: "false" - run: | - set -o pipefail - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_STARTED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - rc=0 - velnor-workflow run --config .github/ci/project.toml --scope "$CI_SCOPE" --unit "$CI_UNIT_ID" 2>&1 | tee "$RUNNER_TEMP/velnor-unit-log.txt" || rc=$? - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CHECKS_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - exit $rc - - name: Mark cleanup end - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - run: | - timing_dir="$RUNNER_TEMP/velnor-ci-timing-${GITHUB_RUN_ID:-unknown}-${GITHUB_RUN_ATTEMPT:-0}-${GITHUB_JOB:-unknown}" - umask 077 - mkdir -p "$timing_dir" - marker="$timing_dir/CLEANUP_ENDED" - if [[ ! -e "$marker" ]]; then - if (set -C; printf '%s\n' "$(date +%s)" > "$marker") 2>/dev/null; then - chmod 0444 "$marker" 2>/dev/null || true - fi - fi - - name: Report phase timings and cache outcomes - if: ${{ inputs.unit == 'gradle-samples-spring-boot-webmvc' && (always()) }} - env: - VELNOR_CI_LANE: velnor - uses: ./.github/actions/report-velnor-ci-outcomes - with: - job_label: gradle-samples-spring-boot-webmvc + job_label: ${{ inputs.unit }} + diff --git a/.github/workflows/maintenance.yml b/.github/workflows/maintenance.yml index 9d1c281..4ba60f0 100644 --- a/.github/workflows/maintenance.yml +++ b/.github/workflows/maintenance.yml @@ -79,7 +79,7 @@ jobs: run: | set -euo pipefail for workflow in ci-main.yml nightly.yml; do - if [[ "$(gh run list --workflow "$workflow" --status in_progress --limit 1 --jq 'length')" != "0" ]]; then + if [[ "$(gh run list --workflow "$workflow" --status in_progress --limit 1 --json databaseId --jq 'length')" != "0" ]]; then echo "skip=true" >> "$GITHUB_OUTPUT" echo "$workflow is in_progress; skipping cache retention" >> "$GITHUB_STEP_SUMMARY" exit 0 @@ -88,12 +88,12 @@ jobs: echo "skip=false" >> "$GITHUB_OUTPUT" - name: Set up Velnor workflow runtime if: ${{ steps.retention-gate.outputs.skip != 'true' && runner.environment == 'github-hosted' }} - uses: tailrocks/velnor/.github/actions/setup-velnor-workflow@e6fabca85499be62f939243d4452438449b69c53 + uses: tailrocks/velnor/.github/actions/setup-velnor-workflow@e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 with: - rev: e6fabca85499be62f939243d4452438449b69c53 + rev: e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91 - name: Set trusted workflow policy revision if: steps.retention-gate.outputs.skip != 'true' - run: echo "VELNOR_WORKFLOW_POLICY_REVISION=e6fabca85499be62f939243d4452438449b69c53" >> "$GITHUB_ENV" + run: echo "VELNOR_WORKFLOW_POLICY_REVISION=e05aee6de1d1614d752b4d1b1d26a49ac2c5ef91" >> "$GITHUB_ENV" - name: Sweep closed-PR merge-ref caches if: steps.retention-gate.outputs.skip != 'true' env: diff --git a/.github/workflows/publish-sonatype.yml b/.github/workflows/publish-sonatype.yml deleted file mode 100644 index e9de41c..0000000 --- a/.github/workflows/publish-sonatype.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Publish to Sonatype - -on: - push: - branches: - - main - -permissions: - contents: read - -jobs: - publish: - runs-on: ubuntu-latest - environment: Sonatype - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - - uses: actions/setup-java@v5 - with: - distribution: temurin - java-version: 17 - - name: Cache Gradle packages - uses: actions/cache@v6 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }} - restore-keys: ${{ runner.os }}-gradle - - name: Publish to Sonatype - run: ./publish-sonatype.sh