この記事はAI(Codex)による執筆をベースにしています。
GitHubリポジトリを解析させた上で、
構成・ポイントを指示し、記事を生成しています。
内容の最終確認・調整は投稿主が行っています。
試験的な取り組みのため、表現や粒度に粗さがある可能性があります。
概要
Wails アプリで、main ブランチへの push を起点に GitHub Actions で自動ビルドするようにしました。
今回の目的は配布用の EXE を作ることではなく、main ブランチが少なくとも CI 上では最後までビルドできる状態かを継続確認することです。
ローカルでは Windows で開発できていても、GitHub Actions は Linux runner で動きます。
そのため、Wails のビルドに必要なパッケージ差分に引っかかりました。
その備忘録になります。
この記事では、最終的に動いた workflow を先に載せたうえで、必要なポイントと詰まりどころをまとめます。
完成したworkflow
最終的に成功した ci.yml は次の内容です。
name: CI
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install frontend deps
run: npm install
working-directory: ./frontend
- name: Build frontend
run: npm run build
working-directory: ./frontend
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgtk-3-dev \
libwebkit2gtk-4.0-dev \
libglib2.0-dev
- name: Install Wails
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
- name: Build Wails app
run: wails build
この workflow を .github/workflows/ci.yml として置いておけば、main への push ごとに Wails アプリのビルドを自動で確認できます。
詰まったポイント
1. 最小構成でやってみた
最初は、かなり素直な構成でした。
name: CI
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install frontend deps
run: npm install
working-directory: ./frontend
- name: Build frontend
run: npm run build
working-directory: ./frontend
- name: Install Wails
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
- name: Build Wails app
run: wails build
この形にしておくと、frontend のビルドと wails build を分けて見られるので、どこで失敗したかを切り分けやすくなります。
実際、この時点では frontend 側は通っていて、最後の Build Wails app が exit code 1 で失敗しました。
2. wails build が失敗
最初の失敗ポイントはここでした。
-
wails buildが失敗した - 原因は Linux 側に WebView 関連の依存がなかったことだった
ローカルの Windows 環境では意識しにくいですが、Linux で Wails をビルドするには gtk や webkit2gtk 系の開発パッケージが必要です。
そこで、workflow に次の step を追加しました。
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgtk-3-dev \
libwebkit2gtk-4.0-dev \
libglib2.0-dev
この修正でやりたかったことは単純で、GitHub Actions の Linux runner にも、Wails が必要とするライブラリを揃えることです。
3. apt-get install が失敗
依存パッケージを追加しただけでは終わりませんでした。
次は Install Linux dependencies 自体が exit code 100 で失敗しました。
ここでの詰まりポイントは次の通りです。
-
ubuntu-latestでは、入れたかったlibwebkit2gtk-4.0-devがそのまま使えなかった - 「依存を入れる方針」は正しかったが、
libwebkit2gtk-4.0-devがlatest では使えなかった
そのため、YAML の runs-on を次のように修正しました。
jobs:
build:
runs-on: ubuntu-22.04
この変更によって、libwebkit2gtk-4.0-dev などのパッケージを安定して導入できるようになり、workflow 全体が通るようになりました。
Wails の公式ドキュメントでも、Ubuntu 24.04 系では libwebkit2gtk-4.1-dev や webkit2_41 タグの考慮が必要になる旨が案内されています。
今回の repository ではそこまで構成を変えず、runner を ubuntu-22.04 に固定する方針を選んだ形です。
まとめ
Wails を GitHub Actions に載せるときは、wails build を置くだけでは足りず、Linux 側の GUI 依存と runner 差分まで意識する必要がありました。
今回の workflow は、配布用の EXE を作るためのものではありませんが、main ブランチに push されるたびに CI 上で最後までビルドが通るかを確認する仕組みとしては十分実用的でした。
Wails のようにネイティブ依存があるアプリでは、まず「どの環境で安定してビルドできるか」を固定するところから始めるのが大事だと感じています。
投稿主によるまとめ
試験的にAIに記事を書いてもらいましたが、難しいですね・・・
最初はリポジトリに対するレビューのようなMDが出てきてびっくりしました
上記のレベルのようなものが一発で出てくるようなプロンプトはどうすればいいのか・・・
これも一種のプロンプトエンジニアリングなのでしょうかね?
まだまだコーディングに転用するには、日本語力というか、抽象的なイメージを簡潔に表現する能力が足りないなといったところでしょうか。
これからも、個人開発と並行してこちらの試験的運用も続けていこうと思います。