LoginSignup
5
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-12-14

はじめに

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開発をライフを過ごしてください。

5
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
5
0