PROTON-2253: Introduce simple github actions CI
This is a simple CI job triggered by pushes to master and pull requests against
master it builds and tests on Ubuntu/Windows/macOS. It also produces some output
artifacts which have the install area and the generated python packages.
- Using python 3.6 as this is the version that works on all platforms tested
- Have to fix windows chocolately swig to 4.0.1 as 4.0.2 choco package is broken
- Disable ruby build on macOS due to some version mismatch issue
diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml
new file mode 100644
index 0000000..ba6d3a0
--- /dev/null
+++ b/.github/workflows/c-cpp.yml
@@ -0,0 +1,99 @@
+name: Qpid Proton Github Actions CI
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-latest, windows-latest, macOS-latest]
+ buildType: [RelWithDebInfo]
+ include:
+ - os: windows-latest
+ cmake_extra: '-A x64 -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake'
+ cmake_generator: '-G "Visual Studio 16 2019"'
+ - os: macOS-latest
+ pkg_config_path: '/usr/local/opt/openssl@1.1/lib/pkgconfig'
+ cmake_extra: '-DBUILD_RUBY=no'
+ 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@v2
+ - name: Create Build and Install directories
+ run: mkdir -p "${BuildDir}" "{InstallPrefix}"
+ shell: bash
+ - name: Setup python
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.6
+ architecture: x64
+ - name: Install python dependencies
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install setuptools wheel tox unittest2
+ - name: Install Linux dependencies
+ if: ${{ runner.os == 'Linux' }}
+ run: |
+ sudo apt install -y swig libpython3-dev libsasl2-dev libjsoncpp-dev
+ - 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: 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@v2
+ with:
+ name: qpid_proton_pkg_${{matrix.os}}_${{matrix.buildType}}
+ path: ${{env.InstallPrefix}}
+ - name: Upload python packages
+ uses: actions/upload-artifact@v2
+ with:
+ name: python-pkgs
+ path: ${{env.BuildDir}}/python/pkgs
+ - name: ctest
+ continue-on-error: true
+ working-directory: ${{env.BuildDir}}
+ run: ctest -C ${BuildType} -V -T Test --no-compress-output
+ shell: bash
+ - name: Upload Test results
+ uses: actions/upload-artifact@v2
+ 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@v2
+ 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