เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ GitHub Actions เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปเบžเบฑเบเป€เบเบฑเบ”เบ•เปˆเบฒเบ‡เป†เปƒเบ™ Nixpkgs เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบšเบธเบเบฅเบธเบ.

เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ GitHub Actions, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเป€เบญเบตเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบžเบฑเบเป€เบเบฑเบ” Nixpkgs, เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ NixOS เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ”เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เปเบžเบฑเบเป€เบเบฑเบ” Nix, เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบ. เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเป„เบ”เป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เป€เบญเบปเบฒ token เปƒเบซเป‰เบเบฒเบ™เบญเปˆเบฒเบ™ เปเบฅเบฐเบ‚เบฝเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ—เบธเบเปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบขเบนเปˆเปƒเบ™ Nixpkgs. token เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปเบเป‰เป„เบ‚เป‚เบ”เบเบเบปเบ‡เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เปƒเบ”เป†เป‚เบ”เบเบœเปˆเบฒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เบ‚เป‰เบฒเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เปเบฅเบฐเบเบฒเบ™เบญเบฐเบ™เบธเบกเบฑเบ”.

เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบก Nixpkgs เปเบฅเบฐเปƒเบชเปˆเบฅเบฐเบซเบฑเบ” custom เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเบธเบ”เปƒเบ”เบเปเปˆเบ•เบฒเบกเป„เบ”เป‰เบ–เบทเบเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ”เบเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปƒเบ™เป€เบ”เบทเบญเบ™เบ•เบธเบฅเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปƒเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบก NixCon เปเบฅเบฐเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เบ—เบฑเบ™เบ—เบตเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบˆเบกเบ•เบตเป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบ›เบตเบ•เปเปˆเบกเบฒ. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ GitHub Actions เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ Nixpkgs GitHub, เป€เบŠเบดเปˆเบ‡เบœเบนเบเบกเบฑเบ”เบเบฑเบšเป€เบซเบ”เบเบฒเบ™ "pull_request_target" เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ•เบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เปƒเบซเบกเปˆ.

เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเป€เบซเบ”เบเบฒเบ™ "pull_request", เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เปƒเบ™ "pull_request_target" เป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบญเปˆเบฒเบ™ / เบ‚เบฝเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ”เบนเปเบฅเบžเบดเป€เบชเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบœเบนเบเบกเบฑเบ”เบเบฑเบš "pull_request_target" เป„เบ”เป‰เบเบงเบ”เบชเบญเบšเป„เบŸเบฅเปŒ "OWNERS" เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เป‚เบ”เบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเป‚เบ—เบซเบฒ codeowners-validator utility: เบ‚เบฑเป‰เบ™เบ•เบญเบ™: โ€” เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf เบเบฑเบš: ref: โ€”m refs/buildci/pull/$/ -A codeownersValidator โ€” run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒเป„เบŸเบฅเปŒ OWNERS เบ–เบทเบเบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, codeowners-validator utility เบˆเบฐเบญเบญเบเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡ string เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ. เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบเบฒเบ™เบงเบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆ OWNERS เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡, เบŠเบตเป‰เป„เบ›เบซเบฒเป„เบŸเบฅเปŒ ".credentials", เป€เบŠเบดเปˆเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒเบ•เบปเบงเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป„เบŸเบฅเปŒเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ” เปเบฅเบฐเปเบ–เบงเบ—เปเบฒเบญเบดเบ”, เบ—เบตเปˆเบกเบต token เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ repository, เป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเป„เบ›เบเบฑเบ‡เบšเบฑเบ™เบ—เบถเบเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ.

 เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ GitHub Actions เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปเบžเบฑเบเป€เบเบฑเบ”เบ•เปˆเบฒเบ‡เป†เปƒเบ™ Nixpkgs เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบšเบธเบเบฅเบธเบ.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบญเบทเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบเบงเบ”เบชเบญเบšเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เปเบเป‰เป„เบ‚. เบ‚เบฑเป‰เบ™ เบ•เบญเบ™: โ€” เบŠเบทเปˆ: เป„เบ”เป‰ เบฎเบฑเบš เบšเบฑเบ™ เบŠเบต เบฅเบฒเบ เบŠเบทเปˆ เบ‚เบญเบ‡ เบเบฒเบ™ เบ›เปˆเบฝเบ™ เปเบ›เบ‡ เป„เบŸเบฅ เปŒ เบˆเบฒเบ เบเบฒเบ™ เบ”เปเบฒ เป€เบ™เบตเบ™ เบ‡เบฒเบ™ PR: gh api [โ€ฆ] | jq [ โ€ฆ ] > ยซ$HOME/changed_filesยป โ€” เปƒเบŠเป‰: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 เบเบฑเบš: ref: refs/pull/$/merge โ€” เบŠเบทเปˆ: เบเบณเบฅเบฑเบ‡เบเบงเบ”เบชเบญเบš EditorConfig run: cat ยซ$HOME/changed_file xargs -r editorconfig-checker

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบเบฒเบ™เปƒเบŠเป‰ "xargs" utility เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ editorconfig-checker เบเบฑเบšเปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบŠเบทเปˆเป„เบŸเบฅเปŒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบเบงเบ”เบชเบญเบš, เบœเบนเป‰เป‚เบˆเบกเบ•เบตเบชเบฒเบกเบฒเบ”เบฅเบงเบกเป€เบญเบปเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบžเบดเป€เบชเบ”เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เป€เบ›เบฑเบ™ arguments เปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™ editorconfig-checker. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ "--help", editorconfig-checker เบˆเบฐเบชเบฐเปเบ”เบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบกเบตเบขเบนเปˆ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™