Merge pull request #28 from ethomson/ethomson/c90_fix #95
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| config: | |
| # Linux (amd64, Xenial, GCC, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/xenial:latest' | |
| env: { CC: 'gcc', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=builtin', LEAK_CHECK: 'valgrind' } | |
| # Linux (amd64, Xenial, GCC, mbedTLS) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/xenial:latest' | |
| env: { CC: 'gcc', CMAKE_OPTIONS: '-DCRYPT=mbedtls -DUNICODE=iconv', LEAK_CHECK: 'valgrind' } | |
| # Linux (amd64, Xenial, Clang, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/xenial:latest' | |
| env: { CC: 'clang', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=iconv', LEAK_CHECK: 'valgrind' } | |
| # Linux (amd64, Xenial, Clang, OpenSSL Dynamic) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/xenial:latest' | |
| env: { CC: 'clang', CMAKE_OPTIONS: '-DCRYPT=openssl-dynamic -DUNICODE=iconv', LEAK_CHECK: 'valgrind' } | |
| # Linux (amd64, Xenial, Clang, mbedTLS) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/xenial:latest' | |
| env: { CC: 'clang', CMAKE_OPTIONS: '-DCRYPT=mbedtls -DUNICODE=builtin', LEAK_CHECK: 'valgrind' } | |
| # Linux (x86, Bionic, gcc, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/bionic-x86:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_GENERATOR: 'Ninja', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=builtin', LEAK_CHECK: 'valgrind' } | |
| # Linux (x86, Bionic, gcc, OpenSSL Dynamic) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/bionic-x86:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_GENERATOR: 'Ninja', CMAKE_OPTIONS: '-DCRYPT=openssl-dynamic -DUNICODE=builtin', LEAK_CHECK: 'valgrind' } | |
| # Linux (x86, Bionic, clang, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/bionic-x86:latest' | |
| qemu: true | |
| env: { CC: 'clang', CMAKE_GENERATOR: 'Ninja', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=iconv', LEAK_CHECK: 'valgrind' } | |
| # Linux (arm32, Bionic, gcc, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/bionic-arm32:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_GENERATOR: 'Ninja', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=builtin' } | |
| # Linux (arm32, Bionic, gcc, OpenSSL Dynamic) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/bionic-arm32:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_GENERATOR: 'Ninja', CMAKE_OPTIONS: '-DCRYPT=openssl-dynamic -DUNICODE=builtin' } | |
| # Linux (arm64, Bionic, gcc, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/bionic-arm64:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_GENERATOR: 'Ninja', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=builtin' } | |
| # Linux (arm64, Bionic, gcc, OpenSSL Dynamic) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/bionic-arm64:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_GENERATOR: 'Ninja', CMAKE_OPTIONS: '-DCRYPT=openssl-dynamic -DUNICODE=builtin' } | |
| # Linux (amd64, CentOS 7, gcc, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/centos7:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=builtin' } | |
| # Linux (arm64, CentOS 7, gcc, OpenSSL Dynamic) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/centos7:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_OPTIONS: '-DCRYPT=openssl-dynamic -DUNICODE=builtin' } | |
| # Linux (amd64, CentOS 8, gcc, OpenSSL) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/centos8:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_OPTIONS: '-DCRYPT=openssl -DUNICODE=builtin' } | |
| # Linux (arm64, CentOS 8, gcc, OpenSSL Dynamic) | |
| - platform: 'ubuntu-latest' | |
| container: 'ghcr.io/libgit2/libgit2/centos8:latest' | |
| qemu: true | |
| env: { CC: 'gcc', CMAKE_OPTIONS: '-DCRYPT=openssl-dynamic -DUNICODE=builtin' } | |
| # macOS | |
| - platform: 'macos-latest' | |
| container: '' | |
| env: { LEAK_CHECK: 'leaks' } | |
| fail-fast: false | |
| runs-on: ${{ matrix.config.platform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up build environment | |
| run: docker run --rm --privileged multiarch/qemu-user-static:register --reset | |
| if: matrix.config.qemu == true | |
| - name: Build and test | |
| env: ${{ matrix.config.env }} | |
| run: | | |
| if [ -n "${{ matrix.config.container }}" ]; then | |
| docker run -v $(pwd):/src -w /src -e CC -e CMAKE_GENERATOR -e CMAKE_OPTIONS -e PKG_CONFIG_PATH -e SKIP_SSH_TESTS -e SKIP_NEGOTIATE_TESTS ${{ matrix.config.container }} /bin/bash -c "mkdir build && cd build && ../ci/build.sh && ../ci/test.sh" | |
| else | |
| mkdir build && cd build | |
| ../ci/build.sh | |
| ../ci/test.sh | |
| fi |