本記事では
- GitHub Actionsとは何か?
- CircleCIとの違いは何か?
- どうやって始めれば良いか?
を扱います。
動画で確認したい方はこちらをどうぞ!
【YouTube動画】10分で学ぶ GitHub Actionsの超基本!CircleCIとの比較から始め方まで
GitHub Actionsとは何か?
GitHub ActionsはGitHubが公式で提供するCI/CDサービスです。
デフォルトで使えるため、webhookなどの登録は不要で .github/workflows
以下にymlファイルを置くだけで動かすことができます。
テスト結果などは、GitHubリポジトリの各プロジェクトの上の方にある Actionsタブから確認できます。
何もActionsを設定していない場合、以下のようにテンプレート画面が表示されます。
利用料について
基本無料です!
GitHubの無料ユーザーの場合は、月2,000 分 無料で使用できます1。
上限を超えると使えなくなりますが、毎月リセットされます。追加で課金して使うこともできます。
いつの間にか無料枠を超えていて、差額を請求されるということはないので安心して使えます。
CircleCIとの違いは何か?
CircleCIでは、1つのファイルに複数のワークフローを設定できました。
GitHub Actionsでは1ファイル 1ワークフローになります。
またGitHub Actionsでは、ファイルやディレクトリを指定して、差分が生じた時にテストを実行することができます。
設定ファイルの書き方
Rubyをセットアップして、Hello Worldを表示するファイルは次のようになります。
このファイルをリポジトリに置くと、テストが実行されます。
# .github/workflows/ruby.yml
name: Ruby
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
with:
ruby-version: 2.6
- name: Hello World
run: echo Hello World
テスト結果を確認するために、Actionsタブを開きます。
ワークフローごとにテストが実行されています (今回ワークフローは1個しかないですが...)。
サイドバーのワークフロー名をクリックすると、jobごとにのページに遷移し、テスト結果を確認できます。
Hello Worldと出ていますね。
設定ファイルの詳細
それでは、設定ファイルを細かくみていきます。
nameはワークフローの名前を設定するのに使います。
ファイルの名前と一致する必要はないです。
name: <ワークフロー名>
onでテストを実行するタイミングを指定できます。
下の場合はpushした場合とPRをopenしたりしたときに実行します。
その他の実行タイミングについては、以下で確認できます。
ワークフローをトリガーするイベント Webhookイベント
on:
push: ...
pull_request: ...
ブランチはbranchesで指定します。
指定方法はいくつかあります。
branches: [main, dev, feature]
branches:
- main
- dev
- feature
job名はjobs以下に書いたものになります。
jobs:
<ジョブ名>:
runs-onでjobを実行する仮想環境を指定できます。
OSとして、Windows, Mac, Ubuntuを選ぶことができます。
runs-on: <仮想環境>
steps以下で仮想環境内で実行するコマンドを指定できます。
steps:
<実行したいコマンド>
actions/checkout@v2でリポジトリのコードを仮想環境内に移すことができます。
@以下でバージョンやコミット番号などを指定します。
- name: checkout
uses: actions/checkout@v2 # 使用するアクションを指定 今はv2が最新
Rubyのセットアップはruby/setup-rubyリポジトリを使用します。
withで環境変数を設定できます。
- name: Set up Ruby
uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
with:
ruby-version: 2.6
最後はechoコマンド実行しています。
- name: Hello World
run: echo Hello World
まとめ
GitHub Actionsは日本語ページも存在するので、気になった方はぜひ確認してみてください!!
https://docs.github.com/ja/free-pro-team@latest/actions
actionsの例は以下に主要なものがあるそうです。
https://github.com/marketplace?type=actions
補足
仮想環境として、macOSやWindowsも選択できます。Linuxでは月2,000 分無料ですが、macOSでは月200 分, windowsでは月1,000 分が無料枠の上限になります。また、GitHubのpricingページにある通り、パブリックリポジトリでは制限なく使えます。