Skip to content

Bump actions/setup-python from 6 to 7 #1310

Bump actions/setup-python from 6 to 7

Bump actions/setup-python from 6 to 7 #1310

Workflow file for this run

name: CI
on:
push:
pull_request:
merge_group:
workflow_dispatch:
permissions: {}
concurrency:
group: ${{ github.actor }}-${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true
jobs:
c-build-library:
name: 🏗️ Build C library
strategy:
fail-fast: false
matrix:
platform:
#- {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}} # setup-cpp fails
- {host: ubuntu-latest, container: {image: "ubuntu:20.04", volumes: ["/tmp:/__e/node20"]}}
- {host: ubuntu-latest, container: {image: "ubuntu:25.04", volumes: ["/tmp:/__e/node20"]}}
- {host: ubuntu-24.04-arm, container: {image: "node:20.18.1-bullseye" }}
- {host: ubuntu-22.04}
- {host: ubuntu-24.04}
- {host: ubuntu-22.04-arm}
- {host: ubuntu-24.04-arm}
- {host: macos-14}
- {host: macos-15}
- {host: macos-26}
- {host: windows-2022}
- {host: windows-2025}
compiler:
- gcc-13
- gcc-14
- llvm-19
- llvm-20
exclude:
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}}, compiler: gcc-14} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}}, compiler: llvm-19} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}}, compiler: llvm-20} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:20.04", volumes: ["/tmp:/__e/node20"]}}, compiler: gcc-14} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-24.04-arm, container: {image: "node:20.18.1-bullseye" }}, compiler: gcc-13} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-24.04-arm, container: {image: "node:20.18.1-bullseye" }}, compiler: gcc-14} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-22.04}, compiler: gcc-14} # Cannot be installed.
- {platform: {host: ubuntu-22.04-arm}, compiler: gcc-14} # Cannot be installed.
- {platform: {host: macos-14}, compiler: gcc-13} # Known issue with gcc (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90835)
- {platform: {host: macos-15}, compiler: gcc-13} # /opt/homebrew/Cellar/gcc@13/13.4.0/lib/gcc/13/gcc/aarch64-apple-darwin24/13/include-fixed/_stdio.h:78:10: fatal error: _bounds.h: No such file or directory
- {platform: {host: macos-15}, compiler: gcc-14} # Known issue (https://github.com/munich-quantum-toolkit/core/issues/979, https://stackoverflow.com/questions/79641443/c-bounds-h-not-found-after-upgrading-to-gcc-15)
- {platform: {host: macos-26}, compiler: gcc-13} # Incompatible it seems
- {platform: {host: macos-26}, compiler: gcc-14} # Incompatible it seems
- {platform: {host: windows-2022}, compiler: llvm-19} # libgit2 does not seem to support this
- {platform: {host: windows-2025}, compiler: llvm-19} # libgit2 does not seem to support this
include:
- {platform: {host: macos-14}, compiler: apple-clang}
- {platform: {host: macos-15}, compiler: apple-clang}
- {platform: {host: macos-26}, compiler: apple-clang}
- {platform: {host: windows-2022}, compiler: msvc}
- {platform: {host: windows-2025}, compiler: msvc}
- {platform: {host: windows-11-arm}, compiler: msvc}
runs-on: ${{ matrix.platform.host }}
container: ${{ matrix.platform.container }}
steps:
- name: Install node.js for GitHub Actions # https://github.com/actions/checkout/issues/1474#issuecomment-2604308106
if: matrix.platform.container != null && matrix.platform.container.volumes != null
run: |
apt-get update &&
apt-get install -y curl ca-certificates &&
# Install a Node.js version that works in older Ubuntu containers (read: does not require very recent glibc)
NODE_VERSION=v20.18.1 &&
NODE_TAR_FILE=node-$NODE_VERSION-linux-x64-glibc-217.tar.gz &&
NODE_URL=https://unofficial-builds.nodejs.org/download/release/$NODE_VERSION/$NODE_TAR_FILE &&
curl -Lo /tmp/$NODE_TAR_FILE $NODE_URL &&
tar -C /__e/node20 -x --strip-components=1 -f /tmp/$NODE_TAR_FILE
- name: 🧰 Install compiler
uses: aminya/setup-cpp@v1
with:
compiler: ${{ matrix.compiler }}
vcvarsall: ${{ contains(matrix.platform.host, 'windows' )}}
cmake: true
ninja: true
cppcheck: true
gcovr: false
opencppcoverage: false
git: true
- name: 📥 Check-out
uses: actions/checkout@v4
- name: 📥 Fetch tags
continue-on-error: true
run: |
git config --global safe.directory '*'
git fetch --prune --unshallow --tags
working-directory: ${{github.workspace}}
- name: 🔧 Configure CMake
run: cmake -S c/ -B c/build/ ${{ (matrix.compiler != 'msvc') && '-G "Ninja Multi-Config"' || ''}} --preset=conf-release-full-shared-lib-static-deps
- name: 🏗️ Build library
run: cmake --build c/build/ --config Release --target tirex_tracker -j 16
- name: 📤 Upload Linux x86_64 library
if: matrix.platform.host == 'ubuntu-latest' && matrix.platform.container.image == 'ubuntu:20.04' && matrix.compiler == 'llvm-19'
uses: actions/upload-artifact@v7
with:
name: c-library-linux-x86_64
if-no-files-found: error
path: c/build/src/Release/libtirex_tracker.so
- name: 📤 Upload Linux aarch64 library
if: matrix.platform.host == 'ubuntu-22.04-arm' && matrix.compiler == 'llvm-20'
uses: actions/upload-artifact@v7
with:
name: c-library-linux-aarch64
if-no-files-found: error
path: c/build/src/Release/libtirex_tracker.so
- name: 📤 Upload macOS aarch64 library
if: matrix.platform.host == 'macos-14' && matrix.compiler == 'apple-clang'
uses: actions/upload-artifact@v7
with:
name: c-library-macos-aarch64
if-no-files-found: error
path: c/build/src/Release/libtirex_tracker.dylib
- name: 📤 Upload Windows x86_64 library
if: matrix.platform.host == 'windows-2022' && matrix.compiler == 'msvc'
uses: actions/upload-artifact@v7
with:
name: c-library-windows-x86_64
if-no-files-found: error
path: c/build/src/Release/tirex_tracker.dll
- name: 📤 Upload Windows aarch64 library
if: matrix.platform.host == 'windows-11-arm' && matrix.compiler == 'msvc'
uses: actions/upload-artifact@v7
with:
name: c-library-windows-aarch64
if-no-files-found: error
path: c/build/src/Release/tirex_tracker.dll
c-check-format:
name: 🔍 Check C code format
runs-on: ubuntu-22.04
steps:
- name: 🧰 Install compiler
uses: aminya/setup-cpp@v1
with:
clang-format: "19.1.0"
clangtidy: true
setup-cpp: false
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🔍 Check Codestyle
working-directory: ${{github.workspace}}/c/
run: find src/ include/ -type f -iregex '^.*\.\(c\|h\|cpp\|hpp\|cc\|hh\)$' | xargs clang-format-19 --dry-run --Werror --Wno-error=unknown
c-build-cli:
name: 🏗️ Build C CLI
strategy:
fail-fast: false
matrix:
platform:
# - {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}} # setup-cpp fails
- {host: ubuntu-latest, container: {image: "ubuntu:20.04", volumes: ["/tmp:/__e/node20"]}}
- {host: ubuntu-latest, container: {image: "ubuntu:25.04", volumes: ["/tmp:/__e/node20"]}}
- {host: ubuntu-24.04-arm, container: {image: "node:20.18.1-bullseye" }}
- {host: ubuntu-22.04}
- {host: ubuntu-24.04}
- {host: ubuntu-22.04-arm}
- {host: ubuntu-24.04-arm}
- {host: macos-14}
- {host: macos-15}
- {host: macos-26}
- {host: windows-2022}
- {host: windows-2025}
compiler:
- gcc-13
- gcc-14
- llvm-19
- llvm-20
exclude:
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}}, compiler: gcc-14} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}}, compiler: llvm-19} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:18.04", volumes: ["/tmp:/__e/node20"]}}, compiler: llvm-20} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-latest, container: {image: "ubuntu:20.04", volumes: ["/tmp:/__e/node20"]}}, compiler: gcc-14} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-24.04-arm, container: {image: "node:20.18.1-bullseye" }}, compiler: gcc-13} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-24.04-arm, container: {image: "node:20.18.1-bullseye" }}, compiler: gcc-14} # setup-cpp compiler setup fails
- {platform: {host: ubuntu-22.04}, compiler: gcc-14} # Cannot be installed.
- {platform: {host: ubuntu-22.04-arm}, compiler: gcc-14} # Cannot be installed.
- {platform: {host: macos-14}, compiler: gcc-13} # Known issue with gcc (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90835)
- {platform: {host: macos-15}, compiler: gcc-13} # /opt/homebrew/Cellar/gcc@13/13.4.0/lib/gcc/13/gcc/aarch64-apple-darwin24/13/include-fixed/_stdio.h:78:10: fatal error: _bounds.h: No such file or directory
- {platform: {host: macos-15}, compiler: gcc-14} # Known issue (https://github.com/munich-quantum-toolkit/core/issues/979, https://stackoverflow.com/questions/79641443/c-bounds-h-not-found-after-upgrading-to-gcc-15)
- {platform: {host: macos-26}, compiler: gcc-13} # Incompatible it seems
- {platform: {host: macos-26}, compiler: gcc-14} # Incompatible it seems
- {platform: {host: windows-2022}, compiler: llvm-19} # libgit2 does not seem to support this
- {platform: {host: windows-2025}, compiler: llvm-19} # libgit2 does not seem to support this
include:
- {platform: {host: macos-14}, compiler: apple-clang}
- {platform: {host: macos-15}, compiler: apple-clang}
- {platform: {host: macos-26}, compiler: apple-clang}
- {platform: {host: windows-2022}, compiler: msvc}
- {platform: {host: windows-2025}, compiler: msvc}
- {platform: {host: windows-11-arm}, compiler: msvc}
runs-on: ${{ matrix.platform.host }}
container: ${{ matrix.platform.container }}
steps:
- name: Install node.js for GitHub Actions # https://github.com/actions/checkout/issues/1474#issuecomment-2604308106
if: matrix.platform.container != null && matrix.platform.container.volumes != null
run: |
apt-get update &&
apt-get install -y curl ca-certificates &&
# Install a Node.js version that works in older Ubuntu containers (read: does not require very recent glibc)
NODE_VERSION=v20.18.1 &&
NODE_TAR_FILE=node-$NODE_VERSION-linux-x64-glibc-217.tar.gz &&
NODE_URL=https://unofficial-builds.nodejs.org/download/release/$NODE_VERSION/$NODE_TAR_FILE &&
curl -Lo /tmp/$NODE_TAR_FILE $NODE_URL &&
tar -C /__e/node20 -x --strip-components=1 -f /tmp/$NODE_TAR_FILE
- name: 🧰 Install compiler
uses: aminya/setup-cpp@v1
with:
compiler: ${{ matrix.compiler }}
vcvarsall: ${{ contains(matrix.platform.host, 'windows' )}}
cmake: true
ninja: true
cppcheck: true
gcovr: false
opencppcoverage: false
git: true
- name: 📥 Check-out
uses: actions/checkout@v4
- name: 📥 Fetch tags
continue-on-error: true
run: |
git config --global safe.directory '*'
git fetch --prune --unshallow --tags
working-directory: ${{github.workspace}}
- name: 🔧 Configure CMake
run: |
cmake -S c/ -B c/build/ ${{ (matrix.compiler != 'msvc') && '-G "Ninja Multi-Config"' || ''}} --preset=conf-release-cli
- name: 🏗️ Build CLI
run: cmake --build c/build/ --config Release --target measure -j 16
- name: 📤 Upload Linux CLI
if: matrix.platform.host == 'ubuntu-latest' && matrix.platform.container.image == 'ubuntu:20.04' && matrix.compiler == 'llvm-19'
uses: actions/upload-artifact@v7
with:
name: c-cli-linux
if-no-files-found: error
path: c/build/examples/03_measure_command/Release/measure
- name: 📤 Upload macOS CLI
if: matrix.platform.host == 'macos-14' && matrix.compiler == 'apple-clang'
uses: actions/upload-artifact@v7
with:
name: c-cli-macos
if-no-files-found: error
path: c/build/examples/03_measure_command/Release/measure
- name: 📤 Upload Windows CLI
if: matrix.platform.host == 'windows-2022' && matrix.compiler == 'msvc'
uses: actions/upload-artifact@v7
with:
name: c-cli-windows
if-no-files-found: error
path: c/build/examples/03_measure_command/Release/measure.exe
c-build-debian-package:
name: 🏗️ Build Debian package
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
volumes:
- /tmp:/__e/node20
steps:
- name: Install node.js for GitHub Actions # https://github.com/actions/checkout/issues/1474#issuecomment-2604308106
run: |
apt-get update &&
apt-get install -y curl ca-certificates &&
# Install a Node.js version that works in older Ubuntu containers (read: does not require very recent glibc)
NODE_VERSION=v20.18.1 &&
NODE_TAR_FILE=node-$NODE_VERSION-linux-x64-glibc-217.tar.gz &&
NODE_URL=https://unofficial-builds.nodejs.org/download/release/$NODE_VERSION/$NODE_TAR_FILE &&
curl -Lo /tmp/$NODE_TAR_FILE $NODE_URL &&
tar -C /__e/node20 -x --strip-components=1 -f /tmp/$NODE_TAR_FILE
- name: 🧰 Install compiler
uses: aminya/setup-cpp@v1
with:
compiler: llvm-19
cmake: true
ninja: true
cppcheck: true
gcovr: false
opencppcoverage: false
git: true
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 📥 Fetch tags
continue-on-error: true
run: |
git config --global safe.directory '*'
git fetch --prune --unshallow --tags
working-directory: ${{github.workspace}}
- name: 🔧 Configure CMake
run: cmake -S c/ -B c/build/ -G "Ninja Multi-Config" -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=NO -D TIREX_TRACKER_BUILD_DOCS=NO -D TIREX_TRACKER_BUILD_DEB=YES -D TIREX_TRACKER_BUILD_EXAMPLES=NO -DTIREX_TRACKER_EXTENSION_IR=YES
- name: 🏗️ Build Debian package
run: cmake --build c/build/ --config Release --target package -j 16
- name: 📤 Upload Debian package
uses: actions/upload-artifact@v7
with:
name: c-debian-package
if-no-files-found: error
path: c/build/tirex-tracker-*-Linux.deb
c-test:
name: 🧪 Test C/++ code
strategy:
fail-fast: false
matrix:
runs-on:
- ubuntu-22.04
- ubuntu-24.04
- macos-14
- macos-15
# - windows-2022 # re-enable me later together with the python tests; something is wrong currently
# - windows-2025 # re-enable me later together with the python tests; something is wrong currently
runs-on: ${{ matrix.runs-on }}
steps:
- name: 🧰 Install compiler
uses: aminya/setup-cpp@v1
with:
vcvarsall: ${{ contains(matrix.platform.host, 'windows' )}}
cmake: true
ninja: true
cppcheck: false
gcovr: true
opencppcoverage: false
git: true
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🔧 Configure CMake
run: cmake -S c/ -B c/build/ -G "Ninja Multi-Config" --preset=conf-dev -D TIREX_TRACKER_BUILD_DOCS=NO
- name: 🏗️ Build tests
run: cmake --build c/build/ --target tests -j 16
- name: 🧪 Test C/++ code
working-directory: ${{github.workspace}}/c/build
run: ctest -C Debug --output-on-failure
jvm-build:
name: 🏗️ Build JVM library
strategy:
fail-fast: false
matrix:
java: # Java LTS versions
- "8"
- "11"
- "17"
- "21"
runs-on: ubuntu-22.04
needs:
- c-build-library
- c-check-format
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install JDK 8 (for compiling)
uses: actions/setup-java@v5
with:
java-version: 8
distribution: temurin
cache: gradle
cache-dependency-path: |
jvm/example/build.gradle.kts
jvm/library/build.gradle.kts
- name: 🧰 Install JDK (for checks)
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java }}
distribution: temurin
cache: gradle
cache-dependency-path: |
jvm/example/build.gradle.kts
jvm/library/build.gradle.kts
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: jvm/library/src/main/resources/linux-x86-64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: jvm/library/src/main/resources/linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: jvm/library/src/main/resources/darwin-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: jvm/library/src/main/resources/win32-x86-64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: jvm/library/src/main/resources/win32-aarch64/
- name: 🏗️ Build project
run: jvm/gradlew --project-dir jvm/ build
jvm-check:
name: 🧪 Test and check JVM library
strategy:
fail-fast: false
matrix:
java: # Java LTS versions
- "8"
- "11"
- "17"
- "21"
runs-on:
- ubuntu-22.04
- ubuntu-22.04-arm
# - ubuntu-24.04 # FIXME: Re-enable
# - macos-14 # FIXME: JDK 8 cannot be installed.
# - macos-15 # FIXME: JDK 8 cannot be installed.
# - macos-26 # FIXME: JDK 8 cannot be installed.
- windows-2022
# - windows-2025 # FIXME: Re-enable
exclude:
- java: "8" # FIXME: Gradle seems to insist on loading Java 17 on Windows, weirdly.
runs-on: windows-2022
- java: "11" # FIXME: Gradle seems to insist on loading Java 17 on Windows, weirdly.
runs-on: windows-2022
- java: "17" # FIXME: Linking errors.
runs-on: windows-2022
- java: "21" # FIXME: Gradle seems to insist on loading Java 17 on Windows, weirdly.
runs-on: windows-2022
runs-on: ${{ matrix.runs-on }}
needs:
- c-build-library
- c-check-format
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install JDK 8 (for compiling)
uses: actions/setup-java@v5
with:
java-version: 8
distribution: temurin
cache: gradle
cache-dependency-path: |
jvm/example/build.gradle.kts
jvm/library/build.gradle.kts
- name: 🧰 Install JDK (for checks)
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java }}
distribution: temurin
cache: gradle
cache-dependency-path: |
jvm/example/build.gradle.kts
jvm/library/build.gradle.kts
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: jvm/library/src/main/resources/linux-x86-64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: jvm/library/src/main/resources/linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: jvm/library/src/main/resources/darwin-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: jvm/library/src/main/resources/win32-x86-64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: jvm/library/src/main/resources/win32-aarch64/
- name: 🧪 Test and check with Gradle
run: jvm/gradlew --project-dir jvm/ check
- name: 📤 Upload coverage to Codecov
if: matrix.java == '21'
uses: codecov/codecov-action@v7
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: jvm/library/build/reports/jacoco/test/jacocoTestReport.xml
jvm-publish:
name: 🚀 Publish JVM library
permissions:
packages: write
strategy:
fail-fast: false
matrix:
java: # Java LTS versions
- "8"
- "11"
- "17"
- "21"
if: github.event_name == 'push' && endsWith(github.event.base_ref, 'master') && startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-22.04
needs:
- c-build-library
- c-check-format
- jvm-build
- jvm-check
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install JDK 8 (for compiling)
uses: actions/setup-java@v5
with:
java-version: 8
distribution: temurin
cache: gradle
cache-dependency-path: |
jvm/example/build.gradle.kts
jvm/library/build.gradle.kts
- name: 🧰 Install JDK (for checks)
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.java }}
distribution: temurin
cache: gradle
cache-dependency-path: |
jvm/example/build.gradle.kts
jvm/library/build.gradle.kts
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: jvm/library/src/main/resources/linux-x86-64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: jvm/library/src/main/resources/linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: jvm/library/src/main/resources/darwin-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: jvm/library/src/main/resources/win32-x86-64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: jvm/library/src/main/resources/win32-aarch64/
- name: 🚀 Publish JVM library to Maven Local
run: jvm/gradlew --project-dir jvm/ publishToMavenLocal
- name: 📤 Upload JVM JAR
if: matrix.java == '21'
uses: actions/upload-artifact@v7
with:
name: jvm-jar
if-no-files-found: error
path: ~/.m2/repository/io/tira/tirex-tracker/*/tirex-tracker-*.jar
- name: 📤 Upload JVM sources JAR
if: matrix.java == '21'
uses: actions/upload-artifact@v7
with:
name: jvm-sources-jar
if-no-files-found: error
path: ~/.m2/repository/io/tira/tirex-tracker/*/tirex-tracker-*-sources.jar
- name: 📤 Upload JVM Javadoc JAR
if: matrix.java == '21'
uses: actions/upload-artifact@v7
with:
name: jvm-javadoc-jar
if-no-files-found: error
path: ~/.m2/repository/io/tira/tirex-tracker/*/tirex-tracker-*-javadoc.jar
- name: 📤 Upload JVM HTML docs JAR
if: matrix.java == '21'
uses: actions/upload-artifact@v7
with:
name: jvm-html-docs-jar
if-no-files-found: error
path: ~/.m2/repository/io/tira/tirex-tracker/*/tirex-tracker-*-html-docs.jar
- name: 🚀 Publish JVM library to GitHub Packages
if: matrix.java == '21'
env:
GITHUB_USERNAME: ${{ github.actor }}
GITHUB_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
run: jvm/gradlew --project-dir jvm/ publishAllPublicationsToGitHubPackagesRepository
- name: 🚀 Publish JVM library to Maven Central
if: matrix.java == '21'
env:
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVENCENTRAL_USERNAME }}
JRELEASER_MAVENCENTRAL_PASSWORD: ${{ secrets.MAVENCENTRAL_PASSWORD }}
run: jvm/gradlew --project-dir jvm/ jreleaserDeploy
python-build:
name: 🏗️ Build Python wheels
strategy:
fail-fast: false
matrix:
python:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
runs-on: ubuntu-22.04
needs:
- c-build-library
- c-check-format
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install Python
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: ${{ runner.temp }}/c-library-linux-x86_64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: ${{ runner.temp }}/c-library-linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: ${{ runner.temp }}/c-library-macos-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: ${{ runner.temp }}/c-library-windows-x86_64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: ${{ runner.temp }}/c-library-windows-aarch64/
- name: 📦 Copy libraries with architecture-specific names
run: |
cp "$RUNNER_TEMP/c-library-linux-x86_64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_x86_64.so
cp "$RUNNER_TEMP/c-library-linux-aarch64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_aarch64.so
cp "$RUNNER_TEMP/c-library-macos-aarch64/libtirex_tracker.dylib" python/tirex_tracker/libtirex_tracker_macos_aarch64.dylib
cp "$RUNNER_TEMP/c-library-windows-x86_64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_x86_64.dll
cp "$RUNNER_TEMP/c-library-windows-aarch64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_aarch64.dll
- name: 🧰 Install dependencies
run: pip install build twine
- name: 🏗️ Build Python wheels
run: python -m build python
env:
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_TIREX_TRACKER: ${{ github.ref_type == 'tag' && github.ref_name || '' }}
- name: 🧪 Check package bundles
run: twine check python/dist/*
- name: 📤 Upload Python wheels
if: matrix.python == '3.13'
uses: actions/upload-artifact@v7
with:
name: python-wheels
if-no-files-found: error
path: python/dist/
python-check:
name: 🔍 Check Python code
strategy:
fail-fast: false
matrix:
python:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
runs-on: ubuntu-22.04
needs:
- c-build-library
- c-check-format
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install Python
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
cache: pip
cache-dependency-path: python/pyproject.toml
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: ${{ runner.temp }}/c-library-linux-x86_64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: ${{ runner.temp }}/c-library-linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: ${{ runner.temp }}/c-library-macos-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: ${{ runner.temp }}/c-library-windows-x86_64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: ${{ runner.temp }}/c-library-windows-aarch64/
- name: 📦 Copy libraries with architecture-specific names
run: |
cp "$RUNNER_TEMP/c-library-linux-x86_64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_x86_64.so
cp "$RUNNER_TEMP/c-library-linux-aarch64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_aarch64.so
cp "$RUNNER_TEMP/c-library-macos-aarch64/libtirex_tracker.dylib" python/tirex_tracker/libtirex_tracker_macos_aarch64.dylib
cp "$RUNNER_TEMP/c-library-windows-x86_64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_x86_64.dll
cp "$RUNNER_TEMP/c-library-windows-aarch64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_aarch64.dll
- name: 🧰 Install dependencies
run: pip install -e python[tests]
- name: 🔍 Check Python code
run: ruff check python
python-typing:
name: 🔍 Check Python static typing
strategy:
fail-fast: false
matrix:
python:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
runs-on: ubuntu-22.04
needs:
- c-build-library
- c-check-format
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install Python
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
cache: pip
cache-dependency-path: python/pyproject.toml
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: ${{ runner.temp }}/c-library-linux-x86_64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: ${{ runner.temp }}/c-library-linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: ${{ runner.temp }}/c-library-macos-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: ${{ runner.temp }}/c-library-windows-x86_64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: ${{ runner.temp }}/c-library-windows-aarch64/
- name: 📦 Copy libraries with architecture-specific names
run: |
cp "$RUNNER_TEMP/c-library-linux-x86_64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_x86_64.so
cp "$RUNNER_TEMP/c-library-linux-aarch64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_aarch64.so
cp "$RUNNER_TEMP/c-library-macos-aarch64/libtirex_tracker.dylib" python/tirex_tracker/libtirex_tracker_macos_aarch64.dylib
cp "$RUNNER_TEMP/c-library-windows-x86_64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_x86_64.dll
cp "$RUNNER_TEMP/c-library-windows-aarch64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_aarch64.dll
- name: 🧰 Install dependencies
run: pip install -e python[tests]
- name: 🔍 Check Python static typing
working-directory: ${{github.workspace}}/python
run: mypy .
python-security:
name: 🔍 Check Python code security
strategy:
fail-fast: false
matrix:
python:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
runs-on: ubuntu-22.04
needs:
- c-build-library
- c-check-format
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install Python
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
cache: pip
cache-dependency-path: python/pyproject.toml
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: ${{ runner.temp }}/c-library-linux-x86_64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: ${{ runner.temp }}/c-library-linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: ${{ runner.temp }}/c-library-macos-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: ${{ runner.temp }}/c-library-windows-x86_64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: ${{ runner.temp }}/c-library-windows-aarch64/
- name: 📦 Copy libraries with architecture-specific names
run: |
cp "$RUNNER_TEMP/c-library-linux-x86_64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_x86_64.so
cp "$RUNNER_TEMP/c-library-linux-aarch64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_aarch64.so
cp "$RUNNER_TEMP/c-library-macos-aarch64/libtirex_tracker.dylib" python/tirex_tracker/libtirex_tracker_macos_aarch64.dylib
cp "$RUNNER_TEMP/c-library-windows-x86_64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_x86_64.dll
cp "$RUNNER_TEMP/c-library-windows-aarch64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_aarch64.dll
- name: 🧰 Install dependencies
run: pip install -e python[tests]
- name: 🔍 Check Python code security
run: bandit -c python/pyproject.toml -r python
python-test:
name: 🧪 Test Python code
strategy:
fail-fast: false
matrix:
python:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
runs-on:
- ubuntu-22.04
- ubuntu-22.04-arm
- ubuntu-24.04
- macos-14
- macos-15
# - windows-2022 # FIXME: does not seem to work right now
# - windows-2025 # FIXME: does not seem to work right now
runs-on: ${{ matrix.runs-on }}
needs:
- c-build-library
- c-check-format
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 🧰 Install Python
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python }}
cache: pip
cache-dependency-path: python/pyproject.toml
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: ${{ runner.temp }}/c-library-linux-x86_64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: ${{ runner.temp }}/c-library-linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: ${{ runner.temp }}/c-library-macos-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: ${{ runner.temp }}/c-library-windows-x86_64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: ${{ runner.temp }}/c-library-windows-aarch64/
- name: 📦 Copy libraries with architecture-specific names
run: |
cp "$RUNNER_TEMP/c-library-linux-x86_64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_x86_64.so
cp "$RUNNER_TEMP/c-library-linux-aarch64/libtirex_tracker.so" python/tirex_tracker/libtirex_tracker_linux_aarch64.so
cp "$RUNNER_TEMP/c-library-macos-aarch64/libtirex_tracker.dylib" python/tirex_tracker/libtirex_tracker_macos_aarch64.dylib
cp "$RUNNER_TEMP/c-library-windows-x86_64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_x86_64.dll
cp "$RUNNER_TEMP/c-library-windows-aarch64/tirex_tracker.dll" python/tirex_tracker/tirex_tracker_windows_aarch64.dll
- name: 🧰 Install dependencies
run: pip install -e python[tests]
- name: 🧪 Test Python code
run: pytest --cov --cov-report xml python
- name: 📤 Upload coverage to Codecov
if: matrix.python == '3.13'
uses: codecov/codecov-action@v7
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
python-publish:
name: 🚀 Publish Python wheels
if: github.event_name == 'push' && endsWith(github.event.base_ref, 'master') && startsWith(github.ref, 'refs/tags')
needs:
- c-build-library
- c-check-format
- python-build
- python-check
- python-typing
- python-security
- python-test
runs-on: ubuntu-22.04
permissions:
id-token: write
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 📥 Download Python wheels
uses: actions/download-artifact@v8
with:
name: python-wheels
path: dist
- name: 🚀 Publish Python wheels to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
docs-nightly:
name: 📚 Deploy nightly docs
if: github.ref == 'refs/heads/master' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- name: 📥 Check-out
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🧰 Install Python
uses: actions/setup-python@v7
with:
python-version: "3.12"
cache: pip
cache-dependency-path: docs/requirements.txt
- name: 🧰 Install Doxygen
run: sudo apt-get install -y doxygen
- name: 🧰 Install dependencies
run: pip install -r docs/requirements.txt mike
- name: ⚙️ Configure git
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
- name: 📚 Deploy nightly docs
run: mike deploy --push --update-aliases nightly
docs-release:
name: 📚 Deploy release docs
if: github.event_name == 'push' && endsWith(github.event.base_ref, 'master') && startsWith(github.ref, 'refs/tags')
needs:
- github-release
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- name: 📥 Check-out
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: 🧰 Install Python
uses: actions/setup-python@v7
with:
python-version: "3.12"
cache: pip
cache-dependency-path: docs/requirements.txt
- name: 🧰 Install Doxygen
run: sudo apt-get install -y doxygen
- name: 🧰 Install dependencies
run: pip install -r docs/requirements.txt mike
- name: ⚙️ Configure git
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
- name: 📚 Deploy versioned docs
run: mike deploy --push --update-aliases ${{ github.ref_name }} latest
github-release:
name: 🚀 Create GitHub release
if: github.event_name == 'push' && endsWith(github.event.base_ref, 'master') && startsWith(github.ref, 'refs/tags')
needs:
- c-build-library
- c-check-format
- c-build-cli
- c-build-debian-package
- jvm-build
- jvm-check
- jvm-publish
- python-build
- python-check
- python-typing
- python-security
- python-test
- python-publish
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: 📥 Check-out
uses: actions/checkout@v6
- name: 📥 Download Linux x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-x86_64
path: ${{ runner.temp }}/c-library-linux-x86_64/
- name: 📥 Download Linux aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-linux-aarch64
path: ${{ runner.temp }}/c-library-linux-aarch64/
- name: 📥 Download macOS aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-macos-aarch64
path: ${{ runner.temp }}/c-library-macos-aarch64/
- name: 📥 Download Windows x86_64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-x86_64
path: ${{ runner.temp }}/c-library-windows-x86_64/
- name: 📥 Download Windows aarch64 library
uses: actions/download-artifact@v8
with:
name: c-library-windows-aarch64
path: ${{ runner.temp }}/c-library-windows-aarch64/
- name: 📦 Copy native libraries with architecture-specific names
run: |
mkdir -p tmp/c/
cp "$RUNNER_TEMP/c-library-linux-x86_64/libtirex_tracker.so" tmp/c/libtirex_tracker_linux_x86_64.so
cp "$RUNNER_TEMP/c-library-linux-aarch64/libtirex_tracker.so" tmp/c/libtirex_tracker_linux_aarch64.so
cp "$RUNNER_TEMP/c-library-macos-aarch64/libtirex_tracker.dylib" tmp/c/libtirex_tracker_macos_aarch64.dylib
cp "$RUNNER_TEMP/c-library-windows-x86_64/tirex_tracker.dll" tmp/c/tirex_tracker_windows_x86_64.dll
cp "$RUNNER_TEMP/c-library-windows-aarch64/tirex_tracker.dll" tmp/c/tirex_tracker_windows_aarch64.dll
- name: 📥 Download Linux CLI
uses: actions/download-artifact@v8
with:
name: c-cli-linux
path: tmp/c/
- name: ✏️ Rename Linux CLI
run: mv tmp/c/measure tmp/c/measure-${{ github.ref_name }}-linux
- name: 📥 Download macOS CLI
uses: actions/download-artifact@v8
with:
name: c-cli-macos
path: tmp/c/
- name: ✏️ Rename macOS CLI
run: mv tmp/c/measure tmp/c/measure-${{ github.ref_name }}-macos
- name: 📥 Download Windows CLI
uses: actions/download-artifact@v8
with:
name: c-cli-windows
path: tmp/c/
- name: ✏️ Rename Windows CLI
run: mv tmp/c/measure.exe tmp/c/measure-${{ github.ref_name }}-windows.exe
- name: 📥 Download Debian package
uses: actions/download-artifact@v8
with:
name: c-debian-package
path: tmp/c/
- name: 📥 Download Python wheels
uses: actions/download-artifact@v8
with:
name: python-wheels
path: tmp/python/dist/
- name: 📥 Download JVM Artifacts
uses: actions/download-artifact@v8
with:
pattern: jvm-*
merge-multiple: true
path: tmp/jvm/
- name: 🚀 Create GitHub release
uses: softprops/action-gh-release@v3
with:
name: Release ${{ github.ref_name }}
files: |
tmp/c/*.so
tmp/c/*.dylib
tmp/c/*.dll
tmp/c/measure-*-linux
tmp/c/measure-*-macos
tmp/c/measure-*-windows.exe
tmp/c/tirex-tracker-*-Linux.deb
tmp/python/dist/*
tmp/jvm/*/*.jar
fail_on_unmatched_files: true
draft: false
prerelease: false
generate_release_notes: true