| name: libnetconf2 CI |
| on: |
| push: |
| branches: |
| - libnetconf3 |
| pull_request: |
| branches: |
| - libnetconf3 |
| |
| env: |
| DEFAULT_PACKAGES: libcmocka-dev zlib1g-dev libssh-dev libssl-dev libpam0g-dev |
| |
| jobs: |
| build: |
| name: ${{ matrix.config.name }} |
| runs-on: ${{ matrix.config.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| config: |
| - { |
| name: "Release, gcc", |
| os: "ubuntu-22.04", |
| build-type: "Release", |
| dep-build-type: "Release", |
| cc: "gcc", |
| options: "-DENABLE_TESTS=ON -DENABLE_DNSSEC=ON", |
| packages: "", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "Release, clang", |
| os: "ubuntu-22.04", |
| build-type: "Release", |
| dep-build-type: "Release", |
| cc: "clang", |
| options: "-DENABLE_TESTS=ON -DENABLE_DNSSEC=ON", |
| packages: "", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "Debug, gcc", |
| os: "ubuntu-22.04", |
| build-type: "Debug", |
| dep-build-type: "Release", |
| cc: "gcc", |
| options: "-DENABLE_DNSSEC=ON", |
| packages: "valgrind", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "Debug, clang", |
| os: "ubuntu-22.04", |
| build-type: "Debug", |
| dep-build-type: "Release", |
| cc: "clang", |
| options: "-DENABLE_DNSSEC=ON", |
| # no valgrind because it does not support DWARF5 yet generated by clang 14 |
| packages: "", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| - { |
| name: "SSH Only", |
| os: "ubuntu-22.04", |
| build-type: "Debug", |
| dep-build-type: "Release", |
| cc: "gcc", |
| options: "-DENABLE_TLS=OFF -DENABLE_SSH=ON", |
| packages: "valgrind", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| # - { |
| # name: "TLS Only", |
| # os: "ubuntu-22.04", |
| # build-type: "Debug", |
| # dep-build-type: "Release", |
| # cc: "gcc", |
| # options: "-DENABLE_TLS=ON -DENABLE_SSH=OFF", |
| # packages: "valgrind", |
| # snaps: "", |
| # make-prepend: "", |
| # make-target: "" |
| # } |
| # - { |
| # name: "No SSH nor TLS", |
| # os: "ubuntu-22.04", |
| # build-type: "Debug", |
| # dep-build-type: "Release", |
| # cc: "gcc", |
| # options: "-DENABLE_TLS=OFF -DENABLE_SSH=OFF", |
| # packages: "valgrind", |
| # snaps: "", |
| # make-prepend: "", |
| # make-target: "" |
| # } |
| - { |
| name: "ASAN and UBSAN", |
| os: "ubuntu-22.04", |
| build-type: "Debug", |
| dep-build-type: "Release", |
| cc: "clang", |
| options: "-DCMAKE_C_FLAGS=-fsanitize=address,undefined -DENABLE_VALGRIND_TESTS=OFF", |
| packages: "", |
| snaps: "", |
| make-prepend: "", |
| make-target: "" |
| } |
| |
| steps: |
| - uses: actions/checkout@v3 |
| |
| - name: Deps-packages |
| shell: bash |
| run: | |
| sudo apt-get update |
| sudo apt-get install $DEFAULT_PACKAGES ${{ matrix.config.packages }} |
| if ${{ matrix.config.snaps != '' }} |
| then sudo snap refresh; sudo snap install ${{ matrix.config.snaps }} |
| fi |
| |
| - name: Deps-uncrustify |
| shell: bash |
| working-directory: ${{ github.workspace }} |
| run: | |
| git clone --branch uncrustify-0.75.1 https://github.com/uncrustify/uncrustify |
| cd uncrustify |
| mkdir build |
| cd build |
| CC=${{ matrix.config.cc }} cmake .. |
| make |
| sudo make install |
| if: ${{ matrix.config.name == 'Debug, gcc' }} |
| |
| - name: Deps-libyang |
| shell: bash |
| run: | |
| git clone -b devel https://github.com/CESNET/libyang.git |
| cd libyang |
| mkdir build |
| cd build |
| CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.dep-build-type }} -DENABLE_TESTS=OFF .. |
| make -j2 |
| sudo make install |
| |
| - name: Deps-libval |
| shell: bash |
| run: | |
| git clone https://github.com/DNSSEC-Tools/DNSSEC-Tools.git dnssec-tools |
| cd dnssec-tools/dnssec-tools/validator |
| ./configure |
| make -j2 |
| sudo make install |
| |
| - name: Configure |
| shell: bash |
| working-directory: ${{ github.workspace }} |
| run: | |
| mkdir build |
| cd build |
| CC=${{ matrix.config.cc }} cmake -DCMAKE_BUILD_TYPE=${{ matrix.config.build-type }} ${{ matrix.config.options }} .. |
| |
| - name: Build |
| shell: bash |
| working-directory: ${{ github.workspace }}/build |
| run: | |
| export LC_ALL=C.UTF-8 |
| export PATH=/snap/bin:${{ github.workspace }}/coverity-tools/bin:$PATH |
| ${{ matrix.config.make-prepend }} make ${{ matrix.config.make-target }} |
| |
| - name: Test |
| shell: bash |
| working-directory: ${{ github.workspace }}/build |
| run: | |
| export LSAN_OPTIONS=suppressions=${{ github.workspace }}/tests/library_lsan.supp |
| ctest --output-on-failure |