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

Re: [PATCH v2 1/2] CI: limit GitHub Actions to designated branches

From
Đoàn Trần Công Danh <congdanhqx@gmail.com>
Date
May 6, 2020, 14:25 UTC
Message-ID
<20200506142500.GA2429@danh.dev>
In-Reply-To
<xmqqr1vx90mt.fsf@gitster.c.googlers.com>
On 2020-05-05 20:56:58-0700, Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
> Đoàn Trần Công Danh  <congdanhqx@gmail.com> writes:
> > +--------------
> > +$ git checkout --orphan ci-config
> > +$ cp contrib/ci-config-allow-ref allow-ref
> > +$ $EDITOR allow-ref
> > +$ git rm -rf .
> 
> This sounds horrible.  You just nuked the entire files in the
> working tree you use for your everyday Git hacking to edit a
> single file.

It isn't that horrible as it sounds. It only removes the files that are currently added in index, which is the same with tracked files in old branch, and we can get it back by switching back to old branch.

I decided to make an orphanage branch because I would like to save time and network bandwidth for the "check-ci" jobs. Since GitHub will fetch only single branch in GitHub Actions:

	/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +refs/ci/config:refs/ci/config

I wonder whether the "git rm -rf ." makes that block sounds horrible? If that is the case, we can use the experimental git-switch(1) instead, it's doing more-or-less the same (or is it the same?) with "git checkout --orphan" and "git rm -rf ."

----------------- $ cp contrib/ci-config-allow-ref.sample allow-ref $ git switch --orphan ci-config $ edit allow-ref $ git add allow-ref $ git commit -----------------

Note: I changed `$EDITOR` to `edit` to match other example of `edit`.
Show 5 quoted lines
> As the instruction above says, we should set the example and
> describe the behaviour we implemented initially.  Something as basic
> like ...
> 
>     # Build any branch other than those whose name begins with "no-ci"

That's definitely better. And I think we should add `.sample` suffix to this file, too

If all of that's sensible enough, here is the replacement fix-up patch.
--------------------8<------------------
Subject: [PATCH] fixup! ci: allow per-branch config for GitHub Actions
Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com>
---
 .github/workflows/main.yml         |  3 +--
 Documentation/SubmittingPatches    | 12 ++++++++++++
 contrib/ci-config-allow-ref.sample | 12 ++++++++++++
 3 files changed, 25 insertions(+), 2 deletions(-)
 create mode 100755 contrib/ci-config-allow-ref.sample
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 51f4ff6e89..08217c5ed8 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -19,8 +19,7 @@ jobs:
           name: check whether CI is enabled for ref
           run: |
             enabled=yes
-            if test -e ref-whitelist &&
-               ! grep '^${{ github.ref }}$' ref-whitelist
+            if test -x allow-ref && ! ./allow-ref '${{ github.ref }}'
             then
               enabled=no
             fi
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index b916f07f2c..bf06284f29 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -82,6 +82,18 @@ Alternately, you can use GitHub Actions (which supports testing your changes
 on Linux, macOS, and Windows) by pushing into a branch in your fork
 or opening a GitHub Pull Request against
 https://github.com/git/git.git or a fork of that repository.
+In the event that you only want to trigger GitHub Actions for specific
+refname, you can create an executable file named `allow-ref` in
+`refs/ci/config`. The following steps may help you:
+--------------
+$ cp contrib/ci-config-allow-ref.sample allow-ref
+$ git switch --orphan <a-branch-name-of-your-choice>
+$ edit allow-ref
+$ git add allow-ref
+$ git commit allow-ref
+$ git push <your-fork> HEAD:refs/ci/config
+--------------
+
 
 Do not forget to update the documentation to describe the updated
 behavior and make sure that the resulting documentation set formats
diff --git a/contrib/ci-config-allow-ref.sample b/contrib/ci-config-allow-ref.sample
new file mode 100755
index 0000000000..1973e88912
--- /dev/null
+++ b/contrib/ci-config-allow-ref.sample
@@ -0,0 +1,12 @@
+#!/bin/sh
+# Sample filter for GitHub Actions
+# GitHub Actions will run if and only if this script exits with zero status
+
+# This sample filter will ask GitHub Actions to build
+# any branches whose name doesn't start with "no-ci"
+
+REFNAME="$1"
+
+case "$REFNAME" in
+refs/heads/no-ci*) exit 1 ;;
+esac
-- 
2.26.2.672.g232c24e857
Previous: Junio C HamanoNext: Junio C Hamano
Message 31 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.