自作CPUのリグレッションテストやCIをGitHub上で行いたくて、いくつか手法を調査している。
1つの手法としては、Dockerfileを使ってリグレッション環境を構築する。Dockerイメージ上にRISC-VツールチェインとVerilatorをインストールしておく。これをDockerHubに登録しておいた。
以下がDockefileの一部。VerilatorとRISC-Vツールチェインをインストールしている。
FROM ubuntu:22.04 RUN apt update ## ... 途中省略 ... # ------------------ # Install Verilator # ------------------ RUN curl -L https://github.com/verilator/verilator/archive/refs/tags/v4.228.tar.gz | tar xz && \ cd verilator-4.228/ && \ autoconf && \ ./configure && \ make -j$(nproc) && \ make install # ----------------------------- # RISC-V GNUTools Install # ----------------------------- WORKDIR /work/ RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-elf-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz | tar xz # RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-glibc-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz | tar xz # RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-musl-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz | tar xz ...
build-env: docker build . -f Dockerfile.migrate --platform=linux/amd64 -t msyksphinz/msrh:run_env docker push msyksphinz/msrh:run_env
これに対して、GitHub Actionsでどのようにリグレッションテストを実行するのか考えているのだが、以下のような環境を構築した。
services: app: build: context: "." dockerfile: "Dockerfile.test" image: msrh-test container_name: msrh-test environment: TZ: 'Asia/Tokyo'
Dockefile.testの中身は以下のようになっている。
FROM msyksphinz/msrh:run_env COPY . /work/ WORKDIR /work/verilator_sim RUN ["/work/scripts/runtest.py", "--isa", "rv64imac", "-c", "tiny", "-t", "dhrystone"]
このCOPYコマンドで、展開されたリポジトリの内容自体をコンテナ環境内にすべてコピーしている。そのうえでビルドを走らせるわけだ。これが正しいやり方なのかがわからないが、とりあえずうまく動いているようだ。