NixOS ๋ฐฐํฌํ๊ณผ Nix ํจํค์ง ๊ด๋ฆฌ์ ์ํ๊ณ์์ ์ฌ์ฉ๋๋ Nixpkgs ํจํค์ง ์ ์ฅ์์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํ ๋ ์๋์ผ๋ก ํธ์ถ๋๋ GitHub Actions ํธ๋ค๋ฌ์ ์ทจ์ฝ์ ์ด ๊ณต๊ฐ๋์์ต๋๋ค. ์ด ์ทจ์ฝ์ ์ ํตํด ๊ถํ์ด ์๋ ์ฌ์ฉ์๊ฐ Nixpkgs์ ํธ์คํ ๋ ๋ชจ๋ ํจํค์ง์ ์์ค ์ฝ๋์ ๋ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๊ถํ์ ๋ถ์ฌํ๋ ํ ํฐ์ ์ถ์ถํ ์ ์์์ต๋๋ค. ์ด ํ ํฐ์ ํตํด ํ๋ก์ ํธ์ Git ์ ์ฅ์๋ฅผ ํตํด ๋ชจ๋ ํจํค์ง๋ฅผ ์ง์ ์์ ํ ์ ์์์ผ๋ฉฐ, ๊ฒํ ๋ฐ ์น์ธ ์ ์ฐจ๋ฅผ ์ฐํํ ์ ์์์ต๋๋ค.
Nixpkgs๋ฅผ ํดํนํ์ฌ ๋ชจ๋ ํจํค์ง์ ์ฌ์ฉ์ ์ง์ ์ฝ๋๋ฅผ ์ฝ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ง๋ 10์ NixCon ์ปจํผ๋ฐ์ค์์ ๋ณด์ ์ฐ๊ตฌ์๋ค์ ์ํด ์์ฐ๋์์ผ๋ฉฐ, ํ๋ก์ ํธ ์ธํ๋ผ์ ์ฆ์ ํจ์น๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ณต๊ฒฉ์ ์ธ๋ถ ์ฌํญ์ 1๋ ํ์์ผ ๊ณต๊ฐ๋์์ต๋๋ค. ์ด ๋ฌธ์ ๋ Nixpkgs GitHub ์ ์ฅ์์์ "pull_request_target" ์ด๋ฒคํธ์ ๋ฐ์ธ๋ฉ๋์ด ์๋ก์ด ํ ๋ฆฌํ์คํธ์ ๋ํ ์๋ ๊ฒ์ฌ๋ฅผ ์ํํ๋ GitHub Actions ํธ๋ค๋ฌ ์ฌ์ฉ๊ณผ ๊ด๋ จ์ด ์์์ต๋๋ค.
"pull_request" ์ด๋ฒคํธ์ ๋ฌ๋ฆฌ "pull_request_target"์ ํธ๋ค๋ฌ๋ ๋น๋ ํ๊ฒฝ์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ด ๋ถ์ฌ๋๋ฏ๋ก ํ ๋ฆฌํ์คํธ์์ ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ๊ฐ๋ณํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. "pull_request_target"์ ๋ฐ์ธ๋ฉ๋ ํธ๋ค๋ฌ ์ค ํ๋๋ codeowners-validator ์ ํธ๋ฆฌํฐ๋ฅผ ๋น๋ํ๊ณ ํธ์ถํ์ฌ ํ ๋ฆฌํ์คํธ์ ์ ๊ณต๋ "OWNERS" ํ์ผ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ์ต๋๋ค. steps: โ uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr โ run: nix-build base/ci -A codeownersValidator โ run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS
๋ฌธ์ ๋ OWNERS ํ์ผ์ ํ์์ด ์๋ชป ์ง์ ๋๋ฉด codeowners-validator ์ ํธ๋ฆฌํฐ๊ฐ ์๋ชป๋ ๋ฌธ์์ด์ ๋ด์ฉ์ ๊ณต๊ฐ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ํ์ค ๋ก๊ทธ์ ์ถ๋ ฅํ๋ค๋ ์ ์ด์์ต๋๋ค. ๊ณต๊ฒฉ์ ํ ๋ฆฌํ์คํธ์ OWNERS๋ผ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ผ๋ก ๊ตฌ์ฑ๋์์ต๋๋ค. ์ด ๋งํฌ๋ ๋น๋ ํ๊ฒฝ์ ์๊ฒฉ ์ฆ๋ช ์ ์ ์ฅํ๋ ".credentials" ํ์ผ์ ๊ฐ๋ฆฌํต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด ํ์ผ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ ์ฅ์ ์ก์ธ์ค ํ ํฐ์ด ํฌํจ๋ ์ฒซ ๋ฒ์งธ ์ค์ด ๊ณต๊ฐ ๋ก๊ทธ์ ์ถ๋ ฅ๋์์ต๋๋ค.

๋ํ editorconfig ๊ท์น์ ํ์ธํ๋ ํธ๋ค๋ฌ์์ ๋ ๋ค๋ฅธ ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค.๋จ๊ณ: โ ์ด๋ฆ: PR์์ ๋ณ๊ฒฝ๋ ํ์ผ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ ์คํ: gh api [โฆ] | jq [ โฆ ] > ยซ$HOME/changed_filesยป โ ์ฌ์ฉ: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 ์ฐธ์กฐ: refs/pull/$/merge โ ์ด๋ฆ: EditorConfig ํ์ธ ์คํ: cat ยซ$HOME/changed_filesยป | xargs -r editorconfig-checker
์ด ๊ฒฝ์ฐ, ๋ฌธ์ ๋ ํ ๋ฆฌํ์คํธ์ ๊ฐ ํ์ผ๊ณผ ํจ๊ป editorconfig-checker๋ฅผ ์คํํ๊ธฐ ์ํด "xargs" ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด์์ต๋๋ค. ํ์ผ ์ด๋ฆ์ด ๊ฒ์ฆ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ณต๊ฒฉ์๋ ํ ๋ฆฌํ์คํธ์ ํน์ ๋ฌธ์๊ฐ ํฌํจ๋ ํ์ผ์ ํฌํจํ ์ ์์๊ณ , ์ด ํ์ผ์ editorconfig-checker ์คํ ์ ๋ช
๋ น์ค ์ธ์๋ก ์ฒ๋ฆฌ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, "--help" ํ์ผ์ ์์ฑํ ๋ editorconfig-checker๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์
์ ๋ํ ํํธ๋ฅผ ํ์ํ์ต๋๋ค.
์ถ์ฒ : opennet.ru
