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 7, 2020, 12:47 UTC
Message-ID
<20200507124700.GA1378@danh.dev>
In-Reply-To
<20200507120102.GB32465@danh.dev>
On 2020-05-07 19:01:02+0700, Đoàn Trần Công Danh <congdanhqx@gmail.com> wrote:
Show 11 quoted lines
> On 2020-05-06 17:09:39+0200, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> > The idea is indeed very neat. I think we can do a bit better with resource
> > usage by not even bothering to check this branch out. Something along
> > those lines (sorry, I really would love to have the time to test this...):
> 
> While this can avoid the cost of checking out a whole branch (which
> can be mitigated by using an orphan branch with single file),
> 
> This still spins up an VM, and actions/github-script run (I think)
> nodejs, which is more resource intensive than git and sh script.
> Above statement maybe wrong, I'm not interacting much with nodejs.

I was wrong, actions/checkout is also using nodejs, So, this actions/github-script actual reduces the total time for fetching the file ref-whitelist/ref-blacklist/allow-ref

Show 28 quoted lines
> >       - id: check-ref
> >         name: check whether CI is enabled for ref
> >         uses: actions/github-script@0.9.0
> >         with:
> >           script: |
> >             const req = {
> >               owner: context.repo.owner,
> >               repo: context.repo.repo,
> >               ref: "ci/config"
> >             };
> > 
> >             try {
> >               req.tree_sha = (await github.git.getRef(req)).data.object.sha;
> >               (await github.git.getTree(req))
> >               .tree.filter(e => e.path == 'ref-whitelist').map(e => {
> >                 req.file_sha = e.sha;
> >               });
> >               const list = Buffer.from((await github.git.getBlob(req)).data.content, 'base64').toString('UTF-8');
> >               core.setOutput('enabled', `\n${list}`.indexOf(`\n${{github.ref}}\n`) < 0 ? 'no' : 'yes');
> 
> And this `indexOf` will check if our ref (exact) matchs (full line)
> with some white-list list, which is very limited.
> So people couldn't match by some pattern (grep can work).
> 
> I haven't tested, but we may use part of above script to read a single
> file from a ref, and add another steps for "grep"/"sh"
> I'm not sure if that script will cost more resources than git-checkout
> or not. And is that solutions over-engineered?

But this point still hold, now, I think using part of above script to read the file, and allow more custom logic in a separated steps maybe better solutions.

-- 
Danh
Previous: Đoàn Trần Công DanhNext: Đoàn Trần Công Danh
Message 28 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.