name: Coverage (Ubuntu) concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} cancel-in-progress: true on: push: branches: [ master ] paths-ignore: - '.github/workflows/*.yml' - '!.github/workflows/coverage.yml' pull_request: types: [opened, synchronize, reopened] paths-ignore: - '.github/workflows/*.yml' - '!.github/workflows/coverage.yml' schedule: - cron: '42 9 * * 1' workflow_dispatch: permissions: contents: read jobs: coverage: runs-on: ubuntu-latest timeout-minutes: 45 name: gcov coverage steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 persist-credentials: false - name: prep run: | sudo apt-get update sudo apt-get install -y acl libacl1-dev attr libattr1-dev liblz4-dev libzstd-dev libxxhash-dev libidn2-dev python3-cmarkgfm openssl gcovr echo "/usr/local/bin" >>"$GITHUB_PATH" - name: configure run: ./configure --enable-coverage --with-rrsync - name: make run: make - name: info run: rsync --version - name: coverage (pipe transport) run: | set -o pipefail sudo make coverage 2>&1 | tee cov-pipe.log - name: coverage (TCP transport) run: | set -o pipefail sudo make coverage-tcp 2>&1 | tee cov-tcp.log - name: coverage summary if: always() run: | { echo "## gcov coverage" echo "### Pipe transport (\`make coverage\`)" echo '```' grep -E '^(lines|functions|branches|decisions):' cov-pipe.log || echo '(no summary -- see step log)' echo '```' echo "### TCP transport (\`make coverage-tcp\`)" echo '```' grep -E '^(lines|functions|branches|decisions):' cov-tcp.log || echo '(no summary -- see step log)' echo '```' } >> "$GITHUB_STEP_SUMMARY" - name: upload HTML reports if: always() uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: retention-days: 45 name: coverage-html path: | coverage coverage-tcp