Skip to content

Commit

Permalink
Combine GitHub workflows to reduce config duplication (#7352)
Browse files Browse the repository at this point in the history
* 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
nbolton committed Jun 19, 2024
1 parent d0a4c3d commit 8f13ce8
Show file tree
Hide file tree
Showing 19 changed files with 359 additions and 635 deletions.
195 changes: 195 additions & 0 deletions .github/workflows/ci.yml
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
44 changes: 0 additions & 44 deletions .github/workflows/job-test-linux-centos.yml

This file was deleted.

45 changes: 0 additions & 45 deletions .github/workflows/job-test-linux-debian.yml

This file was deleted.

52 changes: 0 additions & 52 deletions .github/workflows/job-test-linux-fedora.yml

This file was deleted.

50 changes: 0 additions & 50 deletions .github/workflows/job-test-linux-ubuntu.yml

This file was deleted.

Loading

0 comments on commit 8f13ce8

Please sign in to comment.