プログラミング
プルリクエストを起動してレビューする
Review a pull request by booting it (fzakaria.com)
要約
trynix-previewは、プルリクエストのビルドをブラウザ上で直接起動できるGitHubアクションです。これにより、開発者はコードをクローンしたりビルドしたりすることなく、プルリクエストの動作をテスト、検証、フィードバックできます。この機能はNixエコシステムを活用しており、ブラウザ上でLinuxマシンを起動してプルリクエストのコードを実行します。
全文翻訳
tl;dr; trynix-previewは、プルリクエストのビルドをブラウザで起動できるリンクをコメントするGitHubアクションで、https://trynix.dev を使用します。サーバーは不要で、ブラウザのみで動作します。以前のtrynixに関する投稿では、ブラウザで任意の /nix/store パスを起動できるようになったことで達成できるアイデアのリストで締めくくりました。最も明白なものは、レビュアーがテスト、検証、フィードバックのためにプルリクエストのビルドをブラウザで起動できるようにすることでした。それが今、現実になりました。🤯デモは1000語に値します:これは私のsqlelfプロジェクトに対するプルリクエスト(PR#31)で、フォークから作成され、アクションがコメントを残したものです:リンクをクリックすると、そのPRのsqlelfがPATH上にあるLinuxマシンがタブで起動します。何もクローンせず、何もビルドしていません。サーバー、SSH、VPN、Docker、VM、クラウドは一切不要です。必要なのはブラウザとリンクだけです。😈 §Gimme. Gimme. Gimme. どのGitHubアクションでもそうですが、ワークフローに追加するのは数行だけです。ただし、アクションがリンクできるように、パスを既にビルドしてキャッシュしておく必要があります。アクションはビルドもキャッシュも行いません。
# NixキャッシュとしてCachixを設定します。
- uses: cachix/cachix-action@v17
with:
name: sqlelf
authToken: $ # プルリクエストのコードをビルドしてキャッシュにプッシュするため、アクションがリンクできるようにします。
- run: nix build .#default
- uses: fzakaria/trynix@v1
with:
cache: https://sqlelf.cachix.org
publicKey: sqlelf.cachix.org-1:MLnjolA9AsKscTOJKDSA+ZAcgIK8BwZA574j4+Cs2bg=
# 複数のパスを起動したい場合は、複数の属性を持つことができます。
attrs: .#default
アクションは何も公開もビルドもしません。キャッシュを満たしているものはそのまま継続され、アクションの唯一の仕事は、nix eval を介してストアパスを提供し、キャッシュのURLと公開鍵をブラウザに渡すことです。Nixキャッシュプロバイダーに依存しませんが、Cachixを推奨します。なぜなら、オープンソースでは5GiBまで無料だからです。11Cachixにサインアップすることを強くお勧めしますが、無料ティアは非常に寛大なので、それなしでもテストできます。完全な例については、私のtrinix.yamlワークフローを確認してください。ワークフローはフォークからのプルリクエストで実行されるため、actions/checkoutステップでallow-unsafe-pr-checkout: trueを設定する必要があります。これはセキュリティ上の影響があります。22プルリクエストのビルドには、プライベートで分離されたキャッシュを推奨します。これにより、フォークがメインキャッシュにプッシュできなくなります。それが気に入らない場合は、メンテナーがプルリクエストで/trynixと入力するとワークフローが開始されるバージョンがあります。いずれの場合も、ワークフローはデフォルトブランチで実行され、プルリクエストのコードをチェックアウトするため、フォークはビルドするワークフローを編集できません。§Game over? 簡単にレビュアーがPRを起動できるようにすることで、すべてのCI製品を覆したのでしょうか?残念ながら、そうではありません。🥲大規模なバイナリのパフォーマンスはかなり悪いです。エンジンにAI支援で多くの改善を加えたにもかかわらず、大規模なバイナリの実行には1〜2分かかることがあります。33サイトに、さまざまなアプリケーションの起動および実行時間に関する豊富なデータを含むベンチマークページ、https://trynix.dev/bench/ を追加しました。それでも、これは依然として非常に素晴らしいワークフローであり、Nixのパワーを示しています。AGIに近づくにつれて、AIの支配者がエンジンを数秒で大規模なバイナリを実行できるように最適化してくれるかもしれませんが、今のところ、このアクションは中小規模のバイナリに最適です。