Update macos actions (#7845)

* ci: move macos-13 actions to macos-14

We have some GitHub Actions which we try to run on the oldest version of
macOS available. That's currently macos-13, but GitHub is deprecating it:

> This is a scheduled macos-13 brownout.
> The macOS-13 based runner images > are being deprecated. For more details,
> see https://github.com/actions/runner-images/issues/13046.

We last bumped this from macos-12 to macos-13 in 43f5ca8 #7275

* ci: do not specify architectures in macOS CI builds

GitHub has is phasing out su pport for macOS x86_64 runners

* ci: fold the macos-X-from-tarball jobs into a single job

* ci: fold macos-26 and macos-14 jobs into a single job

* Use macos-15-intel runners instead of macos-14 (arm64).

If we test compilation two times, at least do it on different host
archs.
Also macOS 15 supports latest Xcode with macOS 26.1 SDK.

* Make job names more meaningful

* Fix indentation in macos-xcodebuild-universal

---------

Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
Dzmitry Neviadomski
2025-11-26 01:52:34 +03:00
committed by GitHub
parent 5cc5538df4
commit 5a995aa335

View File

@@ -322,7 +322,7 @@ jobs:
run: |
if (Select-String -Path makelog -Pattern 'warning:') { exit 1 }
macos-26-project:
macos-xcodebuild-universal:
runs-on: macos-26
needs: [ what-to-make ]
if: ${{ needs.what-to-make.outputs.make-cli == 'true' ||
@@ -349,9 +349,19 @@ jobs:
name: binaries-${{ github.job }}
path: pfx/Build/Products/**/Transmission.app*
macos-26-arm64:
runs-on: macos-26
needs: [ what-to-make ]
macos-cmake-universal:
strategy:
matrix:
os: [
# This is the last and the only macOS Intel runner that GitHub Actions supports.
# Xref https://github.com/actions/runner-images/issues/13046
macos-15-intel,
# Tahoe preview. Added Sept 2025.
# Xref https://github.com/actions/runner-images/pull/13007
macos-26
]
needs: [what-to-make]
if: ${{ needs.what-to-make.outputs.make-cli == 'true' ||
needs.what-to-make.outputs.make-daemon == 'true' ||
needs.what-to-make.outputs.make-gtk == 'true' ||
@@ -359,6 +369,7 @@ jobs:
needs.what-to-make.outputs.make-qt == 'true' ||
needs.what-to-make.outputs.make-tests == 'true' ||
needs.what-to-make.outputs.make-utils == 'true' }}
runs-on: ${{ matrix.os }}
steps:
- name: Show Configuration
run: |
@@ -386,7 +397,6 @@ jobs:
-G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=pfx \
-DCMAKE_OSX_ARCHITECTURES='arm64' \
-DCMAKE_PREFIX_PATH=`brew --prefix`/opt/qt \
-DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \
-DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \
@@ -410,51 +420,9 @@ jobs:
run: cmake --build obj --config RelWithDebInfo --target install/strip
- uses: actions/upload-artifact@v4
with:
name: binaries-${{ github.job }}
name: binaries-${{ matrix.os }}-cmake-universal
path: pfx/**/*
# oldest GitHub build support on macOS (Transmission supports macOS 11.0 and newer)
macos-13:
runs-on: macos-13
needs: [ what-to-make ]
if: ${{ needs.what-to-make.outputs.make-mac == 'true' }}
steps:
- name: Show Configuration
run: |
echo '${{ toJSON(needs) }}'
echo '${{ toJSON(runner) }}'
sw_vers
- name: Get Dependencies
run: brew install --formulae cmake gettext libdeflate libevent libpsl miniupnpc ninja node pkgconf crc32c
- name: Get Source
uses: actions/checkout@v4
with:
path: src
submodules: recursive
# oldest GitHub build support for Xcode (Transmission supports Xcode 12.5.1 and newer)
- name: Set Xcode to 14.1
run: |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#xcode
sudo xcode-select --switch /Applications/Xcode_14.1.app
- name: Configure
run: |
cmake \
-S src \
-B obj \
-G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=pfx \
-DCMAKE_OSX_ARCHITECTURES='x86_64' \
-DENABLE_GTK=OFF \
-DENABLE_MAC=${{ (needs.what-to-make.outputs.make-mac == 'true') && 'ON' || 'OFF' }} \
-DENABLE_QT=OFF \
-DENABLE_TESTS=OFF \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_CRC32C=ON
- name: Make
run: cmake --build obj --config RelWithDebInfo
alpine-musl:
needs: [ what-to-make ]
runs-on: ubuntu-22.04
@@ -636,69 +604,19 @@ jobs:
name: source-tarball
path: obj/transmission*.tar.*
macos-26-universal-from-tarball:
needs: [ make-source-tarball, what-to-make ]
if: ${{ needs.what-to-make.outputs.make-mac == 'true' }}
runs-on: macos-26
steps:
- name: Show Configuration
run: |
echo '${{ toJSON(needs) }}'
echo '${{ toJSON(runner) }}'
sw_vers
- name: Get Dependencies
run: brew install --formulae cmake ninja node pkgconf
- name: Get Source
uses: actions/download-artifact@v4
with:
name: source-tarball
- name: Extract Source
run: mkdir src && tar xf transmission*.tar.* -C src --strip-components 1
- name: Configure
run: |
cmake \
-S src \
-B obj \
-G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=pfx \
-DCMAKE_OSX_ARCHITECTURES='x86_64;arm64' \
-DCMAKE_DISABLE_FIND_PACKAGE_Intl=ON \
-DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \
-DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \
-DENABLE_GTK=OFF \
-DENABLE_MAC=${{ (needs.what-to-make.outputs.make-mac == 'true') && 'ON' || 'OFF' }} \
-DENABLE_QT=OFF \
-DENABLE_TESTS=${{ (needs.what-to-make.outputs.make-tests == 'true') && 'ON' || 'OFF' }} \
-DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \
-DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_EVENT2=OFF \
-DUSE_SYSTEM_DEFLATE=OFF \
-DUSE_SYSTEM_DHT=OFF \
-DUSE_SYSTEM_MINIUPNPC=OFF \
-DUSE_SYSTEM_NATPMP=OFF \
-DUSE_SYSTEM_UTP=OFF \
-DUSE_SYSTEM_B64=OFF \
-DUSE_SYSTEM_PSL=OFF
- name: Make
run: cmake --build obj --config RelWithDebInfo
- name: Test
if: ${{ needs.what-to-make.outputs.make-tests == 'true' }}
env:
TMPDIR: /private/tmp
run: cmake -E chdir obj ctest -j $(sysctl -n hw.logicalcpu) --build-config RelWithDebInfo --output-on-failure
- name: Install
run: cmake --build obj --config RelWithDebInfo --target install/strip
- uses: actions/upload-artifact@v4
with:
name: binaries-${{ github.job }}
path: pfx/**/*
macos-from-tarball:
strategy:
matrix:
os: [
# This is the last and the only macOS Intel runner that GitHub Actions supports.
# Xref https://github.com/actions/runner-images/issues/13046
macos-15-intel,
# Oldest GitHub support for CLI, GTK and QT on Mac
macos-13-x86_64-from-tarball:
needs: [ make-source-tarball, what-to-make ]
# Tahoe preview. Added Sept 2025.
# Xref https://github.com/actions/runner-images/pull/13007
macos-26
]
needs: [make-source-tarball, what-to-make]
if: ${{ needs.what-to-make.outputs.make-cli == 'true' ||
needs.what-to-make.outputs.make-daemon == 'true' ||
needs.what-to-make.outputs.make-gtk == 'true' ||
@@ -706,7 +624,7 @@ jobs:
needs.what-to-make.outputs.make-qt == 'true' ||
needs.what-to-make.outputs.make-tests == 'true' ||
needs.what-to-make.outputs.make-utils == 'true' }}
runs-on: macos-13
runs-on: ${{ matrix.os }}
steps:
- name: Show Configuration
run: |
@@ -735,7 +653,6 @@ jobs:
-G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=pfx \
-DCMAKE_OSX_ARCHITECTURES='x86_64' \
-DCMAKE_PREFIX_PATH=`brew --prefix`/opt/qt \
-DENABLE_CLI=${{ (needs.what-to-make.outputs.make-cli == 'true') && 'ON' || 'OFF' }} \
-DENABLE_DAEMON=${{ (needs.what-to-make.outputs.make-daemon == 'true') && 'ON' || 'OFF' }} \
@@ -766,7 +683,7 @@ jobs:
run: cmake --build obj --config RelWithDebInfo --target install/strip
- uses: actions/upload-artifact@v4
with:
name: binaries-${{ github.job }}
name: binaries-${{ matrix.os }}-from-tarball
path: pfx/**/*
debian-11-from-tarball: