name: Coverity Scan on: schedule: - cron: '0 0 1 * *' # Monthly (1st day of month at midnight) workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits. permissions: {} jobs: coverity_scan: name: Scan runs-on: ubuntu-latest strategy: matrix: libt_version: ["2.0.10"] qbt_gui: ["GUI=ON"] qt_version: ["6.5.2"] env: boost_path: "${{ github.workspace }}/../boost" coverity_path: "${{ github.workspace }}/../coverity" libtorrent_path: "${{ github.workspace }}/../libtorrent" steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt update sudo apt install \ build-essential cmake ninja-build \ libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev - name: Install boost env: BOOST_MAJOR_VERSION: "1" BOOST_MINOR_VERSION: "84" BOOST_PATCH_VERSION: "0" run: | boost_url="https://boostorg.jfrog.io/artifactory/main/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" set +e curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" if [ "$_exitCode" -ne "0" ]; then curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" fi mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: ${{ matrix.qt_version }} archives: icu qtbase qtdeclarative qtsvg qttools cache: true - name: Install libtorrent run: | git clone \ --branch v${{ matrix.libt_version }} \ --depth 1 \ --recurse-submodules \ https://github.com/arvidn/libtorrent.git \ ${{ env.libtorrent_path }} cd ${{ env.libtorrent_path }} cmake \ -B build \ -G "Ninja" \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOST_ROOT="${{ env.boost_path }}" \ -Ddeprecated-functions=OFF cmake --build build sudo cmake --install build - name: Download Coverity Build Tool run: | curl \ -L \ -d "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \ -o "${{ runner.temp }}/coverity_tool.tgz" \ "https://scan.coverity.com/download/linux64" mkdir -p ${{ env.coverity_path }} tar \ -xf "${{ runner.temp }}/coverity_tool.tgz" \ -C "${{ env.coverity_path }}" \ --strip-components 1 - name: Build qBittorrent run: | cmake \ -B build \ -G "Ninja" \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DBOOST_ROOT="${{ env.boost_path }}" \ -DVERBOSE_CONFIGURE=ON \ -D${{ matrix.qbt_gui }} PATH="${{ env.coverity_path }}/bin:$PATH" \ cov-build \ --dir cov-int \ cmake --build build - name: Submit the result to Coverity Scan run: | tar -caf qbittorrent.xz cov-int curl \ --form token="${{ secrets.COVERITY_SCAN_TOKEN }}" \ --form email=sledgehammer999@qbittorrent.org \ --form file=@qbittorrent.xz \ --form version="$(git rev-parse --short HEAD)" \ --form description="master" \ https://scan.coverity.com/builds?project=qbittorrent%2FqBittorrent