Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/actionlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ permissions:
jobs:
actionlint:
runs-on: ubuntu-latest
timeout-minutes: 15
name: actionlint
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/almalinux-8-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,13 @@ on:
schedule:
- cron: '42 8 * * *'

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 45
container:
image: almalinux:8
name: Test rsync on AlmaLinux 8
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/android-static-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ on:
- cron: '42 8 * * 1'
workflow_dispatch:

permissions:
contents: read

env:
# Minimum supported API level. 24 (Android 7.0) runs on every modern
# phone while keeping broad reach; bump if you need newer Bionic APIs.
Expand All @@ -36,6 +39,7 @@ env:
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 45
name: ${{ matrix.abi }}
strategy:
fail-fast: false
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/asan-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,13 @@ on:
- cron: '42 9 * * 1'
workflow_dispatch:

permissions:
contents: read

jobs:
asan:
runs-on: ubuntu-latest
timeout-minutes: 45
name: rsync ASan+UBSan (clang)
env:
# rsync intentionally leaks small allocations at process exit, so leak
Expand Down
16 changes: 6 additions & 10 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,20 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true

# Coverage duplicates the Ubuntu suite to measure it rather than protect a
# distinct PR failure mode. Keep that cost scheduled and available on demand.
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@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/cygwin-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ on:
schedule:
- cron: '42 8 * * *'

permissions:
contents: read

jobs:
test:
runs-on: windows-2022
timeout-minutes: 60
name: Test rsync on Cygwin
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/fleettest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,13 @@ on:
schedule:
- cron: '17 7 * * 1'

permissions:
contents: read

jobs:
fleettest:
runs-on: ubuntu-latest
timeout-minutes: 45
name: fleettest against localhost
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/freebsd-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ on:
schedule:
- cron: '42 8 * * 1'

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 45
name: Test rsync on FreeBSD
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/macos-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ on:
schedule:
- cron: '42 8 * * *'

permissions:
contents: read

jobs:
test:
runs-on: macos-latest
timeout-minutes: 45
name: Test rsync on macOS
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/netbsd-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ on:
schedule:
- cron: '42 8 * * 1'

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 45
name: Test rsync on NetBSD
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/openbsd-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ on:
schedule:
- cron: '42 8 * * 1'

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 45
name: Test rsync on OpenBSD
steps:
- uses: actions/checkout@v4
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/scan-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ on:
- '!.github/workflows/scan-build.yml'
workflow_dispatch:

permissions:
contents: read

jobs:
# GATING run: pinned clang-18 on a pinned runner so the checker set -- and
# thus the expected zero -- is deterministic. The tree is kept clean for
Expand All @@ -25,6 +28,7 @@ jobs:
# and the runner (ubuntu-24.04, whose apt repos carry those packages).
gate-clang18:
runs-on: ubuntu-24.04
timeout-minutes: 45
name: scan-build gate (clang-18, pinned)
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -66,6 +70,7 @@ jobs:
# broken run from affecting the workflow's required status.
informational-latest:
runs-on: ubuntu-latest
timeout-minutes: 45
name: scan-build (latest clang, informational)
continue-on-error: true
steps:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/solaris-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ on:
schedule:
- cron: '42 8 * * 1'

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 45
name: Test rsync on Solaris
steps:
- uses: actions/checkout@v4
Expand Down
70 changes: 0 additions & 70 deletions .github/workflows/ubuntu-22.04-build.yml

This file was deleted.

58 changes: 53 additions & 5 deletions .github/workflows/ubuntu-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,35 @@ on:
- '.github/workflows/*.yml'
- '!.github/workflows/ubuntu-build.yml'
pull_request:
types: [opened, synchronize, reopened]
branches: [ master ]
paths-ignore:
- '.github/workflows/*.yml'
- '!.github/workflows/ubuntu-build.yml'
schedule:
- cron: '42 8 * * *'
- cron: '42 8 * * 1'

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
name: Test rsync on Ubuntu
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-latest
name: Test rsync on Ubuntu latest
artifact: ubuntu-bin
nonroot: true
install_smoke: true
- runner: ubuntu-22.04
name: Test rsync on Ubuntu 22.04
artifact: ubuntu-22.04-bin
nonroot: false
install_smoke: false
runs-on: ${{ matrix.runner }}
timeout-minutes: 45
name: ${{ matrix.name }}
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -35,6 +53,35 @@ jobs:
run: ./configure --with-rrsync
- name: make
run: make
- name: install/uninstall DESTDIR smoke test
if: matrix.install_smoke
run: |
set -e
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

make install-all DESTDIR="$tmp"

for path in \
/usr/local/bin/rsync \
/usr/local/bin/rsync-ssl \
/usr/local/bin/rrsync \
/usr/local/share/man/man1/rsync.1 \
/usr/local/share/man/man1/rsync-ssl.1 \
/usr/local/share/man/man1/rrsync.1 \
/usr/local/share/man/man5/rsyncd.conf.5 \
/etc/stunnel/rsyncd.conf
do
test -e "$tmp$path"
done

make uninstall-all DESTDIR="$tmp"

leftover="$(find "$tmp" -type f -print)"
if [ -n "$leftover" ]; then
printf '%s\n' "$leftover"
exit 1
fi
- name: install
run: sudo make install
- name: info
Expand All @@ -52,6 +99,7 @@ jobs:
# is env-dependent here (chroot-acl), so leave RSYNC_EXPECT_SKIPPED unset.
run: sudo ./runtests.py --rsync-bin="$PWD/rsync" --use-tcp -j 8
- name: check (non-root, targeted)
if: matrix.nonroot
# Every run above is root (sudo), so privilege-sensitive tests never hit
# their non-root path. Run those here as the unprivileged 'runner' user
# (NO sudo). Explicit test names make runtests.py full_run False, so
Expand All @@ -73,7 +121,7 @@ jobs:
uses: actions/upload-artifact@v4
with:
retention-days: 45
name: ubuntu-bin
name: ${{ matrix.artifact }}
path: |
rsync
rsync-ssl
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/ubuntu-version-mix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,13 @@ on:
schedule:
- cron: '52 8 * * 1'

permissions:
contents: read

jobs:
version-mix:
runs-on: ubuntu-latest
timeout-minutes: 45
name: rsync version-mix
steps:
- uses: actions/checkout@v4
Expand Down
Loading
Loading