From 3a92629882453e55b424ad0cdc443fb3eab52eb8 Mon Sep 17 00:00:00 2001 From: xavier2k6 <42386382+xavier2k6@users.noreply.github.com> Date: Sat, 27 Apr 2024 13:07:18 +0100 Subject: [PATCH] GHA CI: Test FORTIFY_SOURCE=3 on Ubuntu 24.04 Image --- .github/workflows/ci_macos.yaml | 149 -------------------- .github/workflows/ci_ubuntu.yaml | 12 +- .github/workflows/ci_windows.yaml | 199 --------------------------- .github/workflows/coverity-scan.yaml | 115 ---------------- .github/workflows/stale_bot.yaml | 25 ---- 5 files changed, 6 insertions(+), 494 deletions(-) delete mode 100644 .github/workflows/ci_macos.yaml delete mode 100644 .github/workflows/ci_windows.yaml delete mode 100644 .github/workflows/coverity-scan.yaml delete mode 100644 .github/workflows/stale_bot.yaml diff --git a/.github/workflows/ci_macos.yaml b/.github/workflows/ci_macos.yaml deleted file mode 100644 index 85bda25b6d8e..000000000000 --- a/.github/workflows/ci_macos.yaml +++ /dev/null @@ -1,149 +0,0 @@ -name: CI - macOS - -on: [pull_request, push] - -permissions: - actions: write - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: ${{ github.head_ref != '' }} - -jobs: - ci: - name: Build - runs-on: macos-latest - - strategy: - fail-fast: false - matrix: - libt_version: ["2.0.10", "1.2.19"] - qbt_gui: ["GUI=ON", "GUI=OFF"] - qt_version: ["6.7.0"] - - env: - boost_path: "${{ github.workspace }}/../boost" - libtorrent_path: "${{ github.workspace }}/../libtorrent" - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install dependencies - uses: Wandalen/wretry.action@v3 - env: - HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 - HOMEBREW_NO_INSTALL_CLEANUP: 1 - with: - attempt_delay: 20000 - attempt_limit: 6 - command: | - brew update > /dev/null - brew install \ - cmake ninja \ - openssl@3 zlib - - - name: Setup ccache - uses: Chocobo1/setup-ccache-action@v1 - with: - store_cache: ${{ github.ref == 'refs/heads/master' }} - update_packager_index: false - ccache_options: | - max_size=2G - - - name: Install boost - env: - BOOST_MAJOR_VERSION: "1" - BOOST_MINOR_VERSION: "86" - 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@v4 - with: - version: ${{ matrix.qt_version }} - archives: qtbase qtdeclarative qtsvg qttools - # Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0 - 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" \ - -DBUILD_SHARED_LIBS=OFF \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_CXX_STANDARD=17 \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DBOOST_ROOT="${{ env.boost_path }}" \ - -Ddeprecated-functions=OFF - cmake --build build - sudo cmake --install build - - - name: Build qBittorrent - run: | - CXXFLAGS="$CXXFLAGS -DQT_FORCE_ASSERTS -Werror -Wno-error=deprecated-declarations" \ - LDFLAGS="$LDFLAGS -gz" \ - cmake \ - -B build \ - -G "Ninja" \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DBOOST_ROOT="${{ env.boost_path }}" \ - -DTESTING=ON \ - -DVERBOSE_CONFIGURE=ON \ - -D${{ matrix.qbt_gui }} - cmake --build build --target qbt_update_translations - cmake --build build - cmake --build build --target check - - - name: Prepare build artifacts - run: | - # create .dmg - appName="qbittorrent" - if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then - appName="qbittorrent-nox" - fi - # package - pushd build - PACKAGE_RETRY=0 - while [ "$PACKAGE_RETRY" -lt "3" ]; do - macdeployqt "$appName.app" -dmg -no-strip - if [ -f "$appName.dmg" ]; then - break - fi - sleep 5 - PACKAGE_RETRY=$((PACKAGE_RETRY + 1)) - echo "Retry $PACKAGE_RETRY..." - done - popd - # prepare upload folder - mkdir upload - cp "build/$appName.dmg" upload - mkdir upload/cmake - cp build/compile_commands.json upload/cmake - mkdir upload/cmake/libtorrent - cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} - path: upload diff --git a/.github/workflows/ci_ubuntu.yaml b/.github/workflows/ci_ubuntu.yaml index 7f22c4803bf4..bd291017efaf 100644 --- a/.github/workflows/ci_ubuntu.yaml +++ b/.github/workflows/ci_ubuntu.yaml @@ -13,18 +13,18 @@ concurrency: jobs: ci: name: Build - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: - libt_version: ["2.0.10", "1.2.19"] + libt_version: ["RC_2_0", "RC_1_2"] qbt_gui: ["GUI=ON", "GUI=OFF"] - qt_version: ["6.5.2"] + qt_version: ["6.5.3"] env: boost_path: "${{ github.workspace }}/../boost" - harden_flags: "-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS" + harden_flags: "-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS" libtorrent_path: "${{ github.workspace }}/../libtorrent" steps: @@ -49,7 +49,7 @@ jobs: - name: Install boost env: BOOST_MAJOR_VERSION: "1" - BOOST_MINOR_VERSION: "76" + BOOST_MINOR_VERSION: "87" 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" @@ -73,7 +73,7 @@ jobs: - name: Install libtorrent run: | git clone \ - --branch v${{ matrix.libt_version }} \ + --branch ${{ matrix.libt_version }} \ --depth 1 \ --recurse-submodules \ https://github.com/arvidn/libtorrent.git \ diff --git a/.github/workflows/ci_windows.yaml b/.github/workflows/ci_windows.yaml deleted file mode 100644 index fa43a38cb247..000000000000 --- a/.github/workflows/ci_windows.yaml +++ /dev/null @@ -1,199 +0,0 @@ -name: CI - Windows - -on: [pull_request, push] - -permissions: - actions: write - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: ${{ github.head_ref != '' }} - -jobs: - ci: - name: Build - runs-on: windows-latest - - strategy: - fail-fast: false - matrix: - libt_version: ["2.0.10", "1.2.19"] - - env: - boost_path: "${{ github.workspace }}/../boost" - libtorrent_path: "${{ github.workspace }}/../libtorrent" - vcpkg_path: "c:/vcpkg" - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup devcmd - uses: ilammy/msvc-dev-cmd@v1 - - - name: Install build tools - run: | - if ((Get-Command "ninja.exe" -ErrorAction SilentlyContinue) -eq $null) - { - choco install ninja - } - where.exe ninja - ninja --version - - # https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha - - name: Set variables for vcpkg - uses: actions/github-script@v7 - with: - script: | - core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || '')); - core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || '')); - - - name: Install dependencies with vcpkg - run: | - # create our own triplet - New-Item ` - -Force ` - -ItemType File ` - -Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" - # OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554 - Add-Content ` - -Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" ` - -Value @("set(VCPKG_TARGET_ARCHITECTURE x64)", - "set(VCPKG_LIBRARY_LINKAGE static)", - "set(VCPKG_CRT_LINKAGE dynamic)", - "set(VCPKG_BUILD_TYPE release)") - # clear buildtrees after each package installation to reduce disk space requirements - $packages = ` - "openssl:x64-windows-static-md-release", - "zlib:x64-windows-static-md-release" - ${{ env.vcpkg_path }}/vcpkg.exe upgrade ` - --no-dry-run ` - --overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" - ${{ env.vcpkg_path }}/vcpkg.exe install ` - --binarysource="clear;x-gha,readwrite" ` - --clean-after-build ` - --overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" ` - $packages - - - name: Install boost - env: - BOOST_MAJOR_VERSION: "1" - BOOST_MINOR_VERSION: "86" - 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" - curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" - tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.." - if ($LastExitCode -ne 0) - { - curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" - tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.." - } - move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}" - - - name: Install Qt - uses: jurplel/install-qt-action@v4 - with: - version: "6.8.0" - arch: win64_msvc2022_64 - archives: qtbase 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 }} - $env:CXXFLAGS+=" /guard:cf" - $env:LDFLAGS+=" /guard:cf" - cmake ` - -B build ` - -G "Ninja" ` - -DCMAKE_BUILD_TYPE=RelWithDebInfo ` - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` - -DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}/install" ` - -DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" ` - -DBOOST_ROOT="${{ env.boost_path }}" ` - -DBUILD_SHARED_LIBS=OFF ` - -Ddeprecated-functions=OFF ` - -Dstatic_runtime=OFF ` - -DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release - cmake --build build - cmake --install build - - - name: Build qBittorrent - run: | - $env:CXXFLAGS+="/DQT_FORCE_ASSERTS /WX" - cmake ` - -B build ` - -G "Ninja" ` - -DCMAKE_BUILD_TYPE=RelWithDebInfo ` - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` - -DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" ` - -DBOOST_ROOT="${{ env.boost_path }}" ` - -DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" ` - -DMSVC_RUNTIME_DYNAMIC=ON ` - -DTESTING=ON ` - -DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release ` - -DVERBOSE_CONFIGURE=ON ` - --graphviz=build/target_graph.dot - cmake --build build --target qbt_update_translations - cmake --build build - cmake --build build --target check - - - name: Prepare build artifacts - run: | - mkdir upload - mkdir upload/qBittorrent - copy build/qbittorrent.exe upload/qBittorrent - copy build/qbittorrent.pdb upload/qBittorrent - copy dist/windows/qt.conf upload/qBittorrent - # runtimes - copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Core.dll" upload/qBittorrent - copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Gui.dll" upload/qBittorrent - copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Network.dll" upload/qBittorrent - copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Sql.dll" upload/qBittorrent - copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Svg.dll" upload/qBittorrent - copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Widgets.dll" upload/qBittorrent - copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Xml.dll" upload/qBittorrent - mkdir upload/qBittorrent/plugins/iconengines - copy "${{ env.Qt_ROOT_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines - mkdir upload/qBittorrent/plugins/imageformats - copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats - copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats - mkdir upload/qBittorrent/plugins/platforms - copy "${{ env.Qt_ROOT_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms - mkdir upload/qBittorrent/plugins/sqldrivers - copy "${{ env.Qt_ROOT_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/qBittorrent/plugins/sqldrivers - mkdir upload/qBittorrent/plugins/styles - copy "${{ env.Qt_ROOT_DIR }}/plugins/styles/qmodernwindowsstyle.dll" upload/qBittorrent/plugins/styles - mkdir upload/qBittorrent/plugins/tls - copy "${{ env.Qt_ROOT_DIR }}/plugins/tls/qschannelbackend.dll" upload/qBittorrent/plugins/tls - # cmake additionals - mkdir upload/cmake - copy build/compile_commands.json upload/cmake - copy build/target_graph.dot upload/cmake - mkdir upload/cmake/libtorrent - copy ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }} - path: upload - - - name: Create installer - run: | - 7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip" - makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi - - - name: Upload installer - uses: actions/upload-artifact@v4 - with: - name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup - path: dist/windows/qbittorrent_*_setup.exe diff --git a/.github/workflows/coverity-scan.yaml b/.github/workflows/coverity-scan.yaml deleted file mode 100644 index aaaefb5989a4..000000000000 --- a/.github/workflows/coverity-scan.yaml +++ /dev/null @@ -1,115 +0,0 @@ -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: "86" - 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@v4 - 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 diff --git a/.github/workflows/stale_bot.yaml b/.github/workflows/stale_bot.yaml deleted file mode 100644 index 6cd7278557c5..000000000000 --- a/.github/workflows/stale_bot.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: Stale bot - -on: - schedule: - - cron: '0 0 * * *' - -permissions: - pull-requests: write - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - name: Mark and close stale PRs - uses: actions/stale@v9 - with: - stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity." - close-pr-message: "This PR was closed because it has been stalled for some time with no activity." - days-before-stale: -1 # avoid marking issues - days-before-pr-stale: 60 - days-before-close: -1 # avoid closing issues - days-before-pr-close: 7 - exempt-all-pr-assignees: true # avoid stale for all PR with assignees - exempt-all-pr-milestones: true # avoid stale for all PR with milestones - operations-per-run: 200