Skip to content

Move long-running FFI CI jobs to cron and release only - #2004

Merged
benalleng merged 4 commits into
payjoin:masterfrom
spacebear21:ci-release-only
Oct 22, 2026
Merged

benalleng merged 4 commits into
payjoin:masterfrom
spacebear21:ci-release-only

Conversation

@spacebear21

@spacebear21 spacebear21 commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Only keep linux build & test CI jobs running on every PR that touches payjoin-ffi. The rest of ffi checks (macos, windows, smoke tests, etc.) are split off and moved to a daily cron job (and still run in release CI).

Pull Request Checklist

Please confirm the following before requesting review:

verify-pub-package stages payjoin and payjoin-mailroom from the
checkout only on pull_request events. Every other trigger stages them
against crates.io. That suits a release tag, which must build against
what consumers can fetch. A run on master, such as a scheduled one,
may wrap core changes that are not published yet, so it would fail
for reasons unrelated to the bindings.

Key the choice on whether the ref is a tag. For the triggers that
exist today this changes nothing: pull requests still stage from the
revision, and the bindings release, which runs on a tag push, still
stages from crates.io.

Update the Dart contributing guide to match.
The binding workflows only run on pull requests that touch payjoin-ffi
and on a bindings release. A regression that comes from outside the
repo, such as a runner image or toolchain update, goes unnoticed until
the next such pull request or release.

Call each binding workflow from a daily schedule on master, the same
way bindings-release.yml does at release time. This also lets pull
requests skip the slow platforms in a later change without losing that
coverage between releases.
Each language's "Build and test" job ran one matrix over Linux and
macOS. A later change runs macOS only on releases and the daily run,
and a matrix entry cannot be skipped on its own with a plain job-level
if. Give macOS its own job in each workflow so that change can gate it
the same way as the other jobs.

The macOS jobs are copies of the matrix jobs with the runner fixed, so
both platforms still run on every trigger they ran on before. The C#
Unix job becomes the Linux job, next to the new macOS one and the
existing Windows one.
Every pull request that touches payjoin-ffi started 29 jobs across the
five binding workflows on top of the Linux tests. The macOS ones set
the wall clock: on recent runs they queued for 7 to 35 minutes before
starting and then ran for up to 31. The packaging and smoke jobs build
and install release artifacts that a pull request then throws away,
and the Windows MSVC cross builds alone took up to 19 minutes.

Skip on pull requests every job except each language's Linux build and
test. That covers the macOS and Windows tests, the native asset,
wheel, npm, NuGet and pub.dev packaging, the reproducibility check and
the smoke tests. They still run on every bindings release, which calls
these workflows before publishing, and in the daily run on master, so
a regression surfaces within a day rather than at release time.

The C# and Python release docs and the Dart contributing guide said
these jobs run on pull requests, and the C# docs told maintainers to
take the NuGet candidate from such a run. Point them at the daily run
instead.
@spacebear21 spacebear21 changed the title Ci release only Move long-running FFI CI jobs to cron Oct 22, 2026
@spacebear21 spacebear21 changed the title Move long-running FFI CI jobs to cron Move long-running FFI CI jobs to cron and release only Oct 22, 2026
@coveralls

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 39789911228

Coverage remained the same at 87.471%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 17854
Covered Lines: 15617
Line Coverage: 87.47%
Coverage Strength: 319.64 hits per line

💛 - Coveralls

@benalleng benalleng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 71dd4ee

@benalleng
benalleng merged commit 1929443 into payjoin:master Oct 22, 2026
35 checks passed
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.

3 participants