はじめに
CI/CDは、最近の開発では標準的に取り入れられているかと思います。
何かしらの仕組みを使って、機械的にチェックすることで、うっかりミスなどが簡単に防げるだけでなく、複合要素のバグなども、防げる可能性が高くなります。
Jenkins、CircleCI, Shippable, Argo CDなど、様々なツールやサービスがあり、導入は比較的簡単に行えるようになってきました。
そんななか、GithubからもGithub Actionsという仕組みが公開され、パブリックリポジトリでは無料で利用できるなど、気軽に導入することが可能になりました。
Factorioという工場を建設して自動化を行うゲームのMod開発でも、Modの動作確認やリリース作業が必要です。
自動化が大好きなら、FactorioのMod開発も自動化したいと考えるのは当然ですよね。
そんななか、 Roang-zero1/factorio-mod-package というGithub Actionsを見つけたので、作っていたCoastal Erosion(海岸浸食)というFactorioのModに導入しました。
これにより、Gitでリリースしたいバージョン番号のタグを付けてリポジトリにpushすると、自動的にGitHub Releaseにリリースが作られ、Modポータルにアップするためのzipファイルが用意されるようになりました。
導入することは簡単にできたので、導入のポイントを紹介します。
ポイント
以下のリポジトリでGithub Actionsを有効にしたコードを公開しています。
Tei1988/factorio-coastal-erosion
ただ、Coastal ErosionはTypeScriptからLuaにする処理が含まれているので、より簡単な導入例も以下で公開してもらいました。
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開発をライフを過ごしてください。