GitHub Actionsを試してみた

GitHub Actionsとは

Koya Fukuda
3 min readApr 26, 2020

まず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: test
services

ここでは、サービスコンテナというジョブを実行する以外のコンテナを指定します。例えば、MySQLやPostgreSQLなどのDBやRedisなどのキャッシュを使用する場合にサービスコンテナを作成します。サービスコンテナのホスト名は、自動的にラベル名が使われます。下記の例では、dbがホスト名になります。

services:
db:
image: mysql:5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes

最後に今回作ったもの

--

--