-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Combine GitHub workflows to reduce config duplication (#7352)
* First attempt merging CI test * Remove older versions of Linux * Blend Docker containers and GitHub runners * Test older configure/build method for Windows * Re-add old Windows workflow * Use legacy CMake method for more distros * Rename image to container * Reduce config dupe * Fixed logic for configure * Use newer build command for Windows * Move full container name back to matrix (yuk) * Move GIT_COMMIT to common env * Use more specific Windows runner name * Fine-grained timeouts for Mac * Fixed unit test path for Windows * Rename CI workflow * Beginning of macOS dist action * Update ChangeLog * More triggers for CI workflow * Attempt to fix test path on Windows * Move dist-macos action * Add dir command for testing * Remove `test-` job prefix * Bump msbuild action and try modern cmake again * Composite actions don't support defaults... grr * Remove dir diag command * Trying to use Choco again for VS dep * Don't skip ninja * Flush stdout * Add cl to PATH * Trying out ilammy/msvc-dev-cmd@v1 * Use @V3 checkout for older Linux * Fixed comment typo * Remove dead scripts * Improve env var names * Run strip from build dir * Split out deps script to lib files * Remove stub action * Remove dist step for now
- Loading branch information
Showing
19 changed files
with
359 additions
and
635 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,195 @@ | ||
name: CI | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
types: | ||
- opened | ||
- reopened | ||
- synchronize | ||
- ready_for_review | ||
push: | ||
branches: [master*, release*] | ||
|
||
env: | ||
GIT_COMMIT: ${{ github.sha }} | ||
|
||
jobs: | ||
windows-2022: | ||
runs-on: windows-2022 | ||
timeout-minutes: 20 | ||
|
||
env: | ||
QT_BASE_DIR: ${{ github.workspace }}\deps\Qt | ||
QT_VERSION: 5.15.2 | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: "recursive" | ||
|
||
- name: Cache Qt | ||
id: cache-qt | ||
uses: actions/cache@v1 | ||
with: | ||
path: ${{ env.QT_BASE_DIR }} | ||
key: ${{ runner.os }}-Qt_${{ env.QT_VERSION }} | ||
|
||
- name: Install Qt | ||
if: steps.cache-qt.outputs.cache-hit != 'true' | ||
run: python ./scripts/install_deps.py --only qt | ||
|
||
- name: Install dependencies | ||
run: | | ||
pip install pyyaml | ||
python ./scripts/install_deps.py | ||
- name: Setup VC++ environment | ||
uses: ilammy/msvc-dev-cmd@v1 | ||
|
||
- name: Configure | ||
env: | ||
CMAKE_PREFIX_PATH: "${{ env.QT_BASE_DIR }}\\${{ env.QT_VERSION }}\\msvc2019_64\\" | ||
run: cmake -B build --preset=windows-release | ||
|
||
- name: Build | ||
run: cmake --build build | ||
|
||
- name: Test | ||
run: ./build/bin/unittests | ||
|
||
macos: | ||
runs-on: ${{ matrix.runtime.os }} | ||
timeout-minutes: ${{ matrix.runtime.timeout }} | ||
name: ${{ matrix.runtime.name }} | ||
|
||
defaults: | ||
run: | ||
shell: ${{ matrix.runtime.shell }} | ||
|
||
strategy: | ||
matrix: | ||
runtime: | ||
- name: "macos-10-intel" | ||
timeout: 20 | ||
os: "macos-14-large" | ||
arch: x64 | ||
target: "10.14" | ||
shell: "bash" | ||
|
||
- name: "macos-11-m1" | ||
timeout: 10 | ||
os: "macos-14" | ||
arch: arm64 | ||
target: "11" | ||
shell: "/usr/bin/arch -arch arm64e /bin/bash --noprofile --norc -eo pipefail {0}" | ||
|
||
steps: | ||
- name: Setup PATH | ||
run: | | ||
case "$ARCH" in | ||
"arm64") | ||
echo "/opt/homebrew/bin" >> $GITHUB_PATH | ||
;; | ||
esac | ||
env: | ||
ARCH: ${{ matrix.runtime.arch }} | ||
|
||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: "recursive" | ||
|
||
- name: Install dependencies | ||
run: | | ||
pip install pyyaml | ||
python ./scripts/install_deps.py | ||
- name: Configure | ||
env: | ||
CMAKE_OSX_DEPLOYMENT_TARGET: ${{ matrix.runtime.target }} | ||
run: cmake -B build --preset=macos-release -DCMAKE_PREFIX_PATH=$(brew --prefix qt@5) | ||
|
||
- name: Build | ||
run: cmake --build build | ||
|
||
- name: Test | ||
run: ./build/bin/unittests | ||
|
||
linux: | ||
runs-on: ${{ matrix.distro.runs-on }} | ||
timeout-minutes: 10 | ||
name: linux-${{ matrix.distro.name }} | ||
container: ${{ matrix.distro.container }} | ||
|
||
strategy: | ||
matrix: | ||
distro: | ||
- name: centos-7.6 | ||
container: symless/synergy-core:centos7.6 | ||
runs-on: ubuntu-latest | ||
legacy-cmake: true | ||
|
||
- name: centos-8 | ||
container: symless/synergy-core:centos8 | ||
runs-on: ubuntu-latest | ||
legacy-cmake: true | ||
|
||
- name: debian-11 | ||
container: symless/synergy-core:debian11 | ||
runs-on: ubuntu-latest | ||
legacy-cmake: true | ||
|
||
- name: debian-12 | ||
container: symless/synergy-core:debiansid | ||
runs-on: ubuntu-latest | ||
|
||
- name: fedora-37 | ||
container: symless/synergy-core:fedora37 | ||
runs-on: ubuntu-latest | ||
legacy-cmake: true | ||
|
||
- name: fedora-38 | ||
container: symless/synergy-core:fedora38 | ||
runs-on: ubuntu-latest | ||
legacy-cmake: true | ||
|
||
- name: ubuntu-20.04 | ||
container: symless/synergy-core:ubuntu20.04 | ||
runs-on: ubuntu-latest | ||
legacy-cmake: true | ||
|
||
- name: ubuntu-22.04 | ||
container: symless/synergy-core:ubuntu22.04 | ||
runs-on: ubuntu-latest | ||
|
||
- name: ubuntu-24.04 | ||
runs-on: ubuntu-24.04 | ||
install-deps: true | ||
|
||
steps: | ||
# Use @v3 since some older Linux distro versions don't support @v4 | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
submodules: "recursive" | ||
|
||
- name: Install dependencies | ||
if: ${{ matrix.distro.install-deps }} | ||
run: python ./scripts/install_deps.py | ||
|
||
- name: Configure | ||
if: ${{ !matrix.distro.legacy-cmake }} | ||
run: cmake -B build --preset=linux-release | ||
|
||
# Some older Linux distro versions don't support modern CMake presets. | ||
- name: Configure (legacy) | ||
if: ${{ matrix.distro.legacy-cmake }} | ||
run: cmake -B build -DCMAKE_BUILD_TYPE=Release | ||
|
||
- name: Build | ||
run: cmake --build build | ||
|
||
- name: Test | ||
run: ./build/bin/unittests |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.