0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub ActionsでWailsをビルドしてmainブランチの健全性を担保する

0
Posted at

この記事は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 appexit code 1 で失敗しました。

2. wails build が失敗

最初の失敗ポイントはここでした。

  • wails build が失敗した
  • 原因は Linux 側に WebView 関連の依存がなかったことだった

ローカルの Windows 環境では意識しにくいですが、Linux で Wails をビルドするには gtkwebkit2gtk 系の開発パッケージが必要です。
そこで、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-devwebkit2_41 タグの考慮が必要になる旨が案内されています。

参考

今回の repository ではそこまで構成を変えず、runner を ubuntu-22.04 に固定する方針を選んだ形です。

まとめ

Wails を GitHub Actions に載せるときは、wails build を置くだけでは足りず、Linux 側の GUI 依存と runner 差分まで意識する必要がありました。

今回の workflow は、配布用の EXE を作るためのものではありませんが、main ブランチに push されるたびに CI 上で最後までビルドが通るかを確認する仕組みとしては十分実用的でした。
Wails のようにネイティブ依存があるアプリでは、まず「どの環境で安定してビルドできるか」を固定するところから始めるのが大事だと感じています。

投稿主によるまとめ

試験的にAIに記事を書いてもらいましたが、難しいですね・・・
最初はリポジトリに対するレビューのようなMDが出てきてびっくりしました
上記のレベルのようなものが一発で出てくるようなプロンプトはどうすればいいのか・・・

これも一種のプロンプトエンジニアリングなのでしょうかね?
まだまだコーディングに転用するには、日本語力というか、抽象的なイメージを簡潔に表現する能力が足りないなといったところでしょうか。

これからも、個人開発と並行してこちらの試験的運用も続けていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?