57
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[エンジニア大学] やっすんAdvent Calendar 2020

Day 4

GitHub Actionsの超基本!特別な設定が不要なCIサービス

Last updated at Posted at 2020-11-10

本記事では

  • GitHub Actionsとは何か?
  • CircleCIとの違いは何か?
  • どうやって始めれば良いか?

を扱います。

動画で確認したい方はこちらをどうぞ!
【YouTube動画】10分で学ぶ GitHub Actionsの超基本!CircleCIとの比較から始め方まで
10分で学ぶ GitHub Actionsの超基本!CircleCIとの比較から始め方まで

GitHub Actionsとは何か?

GitHub ActionsはGitHubが公式で提供するCI/CDサービスです。
デフォルトで使えるため、webhookなどの登録は不要.github/workflows 以下にymlファイルを置くだけで動かすことができます。

テスト結果などは、GitHubリポジトリの各プロジェクトの上の方にある Actionsタブから確認できます。

スクリーンショット 2020-11-09 10.34.41.png

何もActionsを設定していない場合、以下のようにテンプレート画面が表示されます。
_2020-11-04_20.11.32.png

利用料について

基本無料です!
GitHubの無料ユーザーの場合は、月2,000 分 無料で使用できます1
上限を超えると使えなくなりますが、毎月リセットされます。追加で課金して使うこともできます。
いつの間にか無料枠を超えていて、差額を請求されるということはないので安心して使えます。
スクリーンショット 2020-11-09 10.42.15.png

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個しかないですが...)。
_2020-11-04_20.06.03.png

サイドバーのワークフロー名をクリックすると、jobごとにのページに遷移し、テスト結果を確認できます。
Hello Worldと出ていますね。
_2020-11-04_20.05.32.png

設定ファイルの詳細

それでは、設定ファイルを細かくみていきます。

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ページにある通り、パブリックリポジトリでは制限なく使えます。

スクリーンショット 2020-11-11 16.04.15.png

スクリーンショット 2020-11-11 16.29.39.png

57
61
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
61

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?