git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Jeff King <peff@peff.net>
Date
May 3, 2020, 09:36 UTC
Message-ID
<20200503093646.GC170902@coredump.intra.peff.net>
In-Reply-To
<pull.776.git.git.1588432087854.gitgitgadget@gmail.com>
On Sat, May 02, 2020 at 03:08:07PM +0000, Johannes Schindelin via GitGitGadget wrote:
Show 5 quoted lines
>     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.
  - do not build anything else; we have no idea if somebody in a fork is
    just pushing up a work in progress or not, and they may be surprised
    to get a CI failure notification back.

I'm not sure whether we want to be building all of the individual topics in gitster/git or not. In theory that provides more information, but I'm not sure if anybody is looking at them (and all of the notifications would go to Junio anyway).

My ideas aren't really developed, but I guess what I'm wondering foremost is whether other people are thinking along the same lines.

Show 9 quoted lines
> diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
> index fd4df939b50..0e4a280d309 100644
> --- a/.github/workflows/main.yml
> +++ b/.github/workflows/main.yml
> @@ -7,6 +7,7 @@ env:
>  
>  jobs:
>    windows-build:
> +    if: "!contains(toJSON(github.event.commits.*.message), '[skip ci]') && !contains(toJSON(github.event.pull_request), '[skip pr]')"

It's unfortunate to have to repeat this in every job, as opposed to in the "on" event block, but I don't think that block is flexible enough to do what we want here.

I don't know very much about Actions, but the code looks correct to me.
-Peff
[1] My current workaround is even more horrendous: I've turned off
    Actions entirely in peff/git, and then I separately push branches I
    want CI on into a separate repository. But that repo can't be a fork
    of git/git, because I already have one! So I now have an extra
    "git-ci" repo that isn't connected to anything. Yuck.
Previous: Johannes Schindelin via GitGitGadgetNext: Danh Doan
Message 2 of 62 in “ci: respect the [skip ci] convention in our GitHub workflow "CI/PR"”
  1. ci: respect the [skip ci] convention in our GitHub workflow "CI/PR"Johannes Schindelin via GitGitGadget, May 2, 2020
  2. Jeff KingMay 3, 2020
  3. Danh DoanMay 3, 2020
  4. Jeff KingMay 4, 2020
  5. 0/2 Limit GitHub Actions to designated branchesĐoàn Trần Công Danh, May 4, 2020
  6. 1/2 CI: limit GitHub Actions to designated branchesĐoàn Trần Công Danh, May 4, 2020
  7. Jeff KingMay 4, 2020
  8. Taylor BlauMay 4, 2020
  9. Junio C HamanoMay 4, 2020
  10. Taylor BlauMay 4, 2020
  11. Jeff KingMay 4, 2020
  12. Junio C HamanoMay 5, 2020
  13. Jeff KingMay 4, 2020
  14. Taylor BlauMay 5, 2020
  15. Jeff KingMay 5, 2020
  16. Junio C HamanoMay 5, 2020
  17. Jeff KingMay 5, 2020
  18. Jeff KingMay 5, 2020
  19. Junio C HamanoMay 5, 2020
  20. Jeff KingMay 5, 2020
  21. Junio C HamanoMay 5, 2020
  22. Johannes SchindelinMay 6, 2020
  23. Junio C HamanoMay 6, 2020
  24. Jeff KingMay 7, 2020
  25. Jeff KingMay 7, 2020
  26. Junio C HamanoMay 7, 2020
  27. Đoàn Trần Công DanhMay 7, 2020
  28. Đoàn Trần Công DanhMay 7, 2020
  29. Đoàn Trần Công DanhMay 6, 2020
  30. Junio C HamanoMay 6, 2020
  31. Đoàn Trần Công DanhMay 6, 2020
  32. Junio C HamanoMay 6, 2020
  33. Jeff KingMay 7, 2020
  34. Junio C HamanoMay 7, 2020
  35. Jeff KingMay 7, 2020
  36. Junio C HamanoMay 7, 2020
  37. ci: allow per-branch config for GitHub ActionsJeff King, May 7, 2020
  38. Taylor BlauMay 7, 2020
  39. Jeff KingMay 7, 2020
  40. Junio C HamanoMay 7, 2020
  41. Jeff KingMay 7, 2020
  42. Junio C HamanoMay 7, 2020
  43. Jeff KingMay 8, 2020
  44. Đoàn Trần Công DanhMay 9, 2020
  45. Đoàn Trần Công DanhMay 5, 2020
  46. 2/2 SubmittingPatches: advertise GitHub Actions CIĐoàn Trần Công Danh, May 4, 2020
  47. Junio C HamanoMay 4, 2020
  48. Đoàn Trần Công DanhMay 5, 2020
  49. 0/3 Provide option to opt in/out GitHub ActionsĐoàn Trần Công Danh, May 5, 2020
  50. 1/3 SubmittingPatches: advertise GitHub Actions CIĐoàn Trần Công Danh, May 5, 2020
  51. Jeff KingMay 5, 2020
  52. Đoàn Trần Công DanhMay 5, 2020
  53. Jeff KingMay 5, 2020
  54. 2/3 CI: limit GitHub Actions to designated branchesĐoàn Trần Công Danh, May 5, 2020
  55. Jeff KingMay 5, 2020
  56. Đoàn Trần Công DanhMay 5, 2020
  57. Jeff KingMay 5, 2020
  58. Junio C HamanoMay 5, 2020
  59. 3/3 fixup! CI: limit GitHub Actions to designated branchesĐoàn Trần Công Danh, May 5, 2020
  60. Junio C HamanoMay 5, 2020
  61. Jeff KingMay 5, 2020
  62. Junio C HamanoMay 3, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.