diff --git a/.github/actions/linux-build/action.yml b/.github/actions/linux-build/action.yml index 4da8f39b9..9d6208a7e 100644 --- a/.github/actions/linux-build/action.yml +++ b/.github/actions/linux-build/action.yml @@ -39,6 +39,10 @@ inputs: runs: using: composite steps: + - name: echo cache key + shell: bash + run: echo "Cache key -> ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:${{ github.ref_name }}" + - name: Cache uses: actions/cache@v4 if: inputs.pch != 'true' @@ -46,9 +50,8 @@ runs: path: ${{ github.workspace }}/var/ccache # format # ccache:OS:CC_CXX:MODULES:GITHUB_REF:GITHUB_SHA - key: ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:${{ github.ref }}:${{ github.sha }} + key: ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:${{ github.ref_name }} restore-keys: | - ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }}:${{ github.ref }} ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }}:${{ inputs.modules }} ccache:${{ runner.os }}:${{ inputs.CC }}_${{ inputs.CXX }} @@ -73,12 +76,12 @@ runs: UBUNTU_VERSION="$(grep VERSION_ID /etc/os-release | cut -f2 -d\")" source /etc/os-release if [[ "$VERSION_CODENAME" == "jammy" ]]; then - if [[ "${{ inputs.cc }}" =~ "clang-" ]]; then - CLANG_VERSION="$(echo '${{ inputs.cc }}' | cut -f2 -d\-)" + if [[ "${{ inputs.CC }}" =~ "clang-" ]]; then + CLANG_VERSION="$(echo '${{ inputs.CC }}' | cut -f2 -d\-)" wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo add-apt-repository "deb http://apt.llvm.org/$VERSION_CODENAME/ llvm-toolchain-$VERSION_CODENAME-$CLANG_VERSION main" sudo apt-get -qq update - sudo apt-get -qq install '${{ inputs.cc }}' + sudo apt-get -qq install '${{ inputs.CC }}' fi fi @@ -87,19 +90,44 @@ runs: env: CCACHE_DIR: $GITHUB_WORKSPACE/var/ccache run: | - cat <> $GITHUB_ENV + mkdir -p "$CCACHE_DIR" + cat <> "$GITHUB_ENV" + CCACHE_BASEDIR=${GITHUB_WORKSPACE} CCACHE_DIR=${{ env.CCACHE_DIR }} - CCACHE_MAXSIZE=1000MB + CCACHE_HASHDIR=1 + CCACHE_MAXSIZE=5G CCACHE_SLOPPINESS=pch_defines,time_macros,include_file_mtime - CCACHE_CPP2=true CCACHE_COMPRESS=1 CCACHE_COMPRESSLEVEL=9 CCACHE_COMPILERCHECK=content - CCACHE_LOGFILE=$CCACHE_DIR/cache.debug + CCACHE_LOGFILE=${{ env.CCACHE_DIR }}/cache.debug CC=${{ inputs.CC }} CXX=${{ inputs.CXX }} EOF + - name: ccache config snapshot + shell: bash + run: | + echo "==== Effective ccache configuration ====" + ccache -p | egrep 'base_dir|hash_dir|compiler_check|sloppiness|max_size' || true + + echo + echo "==== Compiler info ====" + which ${{ inputs.CC }} && ${{ inputs.CC }} --version || true + which ${{ inputs.CXX }} && ${{ inputs.CXX }} --version || true + + echo + echo "==== Previous cache stats ====" + ccache -s || true + + echo + echo "==== Top cache results ====" + grep -o 'result: .*' "$CCACHE_DIR/cache.debug" 2>/dev/null | sort | uniq -c | sort -nr | head || true + + - name: reset ccache stats + shell: bash + run: ccache -z || true + - name: Configure shell: bash run: | @@ -107,6 +135,8 @@ runs: mkdir build cd build cmake "$GITHUB_WORKSPACE" \ + -DCMAKE_C_COMPILER="${{ inputs.CC }}" \ + -DCMAKE_CXX_COMPILER="${{ inputs.CXX }}" \ -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/env/dist" \ -DAPPS_BUILD="all" \ -DTOOLS_BUILD=${{ inputs.tools }} \ @@ -116,8 +146,8 @@ runs: -DCMAKE_BUILD_TYPE="Release" \ -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \ -DCMAKE_C_COMPILER_LAUNCHER="ccache" \ - -DCMAKE_C_FLAGS="-Werror ${{ startsWith(inputs.cc, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}} " \ - -DCMAKE_CXX_FLAGS="-Werror ${{ startsWith(inputs.cxx, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}}" \ + -DCMAKE_C_FLAGS="-Werror ${{ startsWith(inputs.CC, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}} -fdebug-prefix-map=${GITHUB_WORKSPACE}=." \ + -DCMAKE_CXX_FLAGS="-Werror ${{ startsWith(inputs.CXX, 'clang') && '-ferror-limit=' || '-fmax-errors=' }}${{inputs.maxerrors}} -fdebug-prefix-map=${GITHUB_WORKSPACE}=." \ -DBUILD_TESTING="ON" \ -DUSE_SCRIPTPCH=${{ inputs.pch == 'true' && 'ON' || '' }} \ -DUSE_COREPCH=${{ inputs.pch == 'true' && 'ON' || '' }} \ @@ -190,3 +220,7 @@ runs: else exit 0 fi + + - name: ccache stats + shell: bash + run: ccache -s || true diff --git a/.github/workflows/core-build-nopch.yml b/.github/workflows/core-build-nopch.yml index e64fbffcc..e67e9463c 100644 --- a/.github/workflows/core-build-nopch.yml +++ b/.github/workflows/core-build-nopch.yml @@ -10,9 +10,13 @@ on: - synchronize concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true +permissions: + actions: write + contents: read + jobs: build: strategy: diff --git a/.github/workflows/core-build-pch.yml b/.github/workflows/core-build-pch.yml index f6c989346..8a752e450 100644 --- a/.github/workflows/core-build-pch.yml +++ b/.github/workflows/core-build-pch.yml @@ -10,9 +10,13 @@ on: - synchronize concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true +permissions: + actions: write + contents: read + jobs: build: strategy: diff --git a/.github/workflows/core_modules_build.yml b/.github/workflows/core_modules_build.yml index 45683f2b4..1ae3a1c02 100644 --- a/.github/workflows/core_modules_build.yml +++ b/.github/workflows/core_modules_build.yml @@ -19,8 +19,12 @@ on: - 'src/server/shared/**/*' - 'src/tools/**/*' +permissions: + actions: write + contents: read + concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true jobs: diff --git a/.github/workflows/dashboard-ci.yml b/.github/workflows/dashboard-ci.yml index 06b7940d3..67f805aac 100644 --- a/.github/workflows/dashboard-ci.yml +++ b/.github/workflows/dashboard-ci.yml @@ -16,7 +16,7 @@ on: workflow_dispatch: concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true env: diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml index 0ab085e98..eee506a14 100644 --- a/.github/workflows/docker_build.yml +++ b/.github/workflows/docker_build.yml @@ -9,7 +9,7 @@ on: - synchronize concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true env: @@ -115,6 +115,6 @@ jobs: event-type: azerothcore-new-images client-payload: > { - "ref": "${{ github.ref }}", + "ref": "${{ github.ref_name }}", "sha": "${{ github.sha }}" } diff --git a/.github/workflows/macos_build.yml b/.github/workflows/macos_build.yml index 039cc5315..09ae976a2 100644 --- a/.github/workflows/macos_build.yml +++ b/.github/workflows/macos_build.yml @@ -9,9 +9,13 @@ on: - synchronize concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true +permissions: + actions: write + contents: read + jobs: macos-build: strategy: @@ -31,13 +35,19 @@ jobs: uses: actions/cache@v4 with: path: ~/Library/Caches/ccache - key: ccache:${{ matrix.os }}:${{ github.ref }}:${{ github.sha }} + key: ccache:${{ matrix.os }}:${{ github.ref_name }} restore-keys: | - ccache:${{ matrix.os }}:${{ github.ref }} + ccache:${{ matrix.os }}:${{ github.ref_name }} ccache:${{ matrix.os }} + - name: reset ccache stats + shell: bash + run: ccache -z || true - name: Install latest bash run: brew install bash - name: Configure OS run: source ./acore.sh install-deps - name: Build run: source ./apps/ci/mac/ci-compile.sh + - name: ccache stats + shell: bash + run: ccache -s || true diff --git a/.github/workflows/tools_build.yml b/.github/workflows/tools_build.yml index 09a8d68c1..5ad3bf3bf 100644 --- a/.github/workflows/tools_build.yml +++ b/.github/workflows/tools_build.yml @@ -9,7 +9,7 @@ on: - synchronize concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true jobs: diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index aa8700778..c01e3ff3c 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -9,7 +9,7 @@ on: - synchronize concurrency: - group: ${{ github.head_ref }} || concat(${{ github.ref }}, ${{ github.workflow }}) + group: ${{ github.head_ref }} || concat(${{ github.ref_name }}, ${{ github.workflow }}) cancel-in-progress: true jobs: