Build #926
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: [push, pull_request, workflow_dispatch] | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-24.04 | |
- macOS-13 | |
- windows-latest | |
buildType: | |
- RelWithDebInfo | |
include: | |
- python_version: '3.11' | |
- os: windows-latest | |
cmake_extra: '-A x64 -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake' | |
- os: macOS-13 | |
pkg_config_path: '/usr/local/opt/openssl@1.1/lib/pkgconfig' | |
cmake_extra: '-DBUILD_RUBY=no -DTHREADERCISER=ON' | |
ctest_extra: '--exclude-regex c-threaderciser' | |
env: | |
BuildType: ${{matrix.buildType}} | |
BuildDir: ${{github.workspace}}/BLD | |
InstallPrefix: ${{github.workspace}}/INSTALL | |
PKG_CONFIG_PATH: ${{matrix.pkg_config_path}} | |
VCPKG_DEFAULT_TRIPLET: x64-windows | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create Build and Install directories | |
run: mkdir -p "${BuildDir}" "${InstallPrefix}" | |
shell: bash | |
- name: Setup python | |
uses: actions/setup-python@v5 | |
with: | |
cache-dependency-path: python/ci_requirements.txt | |
python-version: ${{matrix.python_version}} | |
architecture: x64 | |
cache: 'pip' | |
- name: Install python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade -r python/ci_requirements.txt | |
- name: Install Linux dependencies | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt install -y swig libpython3-dev libsasl2-dev libjsoncpp-dev softhsm2 opensc | |
- name: Install Windows dependencies | |
if: runner.os == 'Windows' | |
run: | | |
choco install -y swig --version=4.0.1 | |
vcpkg install jsoncpp | |
vcpkg integrate install | |
- name: Install MacOS dependencies | |
if: runner.os == 'macOS' | |
run: | | |
brew install libuv swig pkgconfig jsoncpp | |
- name: OTel build/install | |
if: runner.os == 'Linux' | |
working-directory: ${{github.workspace}} | |
run: sudo sh ./ci/otel.sh | |
shell: bash | |
- name: pkcs11-provider build/install | |
if: runner.os == 'Linux' | |
run: sudo sh ./ci/pkcs11-provider.sh | |
shell: bash | |
- name: cmake configure | |
working-directory: ${{env.BuildDir}} | |
run: cmake "${{github.workspace}}" "-DCMAKE_BUILD_TYPE=${BuildType}" "-DCMAKE_INSTALL_PREFIX=${InstallPrefix}" ${{matrix.cmake_extra}} | |
shell: bash | |
- name: cmake build/install | |
run: cmake --build "${BuildDir}" --config ${BuildType} -t install | |
shell: bash | |
- name: Upload Install | |
uses: actions/upload-artifact@v4 | |
with: | |
name: qpid_proton_pkg_${{matrix.os}}_${{matrix.buildType}} | |
path: ${{env.InstallPrefix}} | |
- name: Upload python source | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-src_${{matrix.os}} | |
path: ${{env.BuildDir}}/python/dist/*.tar.gz | |
- name: Upload python wheel | |
uses: actions/upload-artifact@v4 | |
with: | |
name: python-wheel_${{matrix.os}} | |
path: ${{env.BuildDir}}/python/dist/*.whl | |
- id: ctest | |
name: ctest | |
working-directory: ${{env.BuildDir}} | |
run: | | |
if [ "$RUNNER_OS" = "Linux" ]; then | |
pushd ${{github.workspace}} | |
. scripts/prep-pkcs11_test.sh | |
popd | |
fi | |
ctest -C ${BuildType} -V -T Test --no-compress-output ${{matrix.ctest_extra}} | |
shell: bash | |
- name: Upload Test results | |
if: always() && (steps.ctest.outcome == 'failure' || steps.ctest.outcome == 'success') | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Test_Results_${{matrix.os}}_${{matrix.buildType}} | |
path: ${{env.BuildDir}}/Testing/**/*.xml | |
- name: Upload Python & C build directories on failure | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: Debug-python-C-BLD_${{matrix.os}}_${{matrix.buildType}} | |
path: | | |
${{env.BuildDir}}/c | |
${{env.BuildDir}}/python | |
- name: Environment (Linux/Windows) | |
if: always() && runner.os != 'macOS' | |
run: env -0 | sort -z | tr '\0' '\n' | |
shell: bash | |
- name: Environment (macOS) | |
if: always() && runner.os == 'macOS' | |
run: env | sort | |
shell: bash |