GitHub Actionsを試してみた
GitHub Actionsとは
まずGitHub Actionsとは、GitHubが提供するワークフローを自動化できるツールです。パブリックリポジトリでは無料で使用でき、Freeプランのプライベートリポジトリでも2000分/月(2020/04/26時点)無料で利用することができます。また、有料オプションで、Linux、Windows、macOSのOSを使用することができます。GitHub Actionsでは、CI/CDだけでなく、Issueが作成されたタイミングやマイルストーンがオープンになったタイミングなどのイベントをhookして、なにかしらの処理を行うことができます。まだまだ量は多くないのですが、GitHub Marketplaceで、すでに実装されたワークフローが公開されており、誰でも利用できることができます。
簡単な使い方
ワークフローの定義は、YAMLを用います。詳しい使い方は、公式ドキュメントを参照してください。ここでは、簡単な使い方を紹介します。
runs-on
ジョブを実行するホストマシンを指定することができます。ここで、Linux、Windows、macOSも指定できます。例えば、ubuntuの最新バージョンを指定する場合は、下記のように指定します。
runs-on: ubuntu-lateston
フックするイベントを指定します。CIとして使用する例として、PRの作成、更新のイベントがフックになればよいので、
on: pull_request
を指定します。また、ブランチを指定することもでき、CDとして使用するような例として、
on: push
branches:
- release
のようにreleaseブランチに対してのみイベントをフックすることができます。
container
ジョブを実行するコンテナを指定します。ここでは、Docker Hubイメージ名もしくは、パブリックDockerレジストリ名も指定することができます。containerの指定がない場合は、runs-onで指定したホストマシンで直接実行されます。
container: ruby:2.7.0orcontainer:
image: ruby:2.7.0
env:
RAILS_ENV: testservices
ここでは、サービスコンテナというジョブを実行する以外のコンテナを指定します。例えば、MySQLやPostgreSQLなどのDBやRedisなどのキャッシュを使用する場合にサービスコンテナを作成します。サービスコンテナのホスト名は、自動的にラベル名が使われます。下記の例では、dbがホスト名になります。
services:
db:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes