name: libnetconf2 CI on: push: branches: - master - devel pull_request: branches: - master - devel env: DEFAULT_PACKAGES: libcmocka-dev zlib1g-dev libssh-dev libssl-dev jobs: git-branch: name: Get git branch runs-on: ubuntu-18.04 outputs: branch-name: ${{ steps.get-git-branch.outputs.branch-name }} steps: - id: get-git-branch run: | if ${{ github.event_name == 'push' }} then export GIT_BRANCH=`echo ${{ github.ref }} | cut -d'/' -f 3` else export GIT_BRANCH=${{ github.base_ref }} fi echo "::set-output name=branch-name::$GIT_BRANCH" build: name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} needs: git-branch strategy: fail-fast: false matrix: config: - { name: "Release, Ubuntu 18.04, gcc", os: "ubuntu-18.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, Ubuntu 18.04, clang", os: "ubuntu-18.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, Ubuntu 18.04, gcc", os: "ubuntu-18.04", build-type: "Debug", dep-build-type: "Release", cc: "gcc", options: "-DENABLE_DNSSEC=ON", packages: "valgrind", snaps: "", make-prepend: "", make-target: "" } - { name: "Debug, Ubuntu 18.04, clang", os: "ubuntu-18.04", build-type: "Debug", dep-build-type: "Release", cc: "clang", options: "-DENABLE_DNSSEC=ON", packages: "valgrind", snaps: "", make-prepend: "", make-target: "" } - { name: "SSH Only", os: "ubuntu-18.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-18.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-18.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-18.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: "" } - { name: "ABI Check", os: "ubuntu-latest", build-type: "ABICheck", dep-build-type: "Debug", cc: "gcc", options: "", packages: "abi-dumper abi-compliance-checker snap", snaps: "core universal-ctags", make-prepend: "", make-target: "abi-check" } steps: - uses: actions/checkout@v2 - name: Deps-packages shell: bash run: | sudo add-apt-repository ppa:kedazo/libssh-0.7.x -y 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.71.0 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, Ubuntu 18.04, gcc' }} - name: Deps-libyang shell: bash run: | git clone -b ${{needs.git-branch.outputs.branch-name}} 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_BUILD_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: ctest --output-on-failure