Skip to content

Communicator constructor (#652) #1771

Communicator constructor (#652)

Communicator constructor (#652) #1771

Workflow file for this run

name: CI
on:
workflow_dispatch:
push:
branches: ["main"]
pull_request:
# The branches below must be a subset of the branches above
branches: ["main"]
# See https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
CMAKE_BUILD_PARALLEL_LEVEL: 4
jobs:
ci:
name: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
- os: macos-26
- os: windows-2022
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET 8
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "oracle"
java-version: "17"
- name: Install Nightly Ice Builds
uses: ./.github/actions/install-nightly-ice
- name: Build C++ Demos
timeout-minutes: 20
working-directory: cpp
run: |
set -o pipefail
find . -name CMakeLists.txt -type f | while IFS= read -r file; do
dir=$(dirname "$file");
cmake -B "$dir/build" -S "$dir" -G Ninja -DCMAKE_COMPILE_WARNING_AS_ERROR=ON
cmake --build "$dir/build" --verbose
done
if: runner.os != 'Windows'
- name: Build C++ Demos
timeout-minutes: 20
working-directory: cpp
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
# Find Visual Studio installation using vswhere
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
$vsPath = & $vswhere -latest -property installationPath
$vcvarsall = "$vsPath\VC\Auxiliary\Build\vcvarsall.bat"
# Load MSVC environment
cmd /c "`"$vcvarsall`" x64 && set" | ForEach-Object {
if ($_ -match '^([^=]+)=(.*)$') {
[Environment]::SetEnvironmentVariable($matches[1], $matches[2], "Process")
}
}
Get-ChildItem -Recurse -Filter CMakeLists.txt | ForEach-Object {
Write-Output "Processing: $_"
$dir = $_.DirectoryName
cmake -B "$dir/build" -S "$dir" -G Ninja -DCMAKE_COMPILE_WARNING_AS_ERROR=ON
if ($LASTEXITCODE -ne 0) { throw "CMake configuration failed" }
# Run cmake build step
cmake --build "$dir/build" --verbose
if ($LASTEXITCODE -ne 0) { throw "CMake build failed" }
}
if: runner.os == 'Windows'
- name: Build C# Demos
timeout-minutes: 20
working-directory: csharp
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
Get-ChildItem -Recurse -Filter *.sln | ForEach-Object {
Write-Host "Building solution: $($_.FullName)"
dotnet build $_.FullName
if ($LASTEXITCODE -ne 0) {
throw "dotnet build failed for $($_.FullName)"
}
}
- name: Build Java Demos
timeout-minutes: 20
working-directory: java
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
Get-ChildItem -Recurse -Depth 2 -Filter gradlew | ForEach-Object {
Push-Location $_.DirectoryName
Write-Host "Building in $($_.DirectoryName)..."
& ./gradlew build
if ($LASTEXITCODE -ne 0) {
throw "Build failed in $($_.DirectoryName)"
}
Pop-Location
}
- name: Build JavaScript Demos
timeout-minutes: 20
working-directory: js
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
Get-ChildItem -Recurse -Depth 2 -Filter package.json | ForEach-Object {
Push-Location $_.DirectoryName
Write-Host "Installing and building in $($_.DirectoryName)..."
npm install
if ($LASTEXITCODE -ne 0) { throw "npm install failed in $($_.DirectoryName)" }
npm run build
if ($LASTEXITCODE -ne 0) { throw "npm build failed in $($_.DirectoryName)" }
npx eslint .
if ($LASTEXITCODE -ne 0) { throw "ESLint failed in $($_.DirectoryName)" }
Pop-Location
}
- name: Build Swift Demos
timeout-minutes: 60
working-directory: swift
run: |
set -o pipefail
find . -name Package.swift -type f | while IFS= read -r file; do
swift build --package-path "$(dirname "$file")"
done
if: runner.os == 'macOS'
ci-containers:
name: ${{ matrix.image }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
include:
- image: public.ecr.aws/amazonlinux/amazonlinux:2023
- image: rockylinux/rockylinux:10
container:
image: ${{ matrix.image }}
volumes:
- ${{ github.workspace }}:${{ github.workspace }}
steps:
- name: Install Dependencies
shell: bash
run: |
if [ -f /etc/os-release ]; then
. /etc/os-release
case "$ID" in
amzn)
dnf install -y tar gzip git gcc gcc-c++ cmake make ninja-build wget
dnf install -y https://download.zeroc.com/ice/nightly/amzn2023/ice-repo-nightly-1.0.0-1.amzn2023.noarch.rpm
dnf install -y libice-c++-devel
;;
rocky)
dnf install -y dnf-utils
dnf config-manager --enable crb
dnf install -y gcc gcc-c++ cmake make ninja-build wget
dnf install -y https://download.zeroc.com/ice/nightly/el10/ice-repo-nightly-1.0.0-1.el10.noarch.rpm
dnf install -y libice-c++-devel
;;
*)
echo "Unsupported OS: $ID"
exit 1
;;
esac
else
echo "OS release information not found."
exit 1
fi
- name: Checkout repository
uses: actions/checkout@v4
- name: Build C++ Demos
timeout-minutes: 20
working-directory: cpp
run: |
set -o pipefail
find . -name CMakeLists.txt -type f | while IFS= read -r file; do
dir=$(dirname "$file");
cmake -B "$dir/build" -S "$dir" -G Ninja -DCMAKE_COMPILE_WARNING_AS_ERROR=ON
cmake --build "$dir/build" --verbose
done