diff --git a/.github/actions/docker-tag-and-build/action.yml b/.github/actions/docker-tag-and-build/action.yml index 436bf8fd4..fac0ce565 100644 --- a/.github/actions/docker-tag-and-build/action.yml +++ b/.github/actions/docker-tag-and-build/action.yml @@ -30,7 +30,7 @@ runs: type=ref,event=branch - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: ${{ github.workspace }} file: ${{ inputs.dockerfile }} diff --git a/.github/actions/linux-build/action.yml b/.github/actions/linux-build/action.yml index 20bc9d1f5..2900e40d6 100644 --- a/.github/actions/linux-build/action.yml +++ b/.github/actions/linux-build/action.yml @@ -41,14 +41,21 @@ runs: steps: - name: echo cache key shell: bash - run: echo "Cache key -> ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}" + run: echo "Cache key -> ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}-${{ github.run_id }}" + # The primary key is unique per run (`-${{ github.run_id }}`) so every run + # saves a fresh cache. A static key would hit on itself on the second run + # and `actions/cache` would then skip the upload, freezing the cache after + # the first commit on a branch (and permanently on master). The restore-keys + # walk back from the most-recent cache on this branch to progressively + # broader fallbacks (branch -> pch variant -> modules variant -> compiler). - name: Cache uses: actions/cache@v4 with: path: ${{ github.workspace }}/var/ccache - key: ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }} + key: ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}-${{ github.run_id }} restore-keys: | + ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }}:${{ github.ref_name }}- ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:pch=${{ inputs.pch }} ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }} ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }} @@ -78,6 +85,8 @@ runs: shell: bash env: CCACHE_DIR: $GITHUB_WORKSPACE/var/ccache + # CCACHE_COMPRESSLEVEL=3: level 9 burns CPU for marginal size gains on a + # cache that never approaches max_size. run: | mkdir -p "$CCACHE_DIR" cat <> "$GITHUB_ENV" @@ -87,7 +96,7 @@ runs: CCACHE_MAXSIZE=5G CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime CCACHE_COMPRESS=1 - CCACHE_COMPRESSLEVEL=9 + CCACHE_COMPRESSLEVEL=3 CCACHE_COMPILERCHECK=content CCACHE_LOGFILE=${{ env.CCACHE_DIR }}/cache.debug CC=${{ inputs.CC }} diff --git a/.github/workflows/codestyle.yml b/.github/workflows/codestyle.yml index 643593a0c..640d2d7b0 100644 --- a/.github/workflows/codestyle.yml +++ b/.github/workflows/codestyle.yml @@ -10,6 +10,12 @@ on: - "!README.md" - "!docs/**" +concurrency: + # New commits on a PR cancel the still-running codestyle check on the old + # commit. github.ref is refs/pull//merge, so the group is stable per PR. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: triage: runs-on: ubuntu-latest diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index e770e0eae..7263820e3 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -56,7 +56,7 @@ jobs: - name: Login to Docker Hub if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} @@ -115,7 +115,7 @@ jobs: - name: Trigger acore-docker CI if: github.repository == 'azerothcore/azerothcore-wotlk' && github.ref_name == 'master' - uses: peter-evans/repository-dispatch@v2 + uses: peter-evans/repository-dispatch@v3 with: token: ${{ secrets.ACORE_DOCKER_REPO_ACCESS_TOKEN }} repository: azerothcore/acore-docker diff --git a/.github/workflows/macos_build.yml b/.github/workflows/macos_build.yml index 09ae976a2..cb0efefe8 100644 --- a/.github/workflows/macos_build.yml +++ b/.github/workflows/macos_build.yml @@ -9,7 +9,9 @@ on: - synchronize concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) + # One concurrency group per workflow + ref (matches the other build workflows). + # PRs cancel superseded runs; branch pushes are isolated by ref. + group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: @@ -35,9 +37,11 @@ jobs: uses: actions/cache@v4 with: path: ~/Library/Caches/ccache - key: ccache:${{ matrix.os }}:${{ github.ref_name }} + # Unique per run so the cache is re-saved every run instead of + # freezing on the first (a static key hits itself and skips upload). + key: ccache:${{ matrix.os }}:${{ github.ref_name }}-${{ github.run_id }} restore-keys: | - ccache:${{ matrix.os }}:${{ github.ref_name }} + ccache:${{ matrix.os }}:${{ github.ref_name }}- ccache:${{ matrix.os }} - name: reset ccache stats shell: bash diff --git a/.github/workflows/sql-codestyle.yml b/.github/workflows/sql-codestyle.yml index 4c21a8c9b..809a58d12 100644 --- a/.github/workflows/sql-codestyle.yml +++ b/.github/workflows/sql-codestyle.yml @@ -10,6 +10,12 @@ on: - "!README.md" - "!docs/**" +concurrency: + # New commits on a PR cancel the still-running codestyle check on the old + # commit. github.ref is refs/pull//merge, so the group is stable per PR. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: triage: runs-on: ubuntu-latest