diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9d62a0e..59cb58a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -21,9 +21,9 @@ jobs: - uses: actions/checkout@v7 - uses: actions/setup-java@v6 with: { java-version: '21', distribution: temurin } - - uses: github/codeql-action/init@v4.37.8 + - uses: github/codeql-action/init@v4 with: { languages: java, queries: +security-and-quality } - name: Build with Maven run: mvn --batch-mode --no-transfer-progress compile - - uses: github/codeql-action/analyze@v4.37.8 + - uses: github/codeql-action/analyze@v4 with: { category: "/language:java" } diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ee5bf0f..7709cb4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -24,10 +24,25 @@ on: # # cancel-in-progress is deliberately scoped to pull_request ONLY. A push to main or # to a v* tag is a release path: cancelling one midway could leave a partially -# published set of artifacts, so those always run to completion even if another push -# lands behind them. +# published set of artifacts. +# +# cancel-in-progress: false is NOT sufficient on its own to protect a release run. +# GitHub cancels a *pending* run whenever a newer run joins the same group behind an +# in-progress one -- that rule is independent of cancel-in-progress. So with a plain +# `workflow-ref` group, a queued `publish_to_central` dispatch on main could be +# silently dropped by a later push to main, both sharing `Publish-refs/heads/main`. +# Giving every non-PR run its own group (via the unique run_id) means such a run is +# never queued behind a sibling and therefore can never be cancelled, while PR runs +# still share a group per ref and supersede each other as intended. +# +# One-time effect when this expression changes: GitHub reads `concurrency` from the +# workflow file at each run's own ref, so a run started before the change sits in the +# old group and a run started after it sits in the new one. They are different groups, +# so the new push does NOT supersede the in-flight old run -- exactly once, on the +# commit that lands this. It self-heals from the next push on. Expect the same overlap +# when porting this to a sibling repo; it is not a sign the expression is wrong. concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'pull_request' && 'pr' || github.run_id }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} permissions: @@ -189,7 +204,7 @@ jobs: with: java-version: '21' distribution: temurin - - uses: gradle/actions/setup-gradle@v6.3.0 + - uses: gradle/actions/setup-gradle@v6 with: gradle-version: "9.6.1" - name: Sign a throwaway artifact via useInMemoryPgpKeys (BouncyCastle) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index dfe8425..4f838ef 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -43,6 +43,6 @@ jobs: retention-days: 5 - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@v4.37.8 + uses: github/codeql-action/upload-sarif@v4 with: sarif_file: results.sarif diff --git a/pom.xml b/pom.xml index 968b04d..174d429 100644 --- a/pom.xml +++ b/pom.xml @@ -34,8 +34,8 @@ SPDX-License-Identifier: Apache-2.0 0.14.0 1.0.1 4.2.2 - 3.10.0 - 2.96.0 + 3.10.1 + 2.97.0 4.10.4.0 7.7.4 1.14.0 @@ -318,7 +318,7 @@ SPDX-License-Identifier: Apache-2.0 org.pitest pitest-maven - 1.25.9 + 1.30.0 org.sonatype.central