🍤

Ebitengineを使ったコードをGitHub Actionsでテストする際の依存パッケージ

2023/11/22に公開

Ebitengine、みなさま使っていますでしょうか?
今回は私がEbitengineを使う中で遭遇したCIにおけるテストの問題について解決策を書いていこうと思います。

さっそくですが、だいたいの人はubuntu-latestを用いて以下のような定義をすると思います。

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Go
        uses: actions/setup-go@v4
        with:
          go-version-file: "go.mod"
      - run: go test ./...

しかし、上記のように安易に go test ./... するだけでは以下のようなエラーが出てしまいます。

Run go test ./...
# github.com/hajimehoshi/ebiten/v2/internal/cglfw
In file included from ../../../go/pkg/mod/github.com/hajimehoshi/ebiten/v2@v2.6.2/internal/cglfw/native_linbsd.go:14:
./glfw3native.h:104:12: fatal error: X11/extensions/Xrandr.h: No such file or directory
  104 |   #include <X11/extensions/Xrandr.h>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
FAIL

解決策はいたって単純で、以下の記述をyamlに追加すれば良いです。

- name: Install dependencies
  run: |
    sudo apt-get update
    sudo apt-get install libasound2-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev libxxf86vm-dev

これはEbitengineのリポジトリでも以下のように同様の操作を行っているので、過不足は無いと思われます。
https://github.com/hajimehoshi/ebiten/blob/main/.github/workflows/test.yml#L39-L43

ちなみに今回はテスト時の話でしたが、ビルドをGitHub Actionsで行いたいときなどにも同様の対応が必要だと思われます。

何はともあれ、躓いたらEbitengine自体がどうなってるか確認すると吉ですね。

Discussion