FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

自作CPUのリグレッションテストをGitHub Actionsで行うための手法の調査 (2. 環境の更新)

自作CPUのリグレッションテストやCIをGitHub上で行いたくて、いくつか手法を調査している。

msyksphinz.hatenablog.com

いくつかやり方を教えてもらって、結局以下のように落ち着いた。

.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の大半が検証環境のビルドに費やされている。これは、あらかじめビルド済みのバイナリを検証環境に突っ込んでおくことで解決できると思っている。