| name: Build |
| |
| on: [push, pull_request] |
| |
| jobs: |
| build: |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| 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 -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@v2 |
| - name: Create Build and Install directories |
| run: mkdir -p "${BuildDir}" "${InstallPrefix}" |
| shell: bash |
| |
| # PROTON-2295 avoid using go 1.15.3 on macOS, which is broken |
| - if: runner.os == 'macOS' |
| name: Setup go (Mac OS) |
| uses: actions/setup-go@v2 |
| with: |
| go-version: '^1.15.4' |
| |
| - 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 |
| - 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 |
| - id: ctest |
| name: ctest |
| working-directory: ${{env.BuildDir}} |
| run: 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@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 |