Improve CI cache usage (#6868)
* Update third-party actions to latest version * Use vcpkg in manifest mode * Only trim ccache after build * Use ccache with MSVC * Use Brewfile and cache Homebrew downloads * Use --print-config for ccache 3 * Attempt to make ccache actually work with MSVC * Zero ccache stats before building * Use SDL2 on macOS
This commit is contained in:
115
.github/workflows/build.yml
vendored
115
.github/workflows/build.yml
vendored
@@ -14,7 +14,8 @@ jobs:
|
||||
-DUSE_WERROR=ON
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
-DUSE_COMPILE_CACHE=ON
|
||||
CCACHE_MAXSIZE: 500M
|
||||
CCACHE_MAXSIZE: 0
|
||||
CCACHE_NOCOMPRESS: 1
|
||||
MAKEFLAGS: -j2
|
||||
steps:
|
||||
- name: Update and configure Git
|
||||
@@ -38,6 +39,7 @@ jobs:
|
||||
path: ~/.ccache
|
||||
- name: Configure
|
||||
run: |
|
||||
ccache --zero-stats
|
||||
source /opt/qt5*/bin/qt5*-env.sh || true
|
||||
mkdir build && cd build
|
||||
cmake .. $CMAKE_OPTS -DCMAKE_INSTALL_PREFIX=./install
|
||||
@@ -56,12 +58,15 @@ jobs:
|
||||
with:
|
||||
name: linux
|
||||
path: build/lmms-*.AppImage
|
||||
- name: Print ccache statistics
|
||||
- name: Trim ccache and print statistics
|
||||
run: |
|
||||
ccache --cleanup
|
||||
echo "[ccache config]"
|
||||
ccache -p
|
||||
ccache --print-config
|
||||
echo "[ccache stats]"
|
||||
ccache -s
|
||||
ccache --show-stats
|
||||
env:
|
||||
CCACHE_MAXSIZE: 500M
|
||||
macos:
|
||||
name: macos
|
||||
runs-on: macos-11
|
||||
@@ -70,7 +75,8 @@ jobs:
|
||||
-DUSE_WERROR=ON
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
-DUSE_COMPILE_CACHE=ON
|
||||
CCACHE_MAXSIZE: 500M
|
||||
CCACHE_MAXSIZE: 0
|
||||
CCACHE_NOCOMPRESS: 1
|
||||
MAKEFLAGS: -j3
|
||||
DEVELOPER_DIR: /Applications/Xcode_11.7.app/Contents/Developer
|
||||
steps:
|
||||
@@ -79,6 +85,15 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
- name: Clean up Homebrew download cache
|
||||
run: rm -rf ~/Library/Caches/Homebrew/downloads
|
||||
- name: Restore Homebrew download cache
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
key: n/a - only restore from restore-keys
|
||||
restore-keys: |
|
||||
homebrew-
|
||||
path: ~/Library/Caches/Homebrew/downloads
|
||||
- name: Cache ccache data
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
@@ -89,12 +104,15 @@ jobs:
|
||||
path: ~/Library/Caches/ccache
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
brew install ccache fftw pkg-config libogg libvorbis lame libsndfile \
|
||||
libsamplerate jack sdl libgig libsoundio lilv lv2 stk \
|
||||
fluid-synth portaudio fltk qt@5 carla
|
||||
brew bundle install --verbose
|
||||
npm install --location=global appdmg
|
||||
env:
|
||||
HOMEBREW_NO_AUTO_UPDATE: 1
|
||||
HOMEBREW_NO_INSTALL_UPGRADE: 1
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
|
||||
- name: Configure
|
||||
run: |
|
||||
ccache --zero-stats
|
||||
mkdir build
|
||||
cmake -S . \
|
||||
-B build \
|
||||
@@ -117,12 +135,20 @@ jobs:
|
||||
with:
|
||||
name: macos
|
||||
path: build/lmms-*.dmg
|
||||
- name: Print ccache statistics
|
||||
- name: Trim ccache and print statistics
|
||||
run: |
|
||||
ccache --cleanup
|
||||
echo "[ccache config]"
|
||||
ccache -p
|
||||
ccache --show-config
|
||||
echo "[ccache stats]"
|
||||
ccache -s
|
||||
ccache --show-stats --verbose
|
||||
env:
|
||||
CCACHE_MAXSIZE: 500MB
|
||||
- name: Save Homebrew download cache
|
||||
uses: actions/cache/save@v3
|
||||
with:
|
||||
key: homebrew-${{ hashFiles('Brewfile.lock.json') }}
|
||||
path: ~/Library/Caches/Homebrew/downloads
|
||||
mingw:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -136,7 +162,8 @@ jobs:
|
||||
-DUSE_WERROR=ON
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
-DUSE_COMPILE_CACHE=ON
|
||||
CCACHE_MAXSIZE: 500M
|
||||
CCACHE_MAXSIZE: 0
|
||||
CCACHE_NOCOMPRESS: 1
|
||||
MAKEFLAGS: -j2
|
||||
steps:
|
||||
- name: Update and configure Git
|
||||
@@ -161,6 +188,7 @@ jobs:
|
||||
path: ~/.ccache
|
||||
- name: Configure
|
||||
run: |
|
||||
ccache --zero-stats
|
||||
mkdir build && cd build
|
||||
../cmake/build_win${{ matrix.arch }}.sh
|
||||
- name: Build
|
||||
@@ -174,12 +202,15 @@ jobs:
|
||||
with:
|
||||
name: mingw${{ matrix.arch }}
|
||||
path: build/lmms-*.exe
|
||||
- name: Print ccache statistics
|
||||
- name: Trim ccache and print statistics
|
||||
run: |
|
||||
ccache --cleanup
|
||||
echo "[ccache config]"
|
||||
ccache -p
|
||||
ccache --print-config
|
||||
echo "[ccache stats]"
|
||||
ccache -s
|
||||
ccache --show-stats
|
||||
env:
|
||||
CCACHE_MAXSIZE: 500M
|
||||
msvc:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -189,6 +220,8 @@ jobs:
|
||||
runs-on: windows-2019
|
||||
env:
|
||||
qt-version: '5.15.2'
|
||||
CCACHE_MAXSIZE: 0
|
||||
CCACHE_NOCOMPRESS: 1
|
||||
steps:
|
||||
- name: Check out
|
||||
uses: actions/checkout@v3
|
||||
@@ -196,49 +229,60 @@ jobs:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
- name: Cache vcpkg dependencies
|
||||
id: cache-deps
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
key: vcpkg-${{ matrix.arch }}-${{ github.ref }}-${{ github.run_id }}
|
||||
key: vcpkg-${{ matrix.arch }}-${{ hashFiles('vcpkg.json') }}
|
||||
restore-keys: |
|
||||
vcpkg-${{ matrix.arch }}-${{ github.ref }}-
|
||||
vcpkg-${{ matrix.arch }}-
|
||||
path: C:\vcpkg\installed
|
||||
path: build\vcpkg_installed
|
||||
- name: Cache ccache data
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
key: "ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}\
|
||||
-${{ github.run_id }}"
|
||||
restore-keys: |
|
||||
ccache-${{ github.job }}-${{ matrix.arch }}-${{ github.ref }}-
|
||||
ccache-${{ github.job }}-${{ matrix.arch }}-
|
||||
path: ~\AppData\Local\ccache
|
||||
- name: Install tools
|
||||
run: choco install ccache
|
||||
- name: Install 64-bit Qt
|
||||
if: matrix.arch == 'x64'
|
||||
uses: jurplel/install-qt-action@64bdb64f2c14311d23733a8463e5fcbc65e8775e
|
||||
uses: jurplel/install-qt-action@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
|
||||
with:
|
||||
version: ${{ env.qt-version }}
|
||||
arch: win64_msvc2019_64
|
||||
archives: qtbase qtsvg qttools
|
||||
cache: true
|
||||
- name: Install 32-bit Qt
|
||||
uses: jurplel/install-qt-action@64bdb64f2c14311d23733a8463e5fcbc65e8775e
|
||||
uses: jurplel/install-qt-action@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
|
||||
with:
|
||||
version: ${{ env.qt-version }}
|
||||
arch: win32_msvc2019
|
||||
archives: qtbase qtsvg qttools
|
||||
cache: true
|
||||
set-env: ${{ matrix.arch == 'x86' }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
vcpkg install `
|
||||
--triplet=${{ matrix.arch }}-windows `
|
||||
--host-triplet=${{ matrix.arch }}-windows `
|
||||
--recurse `
|
||||
fftw3 fltk fluidsynth[sndfile] libsamplerate libsndfile libstk `
|
||||
lilv lv2 portaudio sdl2
|
||||
- name: Set up build environment
|
||||
uses: ilammy/msvc-dev-cmd@d8610e2b41c6d0f0c3b4c46dad8df0fd826c68e1
|
||||
uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
|
||||
with:
|
||||
arch: ${{ matrix.arch }}
|
||||
- name: Configure
|
||||
run: |
|
||||
mkdir build
|
||||
ccache --zero-stats
|
||||
mkdir build -Force
|
||||
cmake -S . `
|
||||
-B build `
|
||||
-G Ninja `
|
||||
--toolchain C:/vcpkg/scripts/buildsystems/vcpkg.cmake `
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo `
|
||||
-DUSE_COMPILE_CACHE=ON `
|
||||
-DVCPKG_TARGET_TRIPLET="${{ matrix.arch }}-windows" `
|
||||
-DVCPKG_HOST_TRIPLET="${{ matrix.arch }}-windows" `
|
||||
-DVCPKG_MANIFEST_INSTALL="${{ env.should_install_manifest }}"
|
||||
env:
|
||||
should_install_manifest:
|
||||
${{ steps.cache-deps.outputs.cache-hit == 'true' && 'NO' || 'YES' }}
|
||||
- name: Build
|
||||
run: cmake --build build
|
||||
- name: Build tests
|
||||
@@ -250,3 +294,12 @@ jobs:
|
||||
with:
|
||||
name: msvc-${{ matrix.arch }}
|
||||
path: build\lmms-*.exe
|
||||
- name: Trim ccache and print statistics
|
||||
run: |
|
||||
ccache --cleanup
|
||||
echo "[ccache config]"
|
||||
ccache --show-config
|
||||
echo "[ccache stats]"
|
||||
ccache --show-stats --verbose
|
||||
env:
|
||||
CCACHE_MAXSIZE: 500MB
|
||||
|
||||
Reference in New Issue
Block a user