GitHub Actions ํ•ธ๋“ค๋Ÿฌ์˜ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด Nixpkgs์˜ ํŒจํ‚ค์ง€๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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" ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ €์žฅ์†Œ ์•ก์„ธ์Šค ํ† ํฐ์ด ํฌํ•จ๋œ ์ฒซ ๋ฒˆ์งธ ์ค„์ด ๊ณต๊ฐœ ๋กœ๊ทธ์— ์ถœ๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 GitHub Actions ํ•ธ๋“ค๋Ÿฌ์˜ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด Nixpkgs์˜ ํŒจํ‚ค์ง€๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ 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

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster