自動構築し、かゆみのゲームを発行する.io
10469 ワード
私は本当にソフトウェア開発の自動化が好きです.そして私の個人的なプロジェクトはGitHub , 完全に採用したGitHub Actions 私の継続的な統合プラットフォームとして.コードをプッシュすると、コードをリントし、そのスタイルをチェックし、自動テストを実行します.彼らはすべて合格すると、それは私の仕事の質に自信を与える.
私の今後のゲームのために、私は再び予測可能で一貫した品質でゲームの再現性のあるビルドを作成するためにGithubアクションを使用したい.目標は、プロセスを完全に自動化することによって、ヒューマンエラーを避けることでしたitch.io .
新しいアクションを作成する
私は、このワークフローのために新しい行動をつくることを勧めます.あなたが複数のオペレーティングシステムのためにあなたのゲームを構築したいならば、特にファイルはそうであるようにかなり長くなります.先に行くと新しいYAMLファイルを作成する
.github/workflows/itch.yml
, 次のコンテンツを追加します.---
name: itch.io
env:
itch_project: jdno/auto-traffic-control
変更するitch_project
ユーザ名にマッチする文字列itch.io プロジェクトの名前.あなたが好きなら、アクションの名前を変更することもできます.リリースする
私のgithubアクションのために長年にわたって開発したセットアップは1つの重要な機能を持っています:それは異なったワークフローのために異なった動作をします.
Githubにコードをプッシュすると、コードの品質をチェックするアクションが開始されます.これらのチェックは、コードをマージする前に
main
枝.彼らの目的は一貫したコード品質を保証することで、リリースを作成することではありません.新しいリリースを作成したいときは、実際にrelease feature Githubについて私は変更されたものの短い要約を書くのが好きで、リリースノートでchangelogを含みます.それはリリースをより多くの“公式”感じ、実際の達成のようになります.私がリリースを作成すると、別のアクションは、ゲームを構築するキックオフされます
release
次に、ゲームをプッシュしますitch.io .次のスニペットは、私のリリースワークフローをトリガーするために使用するものです.プリリリースまたはリリースがGiThubに公開されるたびに、それはアクションを実行します.
"on":
release:
types:
- prereleased
- released
また、ビルドすることができますし、ゲームを発行するたびにコードをデフォルトの枝には、以下のようなスニペットでマージされます.選択は最終的にあなたのものであり、あなたの開発ワークフローに意味をなすものに依存します."on":
push:
ビルドゲーム
ビルドステップはあなたのゲームによって異なります.手順は、使用するプログラミング言語やゲームエンジンに基づいて異なるようになります.しかし、高いレベルでは、次のようにします.
dist
フォルダ.これはプッシュされるフォルダですitch.io . 何が再びこのフォルダに入る必要があるゲームエンジンを使用しているに依存します.私はLinux、MacOS、およびWindows用の私のゲームのビルドを作成します.各々のオペレーティングシステムは少し異なる依存性を必要とするので、私は3つの異なる仕事に各々のオペレーティングシステムのために1つを構築することに決めました.以下はLinuxのビルド例です.ジョブは依存関係をインストールし、コードをチェックアウトし、錆ツールチェインを設定し、ゲームをビルドします.
jobs:
linux:
name: Publish Linux build
runs-on: ubuntu-latest
steps:
- name: Install system dependencies
run: |
sudo apt-get update && sudo apt-get install -y \
libx11-dev \
libasound2-dev \
libudev-dev
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Rust toolchain
uses: actions-rs/toolchain@v1
- name: Build release artifact
uses: actions-rs/cargo@v1
with:
command: build
args: --release
これらの手順の後、リリースアーティファクトはdist
私のゲームを使用する資産と一緒にフォルダー.理論上、私は今このフォルダから私のゲームを走らせることができます、そして、それは働きます.iTouchに発行します。io
最後のステップは、ゲームを公開することですitch.io . 我々は、iTchのを使用されますbutler , iTouchにゲームをアップロードしやすくするツール.これはゲームの新しいバージョンを公開するコマンドです.
butler push directory user/game:channel --userversion version
コマンドはdirectory
引数として、このディレクトリの内容をitch.io . これは私たちのdist
ディレクトリ.次の引数はプロジェクトで、我々はitch_project
変数の後に続く.Channels 重要な概念itch.io , そして、チャンネル名を自動的にプラットフォーム上でゲームをタグ付けするために使用することができます.例えば、
linux
チャンネルはLinuxの実行可能ファイルとしてゲームをタグ付けします.最後に、オプション
userversion
引数.目標は、githubとiTchで同じバージョン番号を使用することです.入出力私はgithubで作成したリリースからこれらの変数を取得しています.リリースが公開され、アクションが開始されると、Githubはリリースにアクションのcontext . これにより、例えばリリースのタイトルにアクセスすることが可能になります
github.event.release.name
(これは0.1.0
このリリースのために).すべてのコミットに対してアクションを実行したい場合(つまり、すべてのコミットに対して動作します).on: [push]
上記のように、ハードコードを使用するか、別の方法で動的にそれらを提供する必要があります. - name: Set version
run: echo "version=${{ github.event.release.name }}" >> $GITHUB_ENV
- name: Set beta channel
if: github.event.action == 'prereleased'
run: echo "itch_channel=linux-beta" >> $GITHUB_ENV
- name: Set release channel
if: github.event.action == 'released'
run: echo "itch_channel=linux-stable" >> $GITHUB_ENV
私は特にプリリリースをサポートする方法を見つけることを誇りに思っています.リリースがGithubのプレスリリースとしてタグ付けされると、ゲームはbeta
チャンネル.これは私が簡単にゲームの新しいバージョンをテストする前に、一般的に利用できるようになります.現在実行中の変数を設定しました
butler
, 我々は最初に我々のワークフローにツールを追加し、それを実行することができます.ビルドを押すitch.io 必要なAPIキーが必要ですfind here . - name: Set up butler
uses: jdno/setup-butler@v1
- name: Publish game to itch.io
run: |
butler push dist ${{ env.itch_project }}:${{ env.itch_channel }} --userversion ${{ env.version }}
env:
BUTLER_API_KEY: ${{ secrets.ITCHIO_API_KEY }}
あなたのゲームの新しいバージョンが利用可能になりましたitch.io .利益
これは確かにいくつかのかなり複雑な手順で高度なアクションです.プロジェクトに正しく動作するようにするには、いくつかの反復を必要とする場合があります.それは私にこの権利を得るために多くのビルドを取った.しかし、結果は素晴らしいし、努力の価値がある!
最も重要なのは、現在、再現性の高いビルドがあります.あなたのゲームをリリースする準備ができて、もはや暗い芸術ではない、それはあなたの机のどこかに指示をメモを見つける必要がありません.あなただけの手順を構築する必要がありますし、ゲームをプッシュを参照してくださいにアクションを見ることができます.
ビルドが自動化されるので、それは一貫した結果を生じることも保証されます.ビルド環境が常に清潔であるため、ローカル開発環境ではビルドやゲームを不可解な方法で壊すことはできません.
そして、あなたはゲームを構築するために必要なすべてがGithubにバックアップされていることを知っている.すべてのコードとすべての資産が安全に2番目の場所には、バージョンの履歴を格納されます.
Follow me
あなたが一般的に私のゲームやプログラミングゲームで面白いならば、必ず従うようにしてください.私は、道がどこに我々を連れて行くかについて、よくわかりません、しかし、私は旅行に非常に興奮しています!
私のブログを購読し、プロジェクトの進捗状況について毎週更新を受け取る.
jdno.dev
私もストリームのいくつかは、このゲームの開発のすべてではないので、そこに私に従ってください.
jdno_dev - Twitch
Reference
この問題について(自動構築し、かゆみのゲームを発行する.io), 我々は、より多くの情報をここで見つけました https://dev.to/jdno/automate-building-and-publishing-a-game-on-itchio-5c46テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol