Hi there,

Can you please opt me out from this email chain?

Thanks,

________________________________
From: Ruifeng Zheng <[email protected]>
Sent: May 19, 2026 7:58 PM
To: [email protected] <[email protected]>
Cc: Tian Gao <[email protected]>
Subject: Re: [DISCUSS] Decouple our CI from branch-specific logics

I believe this is the right direction. In the long run, this will reduce our 
maintenance costs.

On Wed, May 20, 2026 at 4:57 AM Tian Gao via dev 
<[email protected]<mailto:[email protected]>> wrote:

An issue that affected us several times was our CI setup: we have a 
build_and_test.yml on the master branch that is used for CI for all branches, 
containing branch-specific logic (if branch == 'branch-3.5'). This introduces a 
complicated coupling between our master branch and maintenance branches.

Ideally, the master workflow file should not impact any maintenance branch CIs. 
The maintenance branch CIs (3.5, 4.0, 4.1 etc) should only rely on workflow 
files in their respective branches. When 4.1 fails, we fix things in branch-4.1 
- that's the natural thing to do.

It would be much easier for us to pin dependencies and logic for released 
branches, our CI code would be much cleaner and more manageable.

The current CI is likely configured this way because scheduled GitHub Actions 
only run on the default branch (master in this case).

We have two types of CI triggers:

1. push-triggered CIs, including our PR checks (run on forked repo), and master 
and branch-x commit checks. These actually run on the corresponding branches. 
So a commit on branch-4.1 will trigger the workflow file on branch-4.1.

2. scheduled CIs, including all of our nightly builds. These rely on the master 
workflow file, which is the source of evil.

As you can probably tell, we not only have coupling issues, but these two types 
of CIs also produce inconsistent results. A post-merge CI might yield different 
results than the nightly CI on the same branch, because they use workflow files 
from different branches.

My proposal is to do a workaround: for scheduled CIs, instead of using the 
workflow file directly from the master branch, we will call for `gh workflow 
run --ref "the-branch-to-test"`. This will trigger the workflow using the file 
from that specific branch.

We should be able to remove all the branch specific logic in 
`build_and_test.yml` and put them in corresponding branches. Changing the 
workflow file on master will no longer break the nightly release branch CI. 
More importantly, managing dependencies outside our workflow and Dockerfiles 
would be much easier for us. We can potentially manage all (python) 
dependencies in a single place on the specific branch.

I will first create a prototype for a specific branch, then gradually modify 
our CIs, but I'd like to share this plan and ask the community for feedback on 
this idea first.

Tian

Reply via email to