Browse Source
- Ubuntu 18.04/20.04, GUI ON/OFF - Windows 2019 - macOS 10.15 GUI ON/OFFadaptive-webui-19844
FranciscoPombal
4 years ago
1 changed files with 242 additions and 0 deletions
@ -0,0 +1,242 @@
@@ -0,0 +1,242 @@
|
||||
name: GitHub Actions CI |
||||
|
||||
# Cache is used for all Windows and macOS dependencies (size approx. 1230 * 2 + 1850 = 4310 MiB) |
||||
# Cache is not used for Ubuntu builds, because it already has all dependencies except |
||||
# the appropriate libtorrent version, which only takes 3-5 minutes to build from source anyway |
||||
|
||||
on: |
||||
push: |
||||
branches: [ master ] |
||||
pull_request: |
||||
types: [edited, opened, reopened, synchronize] |
||||
branches: [ master ] |
||||
|
||||
env: |
||||
# Qt: 5.15.0 |
||||
# libtorrent: RC_1_2 HEAD, 1.2.10 |
||||
VCPKG_COMMIT: 32eccc18191fbb57b159784a1724d2d00613ae82 |
||||
VCPKG_DEST_MACOS: /Users/runner/qbt_tools/vcpkg |
||||
VCPKG_DEST_WIN: C:\qbt_tools\vcpkg |
||||
UBUNTU_LIBTORRENT_VERSION: libtorrent-1.2.10 |
||||
|
||||
jobs: |
||||
|
||||
ci_ubuntu: |
||||
name: Ubuntu |
||||
|
||||
strategy: |
||||
matrix: |
||||
os: [ubuntu-20.04, ubuntu-18.04] |
||||
qbt_gui: ["GUI=ON", "GUI=OFF"] |
||||
fail-fast: false |
||||
|
||||
runs-on: ${{ matrix.os }} |
||||
|
||||
defaults: |
||||
run: |
||||
shell: bash |
||||
|
||||
steps: |
||||
- name: checkout repository |
||||
uses: actions/checkout@v2.3.2 |
||||
|
||||
- name: install all build dependencies except libtorrent from Ubuntu repos |
||||
run: | |
||||
sudo apt install \ |
||||
build-essential cmake git ninja-build pkg-config \ |
||||
libssl-dev libgeoip-dev zlib1g-dev \ |
||||
libboost-dev libboost-chrono-dev libboost-random-dev libboost-system-dev \ |
||||
libqt5svg5-dev qtbase5-dev qttools5-dev |
||||
|
||||
- name: install libtorrent from source |
||||
run: | |
||||
git clone https://github.com/arvidn/libtorrent && cd libtorrent |
||||
git checkout ${{ env.UBUNTU_LIBTORRENT_VERSION }} |
||||
cmake -B cmake-build-dir -G "Ninja" \ |
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |
||||
-Ddeprecated-functions=OFF \ |
||||
--graphviz=cmake-build-dir/target_graph.dot |
||||
cmake --build cmake-build-dir |
||||
sudo cmake --install cmake-build-dir --prefix /usr/local |
||||
|
||||
- name: build qBittorrent |
||||
run: | |
||||
cmake -B build -G "Ninja" \ |
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |
||||
-D${{ matrix.qbt_gui }} \ |
||||
-DVERBOSE_CONFIGURE=ON \ |
||||
--graphviz=build/target_graph.dot |
||||
cmake --build build |
||||
|
||||
- name: upload artifact as zip |
||||
uses: actions/upload-artifact@v2.1.3 |
||||
with: |
||||
name: qBittorrent-CI-Ubuntu_${{ matrix.os }}-${{ matrix.qbt_gui }} |
||||
path: | |
||||
build/compile_commands.json |
||||
build/target_graph.dot |
||||
build/qbittorrent |
||||
build/qbittorrent-nox |
||||
libtorrent/cmake-build-dir/compile_commands.json |
||||
libtorrent/cmake-build-dir/target_graph.dot |
||||
|
||||
ci_windows: |
||||
name: Windows + vcpkg |
||||
|
||||
runs-on: windows-2019 |
||||
|
||||
defaults: |
||||
run: |
||||
shell: pwsh |
||||
|
||||
steps: |
||||
- name: checkout repository |
||||
uses: actions/checkout@v2.3.2 |
||||
|
||||
# - ninja is needed for building qBittorrent (because it's preferrable, not a hard requirement) |
||||
- name: install additional required packages with chocolatey |
||||
run: | |
||||
choco install ninja |
||||
|
||||
- name: setup vcpkg (cached, if possible) |
||||
uses: lukka/run-vcpkg@v3.3 |
||||
with: |
||||
vcpkgDirectory: ${{ env.VCPKG_DEST_WIN }} |
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }} |
||||
setupOnly: true |
||||
|
||||
# Tell vcpkg to only build Release variants of the dependencies |
||||
- name: configure vcpkg triplet overlay for release builds only |
||||
run: | |
||||
New-Item -Path ${{ github.workspace }} -Name "triplets_overlay" -ItemType Directory |
||||
Copy-Item ${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-windows-static.cmake ` |
||||
${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake |
||||
Add-Content ${{ github.workspace }}/triplets_overlay/x64-windows-static-release.cmake ` |
||||
-Value "set(VCPKG_BUILD_TYPE release)" |
||||
|
||||
# clear buildtrees after each package installation to reduce disk space requirements |
||||
- name: install dependencies via vcpkg |
||||
run: | |
||||
$packages = ` |
||||
"boost-circular-buffer:x64-windows-static-release", |
||||
"libtorrent:x64-windows-static-release", |
||||
"qt5-base:x64-windows-static-release", |
||||
"qt5-svg:x64-windows-static-release", |
||||
"qt5-tools:x64-windows-static-release", |
||||
"qt5-winextras:x64-windows-static-release" |
||||
foreach($package in $packages) |
||||
{ |
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install $package ` |
||||
--overlay-triplets=${{ github.workspace }}/triplets_overlay ` |
||||
--clean-after-build |
||||
} |
||||
|
||||
# NOTE: this is necessary to correctly find and use cl.exe with the Ninja generator for now |
||||
- name: setup devcmd |
||||
uses: ilammy/msvc-dev-cmd@v1.3.0 |
||||
|
||||
- name: build qBittorrent |
||||
shell: cmd |
||||
run: | |
||||
cmake -B build -G "Ninja" ^ |
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ^ |
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_WIN }}\scripts\buildsystems\vcpkg.cmake ^ |
||||
-DVCPKG_TARGET_TRIPLET=x64-windows-static-release ^ |
||||
-DVERBOSE_CONFIGURE=ON ^ |
||||
--graphviz=build\target_graph.dot |
||||
cmake --build build |
||||
|
||||
- name: upload artifact as zip |
||||
uses: actions/upload-artifact@v2.1.3 |
||||
with: |
||||
name: qBittorrent-CI-Windows_x64-static-release |
||||
path: | |
||||
build/compile_commands.json |
||||
build/target_graph.dot |
||||
build/qbittorrent.exe |
||||
build/qbittorrent.pdb |
||||
dist/windows/qt.conf |
||||
|
||||
ci_macos: |
||||
name: macOS + vcpkg |
||||
|
||||
strategy: |
||||
matrix: |
||||
qbt_gui: ["GUI=ON", "GUI=OFF"] |
||||
fail-fast: false |
||||
|
||||
runs-on: macos-10.15 |
||||
|
||||
defaults: |
||||
run: |
||||
shell: pwsh |
||||
|
||||
steps: |
||||
- name: checkout repository |
||||
uses: actions/checkout@v2.3.2 |
||||
|
||||
# - ninja is needed for building qBittorrent (because it's preferrable, not a hard requirement) |
||||
# - pkg-config is needed for some vcpkg installations |
||||
- name: install additional required packages with homebrew |
||||
shell: bash |
||||
run: | |
||||
brew install ninja pkg-config |
||||
|
||||
- name: setup vcpkg (cached, if possible) |
||||
uses: lukka/run-vcpkg@v3.3 |
||||
with: |
||||
vcpkgDirectory: ${{ env.VCPKG_DEST_MACOS }} |
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT }} |
||||
setupOnly: true |
||||
|
||||
- name: configure vcpkg triplet overlay for release builds only |
||||
run: | |
||||
New-Item -Path ${{ github.workspace }} -Name "triplets_overlay" -ItemType Directory |
||||
Copy-Item ${{ env.RUNVCPKG_VCPKG_ROOT }}/triplets/x64-osx.cmake ` |
||||
${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake |
||||
Add-Content ${{ github.workspace }}/triplets_overlay/x64-osx-release.cmake ` |
||||
-Value "set(VCPKG_BUILD_TYPE release)" |
||||
|
||||
# NOTE: Avoids a libtorrent ABI issue. See https://github.com/arvidn/libtorrent/issues/4965 |
||||
- name: force AppleClang to compile libtorrent with C++14 |
||||
run: | |
||||
(Get-Content -path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake).Replace( ` |
||||
'${FEATURE_OPTIONS}', '${FEATURE_OPTIONS} -DCMAKE_CXX_STANDARD=14') ` |
||||
| Set-Content -Path ${{ env.RUNVCPKG_VCPKG_ROOT }}/ports/libtorrent/portfile.cmake |
||||
|
||||
- name: install dependencies via vcpkg |
||||
run: | |
||||
$packages = ` |
||||
"boost-circular-buffer:x64-osx-release", |
||||
"libtorrent:x64-osx-release", |
||||
"qt5-base:x64-osx-release", |
||||
"qt5-svg:x64-osx-release", |
||||
"qt5-tools:x64-osx-release", |
||||
"qt5-macextras:x64-osx-release" |
||||
foreach($package in $packages) |
||||
{ |
||||
${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg install $package ` |
||||
--overlay-triplets=${{ github.workspace }}/triplets_overlay ` |
||||
--clean-after-build |
||||
} |
||||
|
||||
- name: build qBittorrent |
||||
shell: bash |
||||
run: | |
||||
cmake -B build -G "Ninja" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_DEST_MACOS }}/scripts/buildsystems/vcpkg.cmake \ |
||||
-DVCPKG_TARGET_TRIPLET=x64-osx-release \ |
||||
-D${{ matrix.qbt_gui }} \ |
||||
-DVERBOSE_CONFIGURE=ON \ |
||||
--graphviz=build/target_graph.dot |
||||
cmake --build build |
||||
|
||||
- name: upload artifact as zip |
||||
uses: actions/upload-artifact@v2.1.3 |
||||
with: |
||||
name: qBittorrent-CI-macOS_x64-static-release_${{ matrix.qbt_gui }} |
||||
path: | |
||||
build/compile_commands.json |
||||
build/target_graph.dot |
||||
build/qbittorrent.app |
||||
build/qbittorrent-nox.app |
Loading…
Reference in new issue