GitHub Actions เชนเซ‡เชจเซเชกเชฒเชฐเชฎเชพเช‚ เชฐเชนเซ‡เชฒเซ€ เชจเชฌเชณเชพเชˆเชจเซ‡ เช•เชพเชฐเชฃเซ‡ Nixpkgs เชฎเชพเช‚ เชชเซ‡เช•เซ‡เชœเซ‹ เชธเชพเชฅเซ‡ เชšเซ‡เชกเชพ เชฅเชฏเชพ.

NixOS เชตเชฟเชคเชฐเชฃ เช…เชจเซ‡ Nix เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐ เช‡เช•เซ‹เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ Nixpkgs เชชเซ‡เช•เซ‡เชœ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชชเซเชฒ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ เชธเชฌเชฎเชฟเชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ GitHub เชเช•เซเชถเชจ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชฎเชพเช‚ เชฐเชนเซ‡เชฒเซ€ เชจเชฌเชณเชพเชˆเช“ เช†เชชเชฎเซ‡เชณเซ‡ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡, เชคเซ‡ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เช† เชจเชฌเชณเชพเชˆเช เช…เชจเชงเชฟเช•เซƒเชค เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ Nixpkgs เชฎเชพเช‚ เชนเซ‹เชธเซเชŸ เช•เชฐเซ‡เชฒเชพ เชฌเชงเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชจเชพ เชธเซ‹เชฐเซเชธ เช•เซ‹เชกเชจเซ‡ เชตเชพเช‚เชšเชตเชพ เช…เชจเซ‡ เชฒเช–เชตเชพเชจเซ€ เชเช•เซเชธเซ‡เชธ เช†เชชเชคเซ‹ เชŸเซ‹เช•เชจ เช•เชพเชขเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ€ เชนเชคเซ€. เช† เชŸเซ‹เช•เชจ เชธเชฎเซ€เช•เซเชทเชพ เช…เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ Git เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เชฆเซเชตเชพเชฐเชพ เช•เซ‹เชˆเชชเชฃ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เชธเซ€เชงเชพ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

Nixpkgs เชจเซ‡ เชšเซ‡เชกเชพ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เช•เชธเซเชŸเชฎ เช•เซ‹เชก เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช—เชฏเชพ เช“เช•เซเชŸเซ‹เชฌเชฐเชฎเชพเช‚ NixCon เช•เซ‹เชจเซเชซเชฐเชจเซเชธเชฎเชพเช‚ เชธเซเชฐเช•เซเชทเชพ เชธเช‚เชถเซ‹เชงเช•เซ‹ เชฆเซเชตเชพเชฐเชพ เชฆเชฐเซเชถเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชฎเชพเช‚ เชคเชฐเชค เชœ เชชเซ‡เชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เชœเซ‹ เช•เซ‡, เชนเซเชฎเชฒเชพเชจเซ€ เชตเชฟเช—เชคเซ‹ เชซเช•เซเชค เชเช• เชตเชฐเซเชท เชชเช›เซ€ เชœ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€. เช† เชฎเซเชฆเซเชฆเซ‹ Nixpkgs GitHub เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ GitHub เชเช•เซเชถเชจ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเชพ เช‰เชชเชฏเซ‹เช— เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชนเชคเซ‹, เชœเซ‡ "pull_request_target" เช‡เชตเซ‡เชจเซเชŸ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เช…เชจเซ‡ เชจเชตเซ€ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เช“ เชชเชฐ เชธเซเชตเชšเชพเชฒเชฟเชค เชคเชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡.

"pull_request" เช‡เชตเซ‡เชจเซเชŸเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, "pull_request_target" เชฎเชพเช‚ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเซ‡ เชฌเชฟเชฒเซเชก เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชตเชพเช‚เชšเชตเชพ/เชฒเซ‡เช–เชตเชพเชจเซ€ เชเช•เซเชธเซ‡เชธ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‡ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เชฎเชพเช‚ เชชเชธเชพเชฐ เชฅเชฏเซ‡เชฒเชพ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช–เชพเชธ เช•เชพเชณเชœเซ€ เชฒเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡. "pull_request_target" เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชนเซ‡เชจเซเชกเชฒเชฐเชฎเชพเช‚เชฅเซ€ เชเช•เซ‡ เช•เซ‹เชกเช“เชจเชฐเซเชธ-เชตเซ‡เชฒเชฟเชกเซ‡เชŸเชฐ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€ เชฌเชจเชพเชตเซ€เชจเซ‡ เช…เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€เชจเซ‡ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เชฎเชพเช‚ เช†เชชเซ‡เชฒเซ€ "OWNERS" เชซเชพเช‡เชฒเชจเซ‡ เชฎเชพเชจเซเชฏ เช•เชฐเซ€: steps: โ€” เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf เชธเชพเชฅเซ‡: 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 เชธเชพเชฅเซ‡: ref: refs/pull/$/merge โ€” เชจเชพเชฎ: EditorConfig เชฐเชจ เชคเชชเชพเชธเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡: cat ยซ$HOME/changed_filesยป | xargs -r editorconfig-checker

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชธเชฎเชธเซเชฏเชพ เช เชนเชคเซ€ เช•เซ‡ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เชฎเชพเช‚ เชฆเชฐเซ‡เช• เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ editorconfig-checker เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ "xargs" เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชคเซ‹ เชนเชคเซ‹. เชซเชพเช‡เชฒเชจเชพเชฎเซ‹ เชฎเชพเชจเซเชฏ เชจ เชนเซ‹เชตเชพเชฅเซ€, เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เชฎเชพเช‚ เช–เชพเชธ เช…เช•เซเชทเชฐเซ‹ เชงเชฐเชพเชตเชคเซ€ เชซเชพเช‡เชฒเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡ editorconfig-checker เชšเชฒเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เช•เชฎเชพเชจเซเชก-เชฒเชพเช‡เชจ เชฆเชฒเซ€เชฒเซ‹ เชคเชฐเซ€เช•เซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, "--help" เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡, editorconfig-checker เช‰เชชเชฒเชฌเซเชง เชตเชฟเช•เชฒเซเชชเซ‹ เชตเชฟเชถเซ‡ เชธเช‚เช•เซ‡เชค เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชถเซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹