[Godot Engine]Github Actionsで自動ビルド&リリース

4 min read読了の目安(約3700字

Godot EngineユーザーはGithubで非常にアクティブな印象で、Github Marketplaceでは有志の方々がGithub Actionsで自動ビルドからリリースまでを行ってくれるActionを公開しています。

Zenn的にはアクションを作るところから共有したほうがいいのかなーとも思うんですが、僕はそんな技術力はないので人様のアクションに頼ったものを紹介します。

Marketplaceでは2つ公開されていますが、個人的に使ったのは Godot Export というアクションです。

使い方

まずはプロジェクトを管理しているリポジトリにアクションを作成します。

set up workflow yourselfで自分でアクションを作ります。(この後はコピペになりますが)

アクションを作成

ドキュメントに沿って以下をコピペして作成しました。

# Whenever tag in the form of `v1.0.0` is pushed then run the job

on: 
  push:
    tags:
      - 'v*'

jobs:
  # job id, can be anything
  export_game:
    # Always use ubuntu-latest for this action
    runs-on: ubuntu-latest
    # Job name, can be anything
    name: Export Game Job
    steps:
      # Always include the checkout step so that 
      # your project is available for Godot to export
    - name: checkout
      uses: actions/checkout@v2.3.1
      # Ensure that you get the entire project history
      with:
        fetch-depth: 0
      # separate step to extract the version from the tag name
    - name: get tag from version
      id: tag_version
      run: |
        echo ::set-output name=TAG_VERSION::${GITHUB_REF#refs/tags/v}
    - name: export game
      # Use latest version (see releases for all versions)
      uses: firebelley/godot-export@v2.5.0
      with:
        # Defining all the required inputs
        # I used the mono version of Godot in this example
        godot_executable_download_url: https://downloads.tuxfamily.org/godotengine/3.2.2/mono/Godot_v3.2.2-stable_mono_linux_headless_64.zip
        godot_export_templates_download_url: https://downloads.tuxfamily.org/godotengine/3.2.2/mono/Godot_v3.2.2-stable_mono_export_templates.tpz
        relative_project_path: ./
        create_release: true
        base_version:  ${{ steps.tag_version.outputs.TAG_VERSION}} 
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

オプションとして2種類用意されていて、特定ブランチにプッシュしたら自動的にビルド&リリース特定のタグが付いたコミットを自動的にビルド&リリース のいずれかになります。
今回使用したのは後者です。

僕の場合ですが、個人で開発するとあまりブランチ分けしないので、タグ管理の方が楽だなーと感じてます。

godot_executable_download_urlgodot_export_templates_download_url3.2.2になっていますが、公式のLinux版ダウンロードページから最新のURLを取得したほうが良いと思います。

エクスポート設定

Godot Engineのエディタ内でエクスポート設定をしておく必要があります。

上図の例では、Windowsに加えてMacOSX用のエクスポート設定もしてます。

エクスポート設定はexport_presets.cfgというファイルに保存され、機密情報などが含まれる場合があります。
パブリックリポジトリにプッシュする場合は注意してください。

Godot Exportはexport_presets.cfgファイルがないとエラーになりますので、公開出来ない情報を含んでいる場合には最新の注意が必要です。

Github Desktopでタグ付けする

コマンドラインを使われている方は、タグ付けするのは簡単だと思います。

$ git tag <tag-name>

僕はGithub Desktopを使用しているので、タグ付け方法も共有します。

対象のコミットを右クリックしてCreate Tag...をクリックしてタグの名前を入力します。
アクションはタグの名前を判断してアクションのトリガーとしているのでv0.0.1などのvを接頭辞としたバージョン名をタグにします。

このタグの付いたコミットをプッシュしたら、自動的にアクションが開始され、完了後ビルドされたアプリケーションがリリースページに登録されます。

おわり

思ったより簡単にできました。
静的サイトジェネレーターをGithub Actionsでデプロイすることはありましたが、Godot Exportの方が楽ですね。
一度設定してしまえば、後はタグ付けしたコミットをプッシュすれば自動でアプリケーションを作ってくれるので、開発してビルドして… というサイクルを、開発だけに一本化できるというのはすごく魅力的です。