GitHub ActionsでPlan 9のCIを構築する
Russ Coxのboot/qemuを構築するでもみたが、boot/qemu があるのでGitHub ActionsでCI構築できるのではないか。
ブートに必要なバイナリ類はGitHub Releasesに置いておく。
ActionsでCIを回すときに、最新のReleasesからバイナリをダウンロードする。そうすると boot/qemu で起動できるので、あとは expect スクリプト等で動かせばいい。
バイナリの更新
Section titled “バイナリの更新”タグでリリースしたときバイナリをビルドする。このとき、amd64 環境なら 386 のバイナリも必要になる。手順自体はPlan 9環境の再構築と同じなので省略。
CI実行するときに配布するバイナリを更新するときはgit ls-filesのオプションで .gitignore しているものを集める。こうするとCIには不要なファイルも混ざるかもしれないが支障ないはず。
scriptでsendするときカーネルに入ってから入力を受け付けなくなる。Plan 9側からの出力は流れてくる。plan9.ini に console= を追加しても変わらない。uartは #t デバイスにあるはずだが空になっている。
% grep uart /dev/drivers#t uart
% ls '#t'カーネルにドライバが不足しているのか、QEMU側のオプションが足りないのか。GCEで動いているインスタンスには /dev/eiaX があった。
これの原因は9kカーネルのシリアル通信実装で、i8250pnp の実装が悪くて全ての eiaX デバイスが無視されていたから。一応9fansに修正パッチを投稿したけど、どうなることやら。