Skip to content

Merge pull request #1024 from nbradac/cpp-and-csharp-package-overrides #1163

Merge pull request #1024 from nbradac/cpp-and-csharp-package-overrides

Merge pull request #1024 from nbradac/cpp-and-csharp-package-overrides #1163

Workflow file for this run

name: Continuous Integration
on:
workflow_call:
workflow_dispatch:
push:
branches:
- master
pull_request:
types: [opened, synchronize]
branches:
- master
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.java.installations.auto-detect=false -Dorg.gradle.warning.mode=fail'
permissions:
contents: read
jobs:
java-build:
name: Java ${{ matrix.java }} (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
java: [ '17', '21' ]
os: [ 'ubuntu-24.04', 'windows-latest', 'macos-latest' ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Setup java
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: ${{ matrix.java }}
- name: Setup BUILD_JAVA_HOME & BUILD_JAVA_VERSION
run: |
java -Xinternalversion
echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
echo "BUILD_JAVA_VERSION=${{ matrix.java }}" >> $GITHUB_ENV
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build with Gradle
run: ./gradlew --stacktrace
csharp-build:
name: C# ${{ matrix.dotnet }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
dotnet: [ '8.0.x' ]
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: 1
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Cache NuGet dependencies
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('csharp/**/*.sln') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ matrix.dotnet }}
- name: Build
run: ./csharp/build.sh
- name: Run tests
run: ./csharp/runtests.sh
- name: Pack
run: ./csharp/pack.sh
cpp-gcc-2004-build:
name: C++ GCC ${{ matrix.version }} (Ubuntu 20.04)
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
version: [ '6', '7', '8', '9', '10' ]
env:
CC: gcc-${{ matrix.version }}
CXX: g++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Install compiler
run: |
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ bionic main universe"
sudo apt-get install -y g++-${{ matrix.version }} libsparsehash-dev libidn11
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build
run: ./cppbuild/cppbuild
cpp-gcc-2404-build:
name: C++ GCC ${{ matrix.version }} (Ubuntu 24.04)
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
version: [ '11', '12', '13', '14' ]
env:
CC: gcc-${{ matrix.version }}
CXX: g++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Install compiler
run: |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y g++-${{ matrix.version }}
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build
run: ./cppbuild/cppbuild
cpp-clang-2004-build:
name: C++ Clang ${{ matrix.version }} (Ubuntu 20.04)
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
version: [ '9', '10', '11', '12' ]
env:
CC: clang-${{ matrix.version }}
CXX: clang++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Install compiler
run: |
sudo mkdir -p /etc/apt/keyrings/
curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg
echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] http://apt.llvm.org/focal/ llvm-toolchain-focal-${{ matrix.version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt-get update
sudo apt-get install -y clang-${{ matrix.version }} libsparsehash-dev libidn11
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build
run: ./cppbuild/cppbuild
cpp-clang-2404-build:
name: C++ Clang ${{ matrix.version }} (Ubuntu 24.04)
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
version: [ '13', '14', '15', '16', '17', '18' ]
env:
CC: clang-${{ matrix.version }}
CXX: clang++-${{ matrix.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Install compiler
run: |
sudo mkdir -p /etc/apt/keyrings/
curl https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/llvm-snapshot.gpg
echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] http://apt.llvm.org/jammy/ llvm-toolchain-jammy-${{ matrix.version }} main" | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt-get update
sudo apt-get install -y clang-${{ matrix.version }}
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build
run: ./cppbuild/cppbuild
cpp-clang-macos-build:
name: C++ Xcode ${{ matrix.version }} (macOS)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ 'macos-latest' ]
env:
CC: clang
CXX: clang++
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build
run: cmake --version && ./cppbuild/cppbuild
cpp-msvc-build:
name: C++ MSVC (Windows)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ 'windows-latest' ]
env:
CC: cl
CXX: cl
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Build
run: cppbuild/cppbuild.cmd
rust-build:
name: Rust ${{ matrix.rust }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
rust: [ stable, beta, nightly ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Rust setup
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- run: ./gradlew runRustTests
golang-build:
name: Golang ${{ matrix.version }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
version: [ '1.22.x' ]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache Gradle wrappers
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.version }}
- name: Setup java 17 to run the Gradle script
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Generate codecs
run: ./gradlew generateGolangCodecs
- name: Go
run: cd gocode && make