Skip to content

don't need that there. #2

don't need that there.

don't need that there. #2

Workflow file for this run

name: CI Linux
on:
workflow_dispatch:
push:
branches: ["main"]
pull_request:
branches: ["main"]
concurrency:
group: ci-linux-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build-and-test:
name: ${{ matrix.distribution }}-${{ matrix.arch }}
runs-on: ${{ (contains(matrix.arch, 'arm64') || contains(matrix.arch, 'aarch64')) && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
strategy:
fail-fast: false
matrix:
include:
# RPM-based distributions
- distribution: el9
arch: x86_64
image_type: rpm
python: python3.12
- distribution: el9
arch: aarch64
image_type: rpm
python: python3.12
- distribution: el10
arch: x86_64
image_type: rpm
- distribution: el10
arch: aarch64
image_type: rpm
- distribution: amzn2023
arch: x86_64
image_type: rpm
python: python3.12
- distribution: amzn2023
arch: aarch64
image_type: rpm
python: python3.12
# DEB-based distributions
- distribution: ubuntu24.04
arch: amd64
image_type: deb
- distribution: ubuntu24.04
arch: arm64
image_type: deb
- distribution: debian12
arch: amd64
image_type: deb
- distribution: debian12
arch: arm64
image_type: deb
- distribution: debian13
arch: amd64
image_type: deb
- distribution: debian13
arch: arm64
image_type: deb
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Load version info
run: |
source config/version.env
echo "CHANNEL=$CHANNEL" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: zeroc-ice
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and test C++
run: |
docker run --rm \
-v "$GITHUB_WORKSPACE:/ice" \
-w /ice/cpp \
ghcr.io/zeroc-ice/ice-${{ matrix.image_type }}-builder-${{ matrix.distribution }}:${CHANNEL} \
bash -c "
set -ex
make -j\$(nproc) srcs
make -j\$(nproc) tests
# The --rfilter option excludes tests matching the regex. These tests are excluded because
# they require dependencies or permissions not available in the Docker builder images:
# - IceUtil/priority, Ice/threadPoolPriority: require CAP_SYS_NICE for thread priorities
# - Glacier2/*: require the passlib Python module
# - IceSSL/configuration: requires the openssl CLI tool
${{ matrix.python || 'python3' }} allTests.py --workers=4 --debug --continue \
--rfilter='IceUtil/priority|Ice/threadPoolPriority|Glacier2/|IceSSL/configuration'
"
- name: Upload test logs
uses: actions/upload-artifact@v4
with:
name: test-logs-${{ matrix.distribution }}-${{ matrix.arch }}
path: cpp/**/*.log
if-no-files-found: ignore
if: always()