Libseccomp: BUG: Travis CI๋ฅผ GitHub ์ž‘์—…์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ• ์‚ดํŽด๋ณด๊ธฐ

์— ๋งŒ๋“  2020๋…„ 11์›” 06์ผ  ยท  14์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: seccomp/libseccomp

์ด์— ๋Œ€ํ•œ ๋งŽ์€ ๊ธฐ์‚ฌ๊ฐ€ ์žˆ์ง€๋งŒ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๋ฐฐ๊ฒฝ ์ •๋ณด๋Š” ์•„๋ž˜ ๋“ฑ๋ก ๊ธฐ์‚ฌ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

Travis CI๊ฐ€ libseccomp์— ๋Œ€ํ•ด ์ž ์žฌ์ ์œผ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๊ฒŒ ๋จ์— ๋”ฐ๋ผ CI ํ…Œ์ŠคํŠธ๋ฅผ GitHub ์ž‘์—…์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์„ ์กฐ์‚ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

bug prioritlow

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

Github Actions์˜ ๋ชจ์Šต์ด ์ •๋ง ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. Travis CI์—์„œ Github Actions๋กœ libcgroup์„ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํŒจ์น˜ ์„ธํŠธ๋ฅผ ๋ฐฉ๊ธˆ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

https://github.com/drakenclimber/libcgroup/tree/issues/github_actions
https://sourceforge.net/p/libcg/mailman/message/37165461/

์ด๋ฒˆ ์ฃผ์— libseccomp๋ฅผ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํŒจ์น˜ ์„ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  14 ๋Œ“๊ธ€

๋‹ค์Œ์€ TravisCI์—์„œ Github Actions๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ž์œผ๋กœ ๋ฉฐ์น  ๋™์•ˆ ์ด๊ฒƒ์„ ์‹คํ—˜ํ•˜๊ธฐ๋ฅผ ํฌ๋งํ•œ๋‹ค
https://docs.github.com/en/free-pro-team@latest/actions/learn -github-actions/migrating-from-travis-ci-to-github-actions

Github Actions์˜ ๋ชจ์Šต์ด ์ •๋ง ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. Travis CI์—์„œ Github Actions๋กœ libcgroup์„ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ํŒจ์น˜ ์„ธํŠธ๋ฅผ ๋ฐฉ๊ธˆ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

https://github.com/drakenclimber/libcgroup/tree/issues/github_actions
https://sourceforge.net/p/libcg/mailman/message/37165461/

์ด๋ฒˆ ์ฃผ์— libseccomp๋ฅผ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํŒจ์น˜ ์„ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@drakenclimber ์ข‹์€ ๊ฒƒ

์—ฌ๊ธฐ ๋‚ด ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Travis CI ์†”๋ฃจ์…˜๊ณผ ์•ฝ๊ฐ„์˜ ํŽธ์ฐจ๊ฐ€ ์žˆ๋Š” amd64 ์—์„œ ์ž‘์—…

์žฅ์ :

  • ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด. Github Actions์—์„œ ์ง€์†์  ํ†ตํ•ฉ ์›Œํฌํ”Œ๋กœ ๋ฅผ ๋น ๋ฅด๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๊ฒƒ์€์œผ๋กœ ์บก์Šํ™” ์ž‘์—…์— ์‰ฝ๊ฒŒ์ด๊ธฐ๋„ ํ–‰๋™ . ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์›Œํฌํ”Œ๋กœ ๋‚ด์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด์ƒํ•˜๊ฒŒ๋„ ์ž‘์—…์€ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค .)
  • ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์†๋„(์ ์–ด๋„ amd64์˜ ๊ฒฝ์šฐ). ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋Š” 22๋ถ„ ๋งŒ์— ์™„๋ฃŒ
  • ์ข‹์€ GUI ์™€ ์‹คํŒจํ•œ ๋‹จ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Github Actions์˜ ๋ณ‘๋ ฌํ™” ์˜ต์…˜์ด ์ •๋ง ๋งˆ์Œ์— ๋“ค๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์กฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋œ ํ›„ libcgroup์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ๋ฒˆํ˜ธ ๋ฅผ

๋‹จ์ :

  • ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์› ์—†์Œ

    • github ์ง์› ์ด arm64 Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ–ˆ์Šต๋‹ˆ๋‹ค . ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ์•ฝ๊ฐ„์˜ ์†๋†€๋ฆผ์œผ๋กœ ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ๋Œ€๋ถ€๋ถ„ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. (ํ…Œ์ŠคํŠธ 52 - ๊ธฐ๋ณธ ๋กœ๋“œ - ๋ช‡ ๊ฐ€์ง€ ์ด์ƒํ•œ ์ด์œ ๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฌ๋‚˜ ์ด ์„ค์ •์€ ๋กœ์ปฌ์—์„œ ์žฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ๋””๋ฒ„๊น…์ด ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘๋™์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ •๋ง, ์ •๋ง ๋Š๋ฆฝ๋‹ˆ๋‹ค. arm64์—์„œ ์ถ•์†Œ๋œ ํ…Œ์ŠคํŠธ ์„ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ 1์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ppc64el์„ ์ฃฝ์ด๊ธฐ๊นŒ์ง€ 6์‹œ๊ฐ„์ด ๊ฑธ๋ ธ ์Šต๋‹ˆ๋‹ค :(

    • github ์‚ฌ์šฉ์ž๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ๊ฐ€ ์•„๋‹Œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ด ์ž‘์—… ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์ด ๋‹ค์†Œ ํˆฌ๋ฐ• ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณต์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํ”Œ๋žซํผ ๋ชฉ๋ก ์€ ๊ฝค ์ข‹์ง€๋งŒ

    • Github Actions๋Š” ์ž์ฒด ํ˜ธ์ŠคํŒ… ๋Ÿฌ๋„ˆ ์‚ฌ์šฉ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํ•œ ๊ฐ€์ง€ (๋ชป์ƒ๊ธด) ์˜ต์…˜์€ ์ „์šฉ arm64, ppc64le ๋“ฑ ์ƒ์ž๋ฅผ ์ฐพ์•„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์˜ ์žฅ์ ์€ ๋””๋ฒ„๊น…์ด Docker ์ปจํ…Œ์ด๋„ˆ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ:

  • Coveralls.io๋Š” Github Action ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด TravisCI ์†”๋ฃจ์…˜์ธ cpp-coveralls ๋Š” Github Actions์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ณ‘๋ ฌ ๋นŒ๋“œ์—์„œ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. libcgroup ์—์„œ ์ž‘์—…๋ณต ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • Coveralls์˜ ์ž‘์—…์„ ํ™œ์šฉํ•˜๋ ค๋ฉด lcov๋ฅผ ์ง์ ‘ ํ˜ธ์ถœ ํ•˜์—ฌ lcov.info ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ํŒŒ์ผ์ด coveralls.io์— ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. lcov๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์ ์šฉ ๋ฒ”์œ„ ๋ฒˆํ˜ธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Travis CI ์†”๋ฃจ์…˜์€ ์ด ํ–‰ ์ด ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด Github Actions ์†”๋ฃจ์…˜์€ ๋ช…์‹œ์ ์œผ๋กœ uncovered ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค . ์ด ๊ฒฝ์šฐ Github Actions๊ฐ€ ์˜ณ๊ณ  ํ˜„์žฌ ์†”๋ฃจ์…˜์ด ์ ์šฉ ๋ฒ”์œ„ ๋ฒˆํ˜ธ๋ฅผ ์•ฝ๊ฐ„ ์ž˜๋ชป ๋ณด๊ณ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ  ์‚ฌํ•ญ - --exclude src/arch-syscall-check.c lcov ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์œ ๊ฐ€ ์—†์–ด

์—ฌ๊ธฐ ๋‚ด ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Travis CI ์†”๋ฃจ์…˜๊ณผ ์•ฝ๊ฐ„์˜ ํŽธ์ฐจ๊ฐ€ ์žˆ๋Š” amd64 ์—์„œ ์ž‘์—…

์žฅ์ :

  • ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด. Github Actions์—์„œ ์ง€์†์  ํ†ตํ•ฉ ์›Œํฌํ”Œ๋กœ ๋ฅผ ๋น ๋ฅด๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๊ฒƒ์€์œผ๋กœ ์บก์Šํ™” ์ž‘์—…์— ์‰ฝ๊ฒŒ์ด๊ธฐ๋„ ํ–‰๋™ . ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์›Œํฌํ”Œ๋กœ ๋‚ด์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ด์ƒํ•˜๊ฒŒ๋„ ์ž‘์—…์€ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค .)
  • ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์†๋„(์ ์–ด๋„ amd64์˜ ๊ฒฝ์šฐ). ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋Š” 22๋ถ„ ๋งŒ์— ์™„๋ฃŒ
  • ์ข‹์€ GUI ์™€ ์‹คํŒจํ•œ ๋‹จ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Github Actions์˜ ๋ณ‘๋ ฌํ™” ์˜ต์…˜์ด ์ •๋ง ๋งˆ์Œ์— ๋“ค๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋Œ€์กฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋œ ํ›„ libcgroup์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ์ ์šฉ ๋ฒ”์œ„ ๋ฒˆํ˜ธ ๋ฅผ

๋‹จ์ :

  • ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์› ์—†์Œ

    • github ์ง์› ์ด arm64 Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ–ˆ์Šต๋‹ˆ๋‹ค . ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ์•ฝ๊ฐ„์˜ ์†๋†€๋ฆผ์œผ๋กœ ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ๋Œ€๋ถ€๋ถ„ ์ž‘๋™์‹œํ‚ฌ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. (ํ…Œ์ŠคํŠธ 52 - ๊ธฐ๋ณธ ๋กœ๋“œ - ๋ช‡ ๊ฐ€์ง€ ์ด์ƒํ•œ ์ด์œ ๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฌ๋‚˜ ์ด ์„ค์ •์€ ๋กœ์ปฌ์—์„œ ์žฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ๋””๋ฒ„๊น…์ด ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘๋™์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ •๋ง, ์ •๋ง ๋Š๋ฆฝ๋‹ˆ๋‹ค. arm64์—์„œ ์ถ•์†Œ๋œ ํ…Œ์ŠคํŠธ ์„ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ 1์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ppc64el์„ ์ฃฝ์ด๊ธฐ๊นŒ์ง€ 6์‹œ๊ฐ„์ด ๊ฑธ๋ ธ ์Šต๋‹ˆ๋‹ค :(
    • github ์‚ฌ์šฉ์ž๋Š” Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค์ดํ‹ฐ๋ธŒ๊ฐ€ ์•„๋‹Œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ด ์ž‘์—… ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์ด ๋‹ค์†Œ ํˆฌ๋ฐ• ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๋ณต์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํ”Œ๋žซํผ ๋ชฉ๋ก ์€ ๊ฝค ์ข‹์ง€๋งŒ
    • Github Actions๋Š” ์ž์ฒด ํ˜ธ์ŠคํŒ… ๋Ÿฌ๋„ˆ ์‚ฌ์šฉ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํ•œ ๊ฐ€์ง€ (๋ชป์ƒ๊ธด) ์˜ต์…˜์€ ์ „์šฉ arm64, ppc64le ๋“ฑ ์ƒ์ž๋ฅผ ์ฐพ์•„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์˜ ์žฅ์ ์€ ๋””๋ฒ„๊น…์ด Docker ์ปจํ…Œ์ด๋„ˆ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ:

  • Coveralls.io๋Š” Github Action ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด TravisCI ์†”๋ฃจ์…˜์ธ cpp-coveralls ๋Š” Github Actions์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ณ‘๋ ฌ ๋นŒ๋“œ์—์„œ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. libcgroup ์—์„œ ์ž‘์—…๋ณต ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • Coveralls์˜ ์ž‘์—…์„ ํ™œ์šฉํ•˜๋ ค๋ฉด lcov๋ฅผ ์ง์ ‘ ํ˜ธ์ถœ ํ•˜์—ฌ lcov.info ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ํŒŒ์ผ์ด coveralls.io์— ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. lcov๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ์ ์šฉ ๋ฒ”์œ„ ๋ฒˆํ˜ธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Travis CI ์†”๋ฃจ์…˜์€ ์ด ํ–‰ ์ด ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด Github Actions ์†”๋ฃจ์…˜์€ ๋ช…์‹œ์ ์œผ๋กœ uncovered ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค . ์ด ๊ฒฝ์šฐ Github Actions๊ฐ€ ์˜ณ๊ณ  ํ˜„์žฌ ์†”๋ฃจ์…˜์ด ์ ์šฉ ๋ฒ”์œ„ ๋ฒˆํ˜ธ๋ฅผ ์•ฝ๊ฐ„ ์ž˜๋ชป ๋ณด๊ณ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ  ์‚ฌํ•ญ - --exclude src/arch-syscall-check.c lcov ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์œ ๊ฐ€ ์—†์–ด

macOS์—์„œ Vagrant๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

macOS์—์„œ Vagrant๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” ํŠนํžˆ libseccomp์˜ ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ Travis CI์—์„œ GitHub Actions๋กœ CI ํ…Œ์ŠคํŠธ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. MacOS๊ฐ€ GitHub Actions์— ๋Œ€ํ•œ ์˜ต์…˜์ธ์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋„ ์ปค๋„ ์ง€์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š์€ ์„ ํƒ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์šฐ๋ฆฌ์˜ "๋ผ์ด๋ธŒ" ํ…Œ์ŠคํŠธ๋Š” ์ œํ•œ์ ์ด์ง€๋งŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค).

์—ฌ๊ธฐ ๋‚ด ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Travis CI ์†”๋ฃจ์…˜๊ณผ ์•ฝ๊ฐ„์˜ ํŽธ์ฐจ๊ฐ€ ์žˆ๋Š” amd64์—์„œ ์ž‘์—…ํ•˜๋Š” Github Actions๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์šฐ๋ ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@drakenclimber ๋ฅผ ์ฐพ์•„์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ๋œ ์•„ํ‚คํ…์ฒ˜ ์ง€์›์ด ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Travis CI์—์„œ ์‹ค์ œ๋กœ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉํ•ด๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ Travis๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ• ๊นŒ์š”?

lcov/Coveralls ์˜๊ฒฌ์— ๊ด€ํ•˜์—ฌ; ์˜ˆ์ „์— ๋น„์Šทํ•œ ๊ฒƒ๋“ค์„ ๋ณธ ์ ์ด ์žˆ์ง€๋งŒ ์‚ฌ์†Œํ•œ ์ฐจ์ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ฒŒ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Travis์—์„œ lcov๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Travis ๊ตฌ์„ฑ์—์„œ ์‹ ์šฉ์„ ๋ˆ„์ถœํ•˜์ง€ ์•Š๊ณ  Travis ๋นŒ๋“œ์˜ ์ผ๋ถ€๋กœ lcov ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ฐ Travis ์‚ฌ์šฉ ์ „๋ฐ˜์— ๊ฑธ์ณ ์ผ๊ด€์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด Travis CI์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘์—…์ด ์กฐ๊ธˆ ๋” ์‰ฌ์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

macOS์—์„œ Vagrant๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” ํŠนํžˆ libseccomp์˜ ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ Travis CI์—์„œ GitHub Actions๋กœ CI ํ…Œ์ŠคํŠธ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. MacOS๊ฐ€ GitHub Actions์— ๋Œ€ํ•œ ์˜ต์…˜์ธ์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋„ ์ปค๋„ ์ง€์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์ง€ ์•Š์€ ์„ ํƒ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์šฐ๋ฆฌ์˜ "๋ผ์ด๋ธŒ" ํ…Œ์ŠคํŠธ๋Š” ์ œํ•œ์ ์ด์ง€๋งŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค).

์ €๋Š” GitHub Actions์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ macOS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(์ฐธ์กฐ: https://github.com/actions/virtual-environments#available-environments). ํŠนํžˆ, macOS๋Š” Vagrant ๋ฐ VirtualBox์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ์œ ์ผํ•œ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค(์ฐธ์กฐ: https://github.com/actions/virtual-environments/issues/433).

๋‚ด ๊ฒฝํ—˜์ƒ ์„ค์ •ํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์ž‘์—…์ด ๋” ํ•„์š”ํ•˜์ง€๋งŒ ๊ฐ€์ƒ ๋จธ์‹  ๋‚ด์—์„œ ์‹คํ–‰ํ•˜๋ฉด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•ด ๋ณด๋‹ค ์ผ๊ด€๋œ ํ™˜๊ฒฝ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ๋งํ•  ๊ฒƒ๋„ ์—†์ด ๋ˆ„๊ตฌ๋‚˜ Vagrant/VirtualBox ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด์‹์„ฑ์ด ๋” ๋†’์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ตฌ์„ฑ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๊ธ‰์—…์ฒด๋ณ„ YAML ์„ ์–ธ๊ณผ ๊ด€๊ณ„์—†์ด ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ CI/CD ์†”๋ฃจ์…˜์œผ๋กœ ์‰ฝ๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹จ์ง€ ๋‚ด 2 ์„ผํŠธ์ž…๋‹ˆ๋‹ค :)

@oxr463 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. GH Actions์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์–ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ์ถ”๊ฐ€ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์›ํ•˜์ง€ ์•Š์ง€๋งŒ Travis CI๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

Travis ํ™œ๋™์ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€๋ณ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ณธ Travis ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@drakenclimber ๋ฅผ ์ฐพ์•„์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ๋œ ์•„ํ‚คํ…์ฒ˜ ์ง€์›์ด ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Travis CI์—์„œ ์‹ค์ œ๋กœ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉํ•ด๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ Travis๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ• ๊นŒ์š”?

๋„ค, ๊ทธ๊ฒŒ ๊ฐ€์žฅ ์ •ํ™•ํ•˜๊ณ  ์•ˆ์ „ํ•œ ๋‹ต๋ณ€์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

lcov/Coveralls ์˜๊ฒฌ์— ๊ด€ํ•˜์—ฌ; ์˜ˆ์ „์— ๋น„์Šทํ•œ ๊ฒƒ๋“ค์„ ๋ณธ ์ ์ด ์žˆ์ง€๋งŒ ์‚ฌ์†Œํ•œ ์ฐจ์ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ฒŒ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Travis์—์„œ lcov๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  Travis ๊ตฌ์„ฑ์—์„œ ์‹ ์šฉ์„ ๋ˆ„์ถœํ•˜์ง€ ์•Š๊ณ  Travis ๋นŒ๋“œ์˜ ์ผ๋ถ€๋กœ lcov ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ฐ Travis ์‚ฌ์šฉ ์ „๋ฐ˜์— ๊ฑธ์ณ ์ผ๊ด€์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์—†๋‹ค๋ฉด Travis CI์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘์—…์ด ์กฐ๊ธˆ ๋” ์‰ฌ์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” Issue #309๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ๊ฒƒ์„ ๋‚˜ ์ž์‹ ์—๊ฒŒ ํ• ๋‹นํ–ˆ๋‹ค. ๋‹ค์Œ์ฃผ๋‚˜ 2์ฃผ์•ˆ์— ์ด๊ฑธ ์˜ฌ๋ฆฌ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ

๋‚ด ๊ฒฝํ—˜์ƒ ์„ค์ •ํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์ž‘์—…์ด ๋” ํ•„์š”ํ•˜์ง€๋งŒ ๊ฐ€์ƒ ๋จธ์‹  ๋‚ด์—์„œ ์‹คํ–‰ํ•˜๋ฉด CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ๋Œ€ํ•ด ๋ณด๋‹ค ์ผ๊ด€๋œ ํ™˜๊ฒฝ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ๋งํ•  ๊ฒƒ๋„ ์—†์ด ๋ˆ„๊ตฌ๋‚˜ Vagrant/VirtualBox ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด์‹์„ฑ์ด ๋” ๋†’์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ตฌ์„ฑ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๊ธ‰์—…์ฒด๋ณ„ YAML ์„ ์–ธ๊ณผ ๊ด€๊ณ„์—†์ด ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ CI/CD ์†”๋ฃจ์…˜์œผ๋กœ ์‰ฝ๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@oxr463๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ ๊ธธ์„ ๊ฐˆ ํ•„์š”๊ฐ€ ์—†๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฑฐ๊ธฐ์— ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์€ ์ข‹์€ ์ผ์ž…๋‹ˆ๋‹ค.

@drakenclimber ์ €๋Š” ์ด๊ฒƒ์„ ๋ฆด๋ฆฌ์Šค ์ด์ •ํ‘œ์—์„œ ์‚ญ์ œํ•˜๊ณ  "์ค‘๋‹จ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ" ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋‚ฎ์Œ์œผ๋กœ ๋‚ฎ์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅด๊ฑฐ๋‚˜ ๊ทธ์— ๋”ฐ๋ผ ๋ ˆ์ด๋ธ”์„ ๊ฐ„๋‹จํžˆ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค.

@drakenclimber ์ €๋Š” ์ด๊ฒƒ์„ ๋ฆด๋ฆฌ์Šค ์ด์ •ํ‘œ์—์„œ ์‚ญ์ œํ•˜๊ณ  "์ค‘๋‹จ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ" ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋‚ฎ์Œ์œผ๋กœ ๋‚ฎ์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅด๊ฑฐ๋‚˜ ๊ทธ์— ๋”ฐ๋ผ ๋ ˆ์ด๋ธ”์„ ๊ฐ„๋‹จํžˆ ์กฐ์ •ํ•˜์‹ญ์‹œ์˜ค.

๋‚˜์—๊ฒŒ ์ข‹์€ ์†Œ๋ฆฌ. ๊ฐ์‚ฌ!

@drakenclimber ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ".org"๊ฐ€ "๋ช‡ ์ฃผ ๋‚ด์—" ์‚ฌ๋ผ์งˆ ์˜ˆ์ •์ด๋ฏ€๋กœ travis-ci.org์—์„œ travis-ci.com์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค! ๋ชฐ๋ž์–ด์š”. ๊ฐ์‚ฌ!

๊ทธ๋Ÿผ ๋‹ค์Œ์ฃผ์— ์˜ฌ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰