Rust for Linux 統合テスト
Rust for Linux (RfL) は、Linux カーネルに Rust プログラミング言語のサポートを追加する取り組みです。
Rust for Linux ジョブが壊れた場合はどうすればよいですか?
PR が Rust for Linux CI ジョブを壊した場合は、次のようにします。
- 障害が意図しないもので、一時的なものに見える場合は、RfL に
知らせて再試行します。
- PR が緊急で、再試行しても修正されない場合は、CI ジョブを
一時的に無効にします(
src/ci/github-actions/jobs.ymlのimage: x86_64-rust-for-linuxジョブをコメントアウトします)。
- PR が緊急で、再試行しても修正されない場合は、CI ジョブを
一時的に無効にします(
- 障害が意図しないものだった場合は、その障害を解決するように PR を変更します。
- 障害が意図したものだった場合は、RfL に知らせて、
カーネル側で何を変更する必要があるかを話し合います。
- PR が緊急の場合は、CI ジョブを一時的に無効にします(
src/ci/github-actions/jobs.ymlのimage: x86_64-rust-for-linuxジョブをコメントアウトします)。 - PR が数日待てる場合は、RfL メンテナーが必要な変更を行った
新しい Linux カーネルのコミットハッシュを提供するのを待ち、それを
PR に適用します。これにより、変更が機能することを確認できます(
src/ci/docker/scripts/rfl-build.shのLINUX_VERSION環境変数を更新します)。
- PR が緊急の場合は、CI ジョブを一時的に無効にします(
RfL 開発者に連絡する必要がある場合は、Rust for Linux ping グループに ping して助けを求めることができます。
@rustbot ping rfl
CI で Rust for Linux をビルドする
Rust for Linux は、プルリクエストがマージされる前に実行される bors テスト群の一部として ビルドされます。
このワークフローは、Rust コンパイラの stage1 sysroot をビルドし、Linux カーネルをダウンロードして、この sysroot を使用して複数の Rust for Linux ドライバーと サンプルのコンパイルを試みます。RfL は複数の不安定なコンパイラ/言語機能を使用しているため、 このワークフローにより、特定のコンパイラ変更によってそれが壊れる場合に通知されます。
プルリクエストが Rust for Linux ビルダーを壊す可能性を懸念していて、
bors キューに送信する前にテストしたい場合は、bors に Rust for Linux 統合をビルドする
try ジョブを実行するよう依頼するだけです。
@bors try jobs=x86_64-rust-for-linux。