Work on CI builds #36
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
#------------------------------------------------------------------------------- | |
# Workflow configuration | |
#------------------------------------------------------------------------------- | |
name: "Desktop CI builds" | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
#------------------------------------------------------------------------------- | |
# Define application name & version | |
#------------------------------------------------------------------------------- | |
env: | |
APP_NAME: "OffloadBuddy" | |
APP_VERSION: "0.12" | |
QT_VERSION: "6.5.2" | |
#------------------------------------------------------------------------------- | |
# Workflow jobs | |
#------------------------------------------------------------------------------- | |
jobs: | |
## GNU/Linux build ########################################################### | |
build-linux: | |
name: "Linux CI build" | |
runs-on: ubuntu-20.04 | |
steps: | |
# Checkout the repository | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
# Install Qt | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: ${{env.QT_VERSION}} | |
modules: qtmultimedia qtimageformats qtpositioning qtlocation qtcharts qtshadertools qt5compat | |
# Install dependencies (from package manager) | |
- name: Install dependencies (from package manager) | |
run: | | |
sudo apt-get install libswscale5 libswresample3 libpostproc55 libavutil56 libavformat58 libavfilter7 libavdevice58 libavcodec58 ffmpeg -y; | |
sudo apt-get install libavutil-dev libavformat-dev libavfilter-dev libavdevice-dev libavcodec-dev -y; | |
sudo apt-get install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav -y; | |
sudo apt-get install libudev-dev libusb-dev -y; | |
sudo apt-get install automake m4 gettext -y; | |
sudo apt-get install libgl1-mesa-dev libxcb1-dev libxkbcommon-x11-dev libx11-xcb-dev libxcb-cursor0 libzstd-dev -y; | |
sudo apt-get install cmake ninja-build pkgconf libtool appstream -y; | |
# Setup env | |
- name: Setup env | |
run: | | |
qmake --version | |
cmake --version | |
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) | |
# Build dependencies (from contribs script) | |
- name: Build dependencies (from contribs script) | |
run: | | |
cd contribs/ | |
python3 contribs_builder.py --targets=linux --qt-directory ${{env.Qt6_DIR}}/../.. --qt-version ${{env.QT_VERSION}} | |
cd .. | |
# Build application | |
- name: Build application | |
run: | | |
qmake ${{env.APP_NAME}}.pro DEFINES+=USE_CONTRIBS CONFIG+=release PREFIX=/usr | |
make -j$(nproc) | |
# Deploy application | |
- name: Deploy application | |
run: ./deploy_linux.sh -c -i -p | |
# Upload AppImage | |
- name: Upload AppImage | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{env.APP_NAME}}-${{env.APP_VERSION}}-linux64.AppImage | |
path: ${{env.APP_NAME}}*.AppImage | |
## macOS build ############################################################### | |
build-mac: | |
name: "macOS CI build" | |
runs-on: macos-11 | |
steps: | |
# Checkout the repository | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
# Install dependencies | |
#- name: Install dependencies | |
# run: | | |
# brew install qt6 | |
# Install Qt | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: ${{env.QT_VERSION}} | |
modules: qtmultimedia qtimageformats qtpositioning qtlocation qtcharts qtshadertools qt5compat | |
# Install dependencies (from package manager) | |
- name: Install dependencies (from package manager) | |
run: | | |
brew install ninja automake autoconf libtool pkg-config gettext | |
brew link --force gettext | |
# Setup env | |
- name: Setup env | |
run: | | |
qmake --version | |
cmake --version | |
alias nproc="sysctl -n hw.logicalcpu" | |
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) | |
# Build dependencies (from contribs script) | |
- name: Build dependencies (from contribs script) | |
run: | | |
cd contribs/ | |
python3 contribs_builder.py --targets=macos_x86_64 --qt-directory ${{env.Qt6_DIR}}/../.. --qt-version ${{env.QT_VERSION}} | |
cd .. | |
# Build application | |
- name: Build application | |
run: | | |
qmake ${{env.APP_NAME}}.pro DEFINES+=USE_CONTRIBS CONFIG+=release | |
make -j$(nproc) | |
# Deploy application | |
- name: Deploy application | |
run: ./deploy_macos.sh -c -p | |
# Upload app zip | |
- name: Upload app zip | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{env.APP_NAME}}-${{env.APP_VERSION}}-macOS.app | |
path: bin/${{env.APP_NAME}}.app | |
## Windows build ############################################################# | |
build-windows: | |
name: "Windows CI build" | |
runs-on: windows-2022 | |
steps: | |
# Checkout the repository | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
# Configure MSVC | |
- name: Configure MSVC | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
spectre: true | |
# Install Qt | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
version: ${{env.QT_VERSION}} | |
modules: qtmultimedia qtimageformats qtpositioning qtlocation qtcharts qtshadertools qt5compat | |
# Install NSIS (already installed in 'windows-2022') | |
#- name: Install NSIS | |
# run: | | |
# Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') | |
# scoop bucket add extras | |
# scoop install nsis | |
# Setup env | |
- name: Setup env | |
run: | | |
qmake --version | |
cmake --version | |
# Build dependencies (from contribs script) | |
- name: Build dependencies (from contribs script) | |
run: | | |
cd contribs/ | |
python3 contribs_builder.py --targets=msvc2022 --qt-directory ${{env.Qt6_DIR}}/../.. --qt-version ${{env.QT_VERSION}} | |
cd .. | |
# Build application | |
- name: Build application | |
run: | | |
qmake ${{env.APP_NAME}}.pro DEFINES+=USE_CONTRIBS CONFIG+=release | |
nmake | |
# Deploy application | |
- name: Deploy application | |
run: sh deploy_windows.sh -c -p | |
# Upload ZIP | |
- name: Upload ZIP | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{env.APP_NAME}}-${{env.APP_VERSION}}-win64.zip | |
path: ${{env.APP_NAME}}-${{env.APP_VERSION}}-win64.zip | |
# Upload NSIS installer | |
- name: Upload NSIS installer | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{env.APP_NAME}}-${{env.APP_VERSION}}-win64.exe | |
path: ${{env.APP_NAME}}-${{env.APP_VERSION}}-win64.exe |