Skip to content

ci test

ci test #20

Workflow file for this run

---
name: build
'on': [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
linux:
name: linux
runs-on: ubuntu-latest
container: lmmsci/linux.gcc:18.04
env:
CMAKE_OPTS: >-
-DUSE_WERROR=ON
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DUSE_COMPILE_CACHE=ON
-DCMAKE_UNITY_BUILD=ON
-G Ninja
CCACHE_MAXSIZE: 0
CCACHE_NOCOMPRESS: 1
steps:
- name: Update and configure Git
run: |
add-apt-repository ppa:git-core/ppa
apt-get update
apt-get --yes install git
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- uses: lukka/[email protected] # later versions fail with glibc version error
with:
cmakeVersion: "~3.22.0"
- name: Check out
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Cache ccache data
uses: actions/cache@v3
with:
key: ccache-${{ github.job }}-${{ github.ref }}-${{ github.run_id }}
restore-keys: |
ccache-${{ github.job }}-${{ github.ref }}-
ccache-${{ github.job }}-
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
- name: Build
run: cmake --build build
- name: Build tests
run: cmake --build build --target tests
- name: Run tests
run: build/tests/tests
- name: Package
run: |
cmake --build build --target install
cmake --build build --target appimage
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: linux
path: build/lmms-*.AppImage
- name: Trim ccache and print statistics
run: |
ccache --cleanup
echo "[ccache config]"
ccache --print-config
echo "[ccache stats]"
ccache --show-stats
env:
CCACHE_MAXSIZE: 500M
# macos:
# name: macos
# runs-on: macos-12
# env:
# CMAKE_OPTS: >-
# -DUSE_WERROR=ON
# -DCMAKE_BUILD_TYPE=RelWithDebInfo
# -DUSE_COMPILE_CACHE=ON
# CCACHE_MAXSIZE: 0
# CCACHE_NOCOMPRESS: 1
# MAKEFLAGS: -j3
# DEVELOPER_DIR: /Applications/Xcode_13.1.app/Contents/Developer
# steps:
# - name: Check out
# uses: actions/checkout@v3
# 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:
# key: ccache-${{ github.job }}-${{ github.ref }}-${{ github.run_id }}
# restore-keys: |
# ccache-${{ github.job }}-${{ github.ref }}-
# ccache-${{ github.job }}-
# path: ~/Library/Caches/ccache
# - name: Install dependencies
# run: |
# brew bundle install --verbose
# npm update -g npm
# 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 \
# -DCMAKE_INSTALL_PREFIX="../target" \
# -DCMAKE_PREFIX_PATH="$(brew --prefix qt5)" \
# $CMAKE_OPTS \
# -DUSE_WERROR=OFF
# - name: Build
# run: cmake --build build
# - name: Build tests
# run: cmake --build build --target tests
# - name: Run tests
# run: build/tests/tests
# - name: Package
# run: |
# cmake --build build --target install
# cmake --build build --target dmg
# - name: Upload artifacts
# uses: actions/upload-artifact@v3
# with:
# name: macos
# path: build/lmms-*.dmg
# - 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
# - 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
# matrix:
# arch: ['32', '64']
# name: mingw${{ matrix.arch }}
# runs-on: ubuntu-latest
# container: lmmsci/linux.mingw${{ matrix.arch }}:18.04
# env:
# CMAKE_OPTS: >-
# -DUSE_WERROR=ON
# -DCMAKE_BUILD_TYPE=RelWithDebInfo
# -DUSE_COMPILE_CACHE=ON
# CCACHE_MAXSIZE: 0
# CCACHE_NOCOMPRESS: 1
# MAKEFLAGS: -j2
# steps:
# - name: Update and configure Git
# run: |
# add-apt-repository ppa:git-core/ppa
# apt-get update
# apt-get --yes install git
# git config --global --add safe.directory "$GITHUB_WORKSPACE"
# - name: Check out
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
# submodules: recursive
# - 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: ~/.ccache
# - name: Configure
# run: |
# ccache --zero-stats
# mkdir build && cd build
# ../cmake/build_win${{ matrix.arch }}.sh
# - name: Build
# run: cmake --build build
# - name: Build tests
# run: cmake --build build --target tests
# - name: Package
# run: cmake --build build --target package
# - name: Upload artifacts
# uses: actions/upload-artifact@v3
# with:
# name: mingw${{ matrix.arch }}
# path: build/lmms-*.exe
# - name: Trim ccache and print statistics
# run: |
# ccache --cleanup
# echo "[ccache config]"
# ccache --print-config
# echo "[ccache stats]"
# ccache --show-stats
# env:
# CCACHE_MAXSIZE: 500M
# msvc:
# strategy:
# fail-fast: false
# matrix:
# arch: ['x86', 'x64']
# name: msvc-${{ matrix.arch }}
# runs-on: windows-2019
# env:
# qt-version: '5.15.2'
# CCACHE_MAXSIZE: 0
# CCACHE_NOCOMPRESS: 1
# steps:
# - name: Check out
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
# submodules: recursive
# - name: Cache vcpkg dependencies
# id: cache-deps
# uses: actions/cache@v3
# with:
# key: vcpkg-${{ matrix.arch }}-${{ hashFiles('vcpkg.json') }}
# restore-keys: |
# vcpkg-${{ matrix.arch }}-
# 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@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@b3ea5275e37b734d027040e2c7fe7a10ea2ef946
# with:
# version: ${{ env.qt-version }}
# arch: win32_msvc2019
# archives: qtbase qtsvg qttools
# cache: true
# set-env: ${{ matrix.arch == 'x86' }}
# - name: Set up build environment
# uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
# with:
# arch: ${{ matrix.arch }}
# - name: Configure
# run: |
# ccache --zero-stats
# mkdir build -Force
# cmake -S . `
# -B build `
# -G Ninja `
# --toolchain C:/vcpkg/scripts/buildsystems/vcpkg.cmake `
# -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
# run: cmake --build build --target tests
# - name: Package
# run: cmake --build build --target package
# - name: Upload artifacts
# uses: actions/upload-artifact@v3
# 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