0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

Github ActionsでFactorio ModをGithub Releasesに用意する

はじめに

CI/CDは、最近の開発では標準的に取り入れられているかと思います。

何かしらの仕組みを使って、機械的にチェックすることで、うっかりミスなどが簡単に防げるだけでなく、複合要素のバグなども、防げる可能性が高くなります。

Jenkins、CircleCI, Shippable, Argo CDなど、様々なツールやサービスがあり、導入は比較的簡単に行えるようになってきました。
そんななか、GithubからもGithub Actionsという仕組みが公開され、パブリックリポジトリでは無料で利用できるなど、気軽に導入することが可能になりました。

Factorioという工場を建設して自動化を行うゲームのMod開発でも、Modの動作確認やリリース作業が必要です。
自動化が大好きなら、FactorioのMod開発も自動化したいと考えるのは当然ですよね。

そんななか、 :octocat: Roang-zero1/factorio-mod-package というGithub Actionsを見つけたので、作っていたCoastal Erosion(海岸浸食)というFactorioのModに導入しました。

これにより、Gitでリリースしたいバージョン番号のタグを付けてリポジトリにpushすると、自動的にGitHub Releaseにリリースが作られ、Modポータルにアップするためのzipファイルが用意されるようになりました。

導入することは簡単にできたので、導入のポイントを紹介します。

ポイント

以下のリポジトリでGithub Actionsを有効にしたコードを公開しています。

:octocat: Tei1988/factorio-coastal-erosion

ただ、Coastal ErosionはTypeScriptからLuaにする処理が含まれているので、より簡単な導入例も以下で公開してもらいました。

:octocat: iida-hayato/FoodSpaceExplorationModmash

詳しくはリポジトリの中の.github/workflows/build.yamlや、.github/workflows/releas.yamlを見てもらうとして、自動的にzipファイルをGitHub Releasesに用意するために抑えるべきポイントは2つあります。

Tei1988/factorio-mod-packageと、既存のGithub Actionsを使うことです。

Tei1988/factorio-mod-package

1つ目のポイントです。
Tei1988/factorio-mod-packageを使います。
元のGithub Actionsには、作られたzipファイルに不要な物が含まれていたので、入らないように修正を加えたものを公開しています。
PRがマージされるまでは自分のリポジトリを参照するようにしています。

      - name: Package
        id: packaging
        uses: Tei1988/factorio-mod-package@master

もし、info.jsonがリポジトリのrootディレクトリにない場合は、以下も追加します。

        with:
          mod_base_dir: <info.jsonのあるフォルダのパス>

既存のGithub Actionsを使う

二つ目のポイントです。
既存のGithub Actionsを使います。
Github ReleasesにファイルをアップロードするためのGithub ActionがGithubから公式に提供されています。

        uses: actions/upload-release-asset@v1.0.1

すべてを自分で一から作るのではなく、まずは既存のGithub Actionsを組み合わせるところから始めると良いと思います。

おわりに

いかがだったでしょうか。
以上のポイントで開発後のビルドする作業を自動化することができました。
みなさんも快適なMod開発をライフを過ごしてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?