Skip to content

ci: build the release .deb like a Debian buildd, as reusable pipeline workflow#9

Open
j4n wants to merge 3 commits into
masterfrom
j4n/unified-buildd
Open

ci: build the release .deb like a Debian buildd, as reusable pipeline workflow#9
j4n wants to merge 3 commits into
masterfrom
j4n/unified-buildd

Conversation

@j4n

@j4n j4n commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Match package build workflow to upstream Debian process:

  • Resolve build-deps from debian/control (apt-get build-dep) instead of a explicit package list.
  • Build as an unprivileged user
  • Use git-buildpackage and add support for tagless forks
  • Run dovecot unit tests, separately after build by preserving the build artifacts and re-applying the patches.
  • Guard deadlocked tests with an inactivity watchdog and retry to be resilient to Github runner enviroment-caused flaky tests.
  • Add Skip-flaky-cpu-limit-tests.patch to avoid busy-loop tests that take forever on Github CI
  • Add reproducibility testing with reprotest and publish .buildinfo
  • Add autopkgtest integration tests in Incus system containers
  • Consolidate building and testing into 'deb pipeline' workflow in pipeline.yml that runs a separate workflow chain per bookworm/trixie x amd64/arm64 combination in build-staging-deb.yml; release publishing is subsequently handled by release.yml.
  • Add README-chatmail.md with CI details and upstream references
  • Bump debian/changelog to 1:2.3.21+dfsg1-3+chatmail1 and add a new version increment

@j4n
j4n requested a review from missytake July 15, 2026 10:19
… workflow

Match package build workflow to upstream Debian process:

- Resolve build-deps from debian/control (apt-get build-dep) instead of a
  explicit package list.
- Build as an unprivileged user
- Use git-buildpackage and add support for tagless forks
- Run dovecot unit tests, separately after build by preserving the build
  artifacts and re-applying the patches.
- Guard deadlocked tests with an inactivity watchdog and retry to be
  resilient to Github runner enviroment-caused flaky tests.
- Add `Skip-flaky-cpu-limit-tests.patch` to avoid busy-loop tests that
  take forever on Github CI
- Add reproducibility testing with reprotest and publish .buildinfo
- Add autopkgtest integration tests in Incus system containers
- Consolidate building and testing into 'deb pipeline' workflow in
  `pipeline.yml` that runs a separate workflow chain per bookworm/trixie x
  amd64/arm64 combination in `build-staging-deb.yml`; release publishing is
  subsequently handled by `release.yml`.
- Add README-chatmail.md with CI details and upstream references
- Bump debian/changelog to 1:2.3.21+dfsg1-3+chatmail1 and add a new
  version increment
@j4n
j4n force-pushed the j4n/unified-buildd branch from 47ba28d to 650660d Compare July 15, 2026 14:32
j4n added 2 commits July 15, 2026 17:01
The upload step in the reusable pipeline had three problems:

1. `rsync -rILvh --mkpath $GITHUB_WORKSPACE/build-area/ ...` uploaded
   the entire build tree (1.1 GiB); restrict to the three binaries we
   actually need downstream (dovecot-core, dovecot-imapd, dovecot-lmtpd)
   plus the source (.dsc, .tar.*) and upload metadata (.changes,
   .buildinfo) coherent with the github release.

2. Wrap rsync upload in a retry loop to address a race condition on
   rrsync's per-directory lock that gets hit when two arches of the same
   distro try to upload simultaneously:

     /usr/bin/rrsync error: Another instance of rrsync is already
     accessing this directory.
3. rrsyncs chroot means we need to send a relative path
@j4n
j4n force-pushed the j4n/unified-buildd branch from 650660d to 0ce9ea7 Compare July 15, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant