name: libnetconf2 devel push on: push: branches: - devel env: DEFAULT_PACKAGES: libcmocka-dev zlib1g-dev libssh-dev libssl-dev COVERITY_PROJECT: CESNET%2Flibnetconf2 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: "Coverity", os: "ubuntu-latest", build-type: "Debug", dep-build-type: "Debug", cc: "clang", options: "-DENABLE_DNSSEC=ON", packages: "", snaps: "", make-prepend: "cov-build --dir cov-int", make-target: "" } - { name: "Codecov", os: "ubuntu-latest", build-type: "Debug", dep-build-type: "Debug", cc: "gcc", options: "-DENABLE_COVERAGE=ON -DENABLE_DNSSEC=ON", packages: "lcov", snaps: "", make-prepend: "", make-target: "" } 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 install ${{ matrix.config.snaps }} fi - name: Deps-coverity shell: bash working-directory: ${{ github.workspace }} run: | wget -q https://scan.coverity.com/download/linux64 --post-data "token=$TOKEN&project=$COVERITY_PROJECT" -O coverity-tools.tar.gz mkdir coverity-tools tar xzf coverity-tools.tar.gz --strip 1 -C coverity-tools env: TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} if: ${{ matrix.config.name == 'Coverity' }} - 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 - name: Upload to Coverity.com shell: bash working-directory: ${{ github.workspace }}/build run: | tar czvf libnetconf2.tgz cov-int curl \ --form token=$TOKEN \ --form email=mvasko@cesnet.cz \ --form file=@libnetconf2.tgz \ --form version="`grep Version ./libnetconf2.pc | cut -d' ' -f 2`" \ --form description="libnetconf2 NETCONF library" \ https://scan.coverity.com/builds?project=$COVERITY_PROJECT env: TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} if: ${{ matrix.config.name == 'Coverity' }} - name: Upload to Codecov.io shell: bash working-directory: ${{ github.workspace }}/build run: bash <(curl -s https://codecov.io/bash) if: ${{ matrix.config.name == 'Codecov' }}