Skip to content

GitHub ActionsでPlan 9のCIを構築する

Russ Coxのboot/qemuを構築するでもみたが、boot/qemu があるのでGitHub ActionsでCI構築できるのではないか。

ブートに必要なバイナリ類はGitHub Releasesに置いておく。

ActionsでCIを回すときに、最新のReleasesからバイナリをダウンロードする。そうすると boot/qemu で起動できるので、あとは expect スクリプト等で動かせばいい。

タグでリリースしたときバイナリをビルドする。このとき、amd64 環境なら 386 のバイナリも必要になる。手順自体はPlan 9環境の再構築と同じなので省略。

CI実行するときに配布するバイナリを更新するときはgit ls-filesのオプション.gitignore しているものを集める。こうするとCIには不要なファイルも混ざるかもしれないが支障ないはず。

scriptでsendするときカーネルに入ってから入力を受け付けなくなる。Plan 9側からの出力は流れてくる。plan9.iniconsole= を追加しても変わらない。uartは #t デバイスにあるはずだが空になっている。

Terminal window
% grep uart /dev/drivers
#t uart
% ls '#t'

カーネルにドライバが不足しているのか、QEMU側のオプションが足りないのか。GCEで動いているインスタンスには /dev/eiaX があった。

これの原因は9kカーネルのシリアル通信実装で、i8250pnp の実装が悪くて全ての eiaX デバイスが無視されていたから。一応9fansに修正パッチを投稿したけど、どうなることやら。