Verilatorを使った自作CPUのリグレッションテスト用に、Dockerでの環境構築と同時にGitHub Actionsを使ってCI環境を作っておきたい。 GitHub Actionsはこれまで全く使ったことが無かったので、まずは使い方を覚えるところから。
.github/workflows
というところにYAMLファイルを置いておくらしい。やりたいこととしては
- 必要なパッケージのインストール(Ubuntu)
- RISC-Vツールのインストール(GNU GCCとか)
- Verilatorのインストール
- 各コンフィグレーションでのビルド
- 各コンフィグレーションでのリグレッションテスト
まで出来るようにしてみたい。まずは簡単にGitHub Actionsを使えるようになるまでを試行した。
主に以下を参考にしながら進めている。
なるほど、DockerやVagrantと似ていて、環境を構築するためのスクリプトを用意しておく感じか。GitHub Actionsの場合はYAMLを使うということになっている。
とりあえずいろんなものをコピペしながら以下のようなmain.yml
ファイルを作成した。
# いろいろ省略 # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: name: ci strategy: matrix: system: ["ubuntu-20.04"] verilator: ["4.204"] # The type of runner that the job will run on runs-on: ${{ matrix.system }} # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 # Apt updates - name: apt_updates run: | sudo apt update sudo apt install -y tzdata sudo apt install -y git autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev\ libexpat-dev libfl-dev # Build Verilator - name: Cache Verilator ${{ matrix.verilator }} uses: actions/cache@v2.1.6 id: cache-verilator with: path: verilator-${{ matrix.verilator }} key: ${{ matrix.system }}-verilator-${{ matrix.verilator }} - name: Compile Verilator ${{ matrix.verilator }} if: steps.cache-verilator.outputs.cache-hit != 'true' run: | wget https://github.com/verilator/verilator/archive/refs/tags/v${{ matrix.verilator }}.tar.gz tar xvf v${{ matrix.verilator }}.tar.gz cd verilator-${{ matrix.verilator }} autoconf ./configure make - name: Install Verilator ${{ matrix.verilator }} run: | cd verilator-${{ matrix.verilator }} sudo make install verilator --version
ここまでをリポジトリにコミット、pushしたら自動的にGitHub Actionsが動き始める。その結果は自動的にGitHub Actionsのページに記録される。便利だなあ。
これに、さらに各コンフィグレーションでのVerilatorビルドのコマンドをくっつけるとビルドしてくれる?試してみる。