HN 日本語サマリー

← 一覧へ戻る
プログラミング

プルリクエストを起動してレビューする

Review a pull request by booting it (fzakaria.com)

3 pointsby lalitmaganti0 コメント

要約

trynix-previewは、プルリクエストのビルドをブラウザ上で直接起動できるGitHubアクションです。これにより、開発者はコードをクローンしたりビルドしたりすることなく、プルリクエストの動作をテスト、検証、フィードバックできます。この機能はNixエコシステムを活用しており、ブラウザ上でLinuxマシンを起動してプルリクエストのコードを実行します。

全文翻訳

プルリクエストを起動してレビューする

tl;dr; trynix-preview は、プルリクエストに対してブラウザでPRのビルドを起動できるリンクをコメントするGitHubアクションです。これはhttps://trynix.devを使用します。サーバー不要、ブラウザのみ。

以前のtrynix投稿では、ブラウザで任意の/nix/storeパスを起動できるようになったことで、現在達成可能なアイデアのリストで締めくくりました。最も明白なのは、レビュアーがテスト、検証、フィードバックのためにプルリクエストのビルドをブラウザで起動できるようにすることでした。

それが現実になりました。🤯

デモは1000語の価値があります。私のsqlelfプロジェクトに対するプルリクエスト(PR#31)、フォークからのもの、そして私たちのactionが残したコメントはこちらです。

[画像: github-actions[bot]からのGitHubプルリクエストコメント。これは「Boot this build in your browser」というリンクがあり、タブでLinux VMが起動し、キャッシュからこのプルリクエストのビルドを取得すると述べ、ビルドされたコミットを特定し、「Store paths」セクションが折りたたまれています。]

リンクをクリックすると、そのPRのsqlelfがPATH上にあるLinuxマシンがタブで起動します。

何もクローンしていません、何もビルドしていません。サーバー、SSH、VPN、Docker、VM、クラウドは一切不要です。ブラウザとリンクだけです。😈

§Gimme. Gimme. Gimme.

どのGitHubアクションでもそうですが、ワークフローに追加するのは数行だけです。

注意点として、アクションがリンクできるように、パスは既にビルドされキャッシュされている必要があります。アクションは何もビルドまたはキャッシュしません。

# NixキャッシュとしてCachixを設定します。
- uses: cachix/cachix-action@v17
  with:
    name: sqlelf
    authToken: $ # GitHub Secretsから取得
# プルリクエストのコードをビルドし、キャッシュにプッシュします。これにより、アクションがリンクできるようになります。
- run: nix build .#default
- uses: fzakaria/trynix@v1
  with:
    cache: https://sqlelf.cachix.org
    publicKey: sqlelf.cachix.org-1:MLnjolA9AsKscTOJKDSA+ZAcgIK8BwZA574j4+Cs2bg=
    # 複数のパスを起動したい場合は、複数のattrを指定できます。
    attrs: .#default

このアクションは何も公開もビルドもしません。キャッシュを満たしているものはそのまま継続され、アクションの唯一の仕事はnix eval経由でストアパスを提供し、キャッシュのURLと公開鍵をブラウザに渡すことです。

Nixキャッシュプロバイダーに依存しませんが、オープンソース向けには最大5GiBまで無料なのでCachixを推奨します。11Cachixにサインアップすることを強くお勧めしますが、無料ティアは非常に寛大なので、これなしでもテストできます。

完全な例については、私のtrynix.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の支配者がエンジンを数秒で大規模バイナリを実行できるように最適化できるようになるかもしれませんが、現時点では、このアクションは中小規模のバイナリに最適です。