Subject: Re: [PATCH] ci: respect the [skip ci] convention in our GitHub workflow "CI/PR"

From: Danh Doan <[email-masked]>
Date: Sun, 3 May 2020 19:05:46 +0700

On 2020-05-03 05:36:46-0400, Jeff King <[email-masked]> wrote:
> On Sat, May 02, 2020 at 03:08:07PM +0000, Johannes Schindelin via GitGitGadget wrote:
> 
> >     It was mentioned to me that it might not be totally helpful to run all 
> >     the builds whenever an in-progress branch is pushed to GitHub. For
> >     example, if a contributor has dozens of topic branches in flight, they
> >     might not want to have all of them built whenever a new end-of-day push
> >     happens.
> 
> As I was probably (one of) the mentioners here, thank you for looking
> into this. This definitely _helps_, and if you don't want to go further
> I could certainly make do with it[1].
> 
> But here are some thoughts on what a more ideal solution would look
> like (to me, anyway).
> 
> What I'd _most_ like is a separately-maintained list of branches (or
> branch patterns) on which to run CI.  I mostly care about just testing
> my personal equivalent of "next" (which is really "next" plus my stable
> topics), and I'd probably only list that branch. Plus potentially a
> special CI branch that I'd use when chasing down a failure that I can't
> reproduce locally.
> 
> But I don't think there's any good way to implement that via GitHub
> Actions. I thought perhaps we could pull data from a different branch in
> the same repo, but referring to external "Actions" seems to require a
> full repo name (and obviously putting git/git in that name doesn't help
> anybody who's trying to override something in a fork).
> 
> Another alternative: could we trigger CI based on branch-names? Locally,
> I call my unstable branches "jk/something-wip", and I'd like to skip all
> of the "-wip" branches. That's basically equivalent to "[skip ci]" in
> that I could just amend the tip commit of the -wip branches to say "skip
> ci". But what if we flipped the default to _not_ build? I.e.:
> 
>   - continue to build all pull requests; if you opened one, you're
>     serious enough to have other people look and should get CI feedback
> 
>   - build branches with a few well-known names or patterns. Maybe
>     names like "master"? Or maybe "refs/heads/build-ci/*"? Or maybe
>     anything in "refs/heads/<initials>/*"? We'd have to decide on a
>     convention as a community.

I think this is better approach for Junio, and we can help people opt
in by asking them to push into "for-ci/<some-name>.

This is my proposal for it:

------------------8<-------------
From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
 <[email-masked]>
Date: Sun, 3 May 2020 18:56:50 +0700
Subject: [PATCH] CI: GitHub: limit GitHub Action to intergration branches
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Đoàn Trần Công Danh <[email-masked]>
---
 .github/workflows/main.yml | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index fd4df939b5..303393ba73 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,6 +1,19 @@
 name: CI/PR
 
-on: [push, pull_request]
+on:
+  pull_request:
+    branches:
+      - '*'
+  push:
+    branches:
+      - maint
+      - master
+      - next
+      - jch
+      - pu
+      - 'for-ci/**'
+    tags:
+      - '*'
 
 env:
   DEVELOPER: 1
-- 
2.26.2.672.g232c24e857