CI Build for Windows MSI installer #1084
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build-ubuntu | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
env: | |
SDK_VERSION_STANDALONE: 1.3.275.0 | |
SDK_VERSION_REPO: 1.3.275 | |
jobs: | |
Linux: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04] | |
sdk_type: [standalone,repo] | |
docs: [false,true] | |
exclude: | |
- os: ubuntu-20.04 | |
docs: true | |
- os: ubuntu-22.04 | |
sdk_type: standalone | |
docs: true | |
- os: ubuntu-24.04 | |
sdk_type: standalone | |
docs: true | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Check Out Code | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Use CCache | |
if: ${{ ! matrix.docs }} | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.sdk_type}} | |
max-size: "1500M" | |
- name: Install Dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install \ | |
build-essential \ | |
git \ | |
cmake \ | |
ninja-build \ | |
pkgconf \ | |
libgtkmm-3.0-dev \ | |
libcairomm-1.0-dev \ | |
libsigc++-2.0-dev \ | |
libyaml-cpp-dev \ | |
libglfw3-dev \ | |
curl \ | |
wget \ | |
xzip \ | |
libhidapi-dev | |
- name: Install Docs Dependencies | |
if: ${{ matrix.docs }} | |
run: | | |
sudo apt-get -y install \ | |
dvipng \ | |
texlive \ | |
texlive-fonts-extra \ | |
texlive-extra-utils | |
- name: Load Vulkan SDK Repo (Ubuntu 20.04) | |
if: ${{ (matrix.os == 'ubuntu-20.04') && (matrix.sdk_type == 'repo') }} | |
run: | | |
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-focal.list https://packages.lunarg.com/vulkan/${{ env.SDK_VERSION_REPO }}/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-focal.list | |
sudo apt-get update | |
sudo apt-get install vulkan-sdk | |
- name: Load Vulkan SDK Repo (Ubuntu 22.04) | |
if: ${{ (matrix.os == 'ubuntu-22.04') && (matrix.sdk_type == 'repo') }} | |
run: | | |
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-jammy.list https://packages.lunarg.com/vulkan/${{ env.SDK_VERSION_REPO }}/lunarg-vulkan-${{ env.SDK_VERSION_REPO }}-jammy.list | |
sudo apt update | |
sudo apt install vulkan-sdk | |
- name: Load Vulkan SDK Repo (Ubuntu 24.04) | |
if: ${{ (matrix.os == 'ubuntu-24.04') && (matrix.sdk_type == 'repo') }} | |
run: | | |
sudo apt update | |
sudo apt install libvulkan-dev glslang-dev glslang-tools spirv-tools glslc | |
- name: Add PPA for Ubuntu 20.04 for catch2 | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: sudo add-apt-repository ppa:savoury1/build-tools | |
- name: Install More Dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install \ | |
catch2 \ | |
mesa-vulkan-drivers | |
- name: Cache Vulkan SDK Standalone | |
if: ${{ matrix.sdk_type == 'standalone' }} | |
uses: actions/cache@v4 | |
with: | |
path: ~/VulkanSDK | |
key: ${{ runner.os }}-vulkansdk-${{ env.SDK_VERSION_STANDALONE }} | |
- name: Install Vulkan SDK (Standalone) | |
if: ${{ matrix.sdk_type == 'standalone' }} | |
run: | | |
[[ -d ~/VulkanSDK/${{ env.SDK_VERSION_STANDALONE }} ]] && exit 0 | |
cd | |
mkdir VulkanSDK | |
cd VulkanSDK | |
curl -LO https://sdk.lunarg.com/sdk/download/${{ env.SDK_VERSION_STANDALONE }}/linux/vulkansdk-linux-x86_64-${{ env.SDK_VERSION_STANDALONE }}.tar.xz | |
tar xf vulkansdk-linux-x86_64-${{ env.SDK_VERSION_STANDALONE }}.tar.xz | |
- name: Cache FFTS | |
uses: actions/cache@v4 | |
with: | |
path: ~/ffts | |
key: ${{ runner.os }}-${{ matrix.os }}-ffts | |
- name: Clone and Build FFTS Library | |
run: | | |
[[ ${{ matrix.docs }} = 'false' ]] && export CMAKE_C_COMPILER_LAUNCHER=ccache && export CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
if [[ ! -d ~/ffts ]]; then | |
cd | |
git clone https://github.com/anthonix/ffts.git | |
cd ffts | |
mkdir build | |
cd build | |
cmake \ | |
-DENABLE_SHARED=ON \ | |
-GNinja \ | |
.. | |
ninja | |
fi | |
cd ~/ffts/build | |
sudo ninja install | |
- name: Configure | |
run: | | |
[[ (${{matrix.sdk_type }} = 'standalone') ]] && source $HOME/VulkanSDK/${{ env.SDK_VERSION_STANDALONE }}/setup-env.sh | |
[[ ${{ matrix.docs }} = 'false' ]] && export CMAKE_C_COMPILER_LAUNCHER=ccache && export CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
mkdir build | |
cd build | |
cmake \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DDISABLE_PCH=ON \ | |
-GNinja \ | |
-DCPACK_GENERATOR=DEB \ | |
-DCMAKE_INSTALL_PREFIX=/usr \ | |
.. | |
- name: Build | |
if: ${{ ! matrix.docs }} | |
run: | | |
cd build | |
ninja | |
- name: Build Package | |
if: ${{ ! matrix.docs }} | |
run: | | |
cd build | |
ninja package | |
- name: Build Docs | |
if: ${{ matrix.docs }} | |
run: | | |
cd build | |
ninja doc | |
- name: Run Tests | |
if: ${{ ! matrix.docs }} | |
run: | | |
export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.x86_64.json | |
cd build | |
ninja test | |
- name: Upload Artifacts | |
if: ${{ ! matrix.docs }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ngscopeclient-${{ matrix.os }}-${{ github.job }}-${{ matrix.sdk_type }} | |
path: | | |
build/src/ngscopeclient/ngscopeclient | |
build/src/ngscopeclient/icons/* | |
build/src/ngscopeclient/shaders/* | |
build/lib/scopehal/libscopehal.so | |
build/lib/scopeprotocols/libscopeprotocols.so | |
build/Testing/Temporary/LastTest.log | |
- name: Upload Package | |
if: ${{ ! matrix.docs }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ngscopeclient-${{ matrix.os }}-${{ github.job }}-${{ matrix.sdk_type }}-package | |
path: build/*.deb | |
- name: Upload Documentation | |
if: ${{ matrix.docs }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ngscopeclient-${{ matrix.os }}-${{ github.job }}-docs | |
path: build/doc/ngscopeclient-manual.pdf |