自作CPUのリグレッションテストやCIをGitHub上で行いたくて、いくつか手法を調査している。
いくつかやり方を教えてもらって、結局以下のように落ち着いた。
.github/workflows/
で記述しているrun-on
はデフォルトで良い。container
のところに自分の使いたいコンテナを指定すると、それだけでコンテナをダウンロード、リポジトリを$GITHUB_WORKSPACE
上に展開する。なるほどなるほど。
container: image: msyksphinz/msrh:run_env
あとはいつも通りにリポジトリをチェックアウトして、テストが流れるようにGitHub workflowを構成しておけばよい。
steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 - name: Checkout repository and submodules uses: actions/checkout@v3 with: submodules: recursive - name: Tiny Build run: | cd $GITHUB_WORKSPACE/tests/riscv-tests && ./configure && make -j$(nproc) cd $GITHUB_WORKSPACE/spike_dpi && make all -j$(nproc) cd $GITHUB_WORKSPACE/verilator_sim && ../scripts/runtest.py --isa rv64imafdc -c tiny -t sanity -j$(nproc)
これで一応テストが流れるようになった。ただし今の問題は、リポジトリ自体がSpikeなどの検証環境を含んでおり、GitHub Actionsでそれのビルドから始まってしまっているということ。このため、CIの大半が検証環境のビルドに費やされている。これは、あらかじめビルド済みのバイナリを検証環境に突っ込んでおくことで解決できると思っている。