GitHub Actionsの使い方を理解するために実際にGitHub Actionsを使ってみましょう。

実際に手を動かす前に少しだけGitHub Actionsについて説明しておきます。
GitHub ActionsはGitHubのレポジトリでプロジェクトのビルドやテスト、デプロイなどのワークフローを自動で実行するためのサービスで、branchにpushやissueの発行、pull requestなど様々なイベントをトリガーにすることができます。

GitHub Actionsの特徴としてJavaのプロジェクトをビルドしたり、AWSやGCP、Azureなどの外部サービスにデプロイ、slackにメッセージを飛ばしたりするアクションを一から書かなくても用意してくれています。

今回はGitHub Actionsで"Hello World"を出力するジョブを作成し、masterにpushイベントをトリガーとしてジョブが実行されるワークフローを作成します。
事前にGitHubのアカウントを作成しておいてください。




はじめに

レポジトリ配下にある.git/workflows/にYAMLファイルを作成するだけでGitHub Actionsを使用することができます。
今回はCIに馴染みがない人向けにオンライン上でYAMLファイルを作成してみます。

YAMLファイルの作成とワークフローの実行

まずはGitHub Accountにログインして新しくレポジトリを作成します。
GitHubレポジトリ作成画面

作成したレポジトリに行き、Actionsを選択。
GitHubレポジトリ画面

色々ワークフローが表示されるので、一番上のSimple workflowを選択。
GitHub Actionsのワークフロー選択画面

レポジトリの.github/workflows/配下にYAMLファイルが作成されます。

デフォルトのYAMLファイルだと初心者にとっては難しく感じると思うので、一旦コメントと今回必要ではない部分を消して、もう少しシンプルにしてみます。

github_actions/.github/workflows/blank.yml
name: CI

on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest  

    steps:
    - uses: actions/checkout@v2  
    - name: Run a one-line script
      run: echo Hello, world!  

on部分がジョブを実行するトリガー、jobs部分がトリガーで実行されるジョブが記述されています。
各項目の内容をまとめておきます。

  • name: ワークフローの名前
  • on
    • push: masterブランチにpushした時をトリガーとする
  • jobs
    • build: ジョブをubuntuの最新版で実行する
    • steps:
      • uses: リポジトリをチェックアウトする
      • name: ジョブの名前
      • run: echoコマンドで「Hello, world!」と出力する

YAMLファイルができたら 画面右上にあるstart commitをクリックして、ジョブを実行してみましょう。

ワークフローが実行されたかどうかはレポジトリのActionsで確認することができます。
左画面のAll Workflowsの下に先ほど実行したワークフローがあるので、クリックしてbuildを選択。
全てのジョブに緑のチェックマークが入っていれば成功です。
GitHub Actionsのワークフロー選択画面

Run a one-line scriptを開くとHello, world!と出力されているのが確認できます。

では実際にローカルレポジトリからリモートレポジトリにpushした時にHello, world!と出力されるのか確認してみましょう。

ローカルレポジトリからpush

作成したワークフローがpushイベントで実行されるのか確認してみます。

先ほど作成したレポジトリ(~/github_actions)をローカル環境にクローンします。

$ git clone https://github.com/***/github_actions.git

こんな感じのディレクトリ構成になっていると思います。

github_actions
├── .github
│   └── workflows
│       └── blank.yml
└── README.md

先ほど実行したワークフロー名と区別するためにblank.ymlのワークフロー名とechoで出力させるものを変更しておきます。 ここではワークフロー名と出力する言葉をGood eveningにしておきます。

/.github/workflows/blank.yml
name: good evening 
~ 省略 ~
steps: - uses: actions/checkout@v2 - name: Run a one-line script run: echo good evening

それではpushしてみましょう。
$ git add .
$ git commit -m "test"
$ git push origin master

GitHubのレポジトリのActionsにいき、good eveningが表示されており、全てに緑色のチェックマークがついていれば成功です。

GitHub Actionsのワークフロー実行確認画面

Run a one-line scriptを開いてgood eveningが出力されているか確認してみてください。

参考サイト

GitHub Actionsのワークフロー構文
CI/CD using GitHub actions to deploy to Azure

まとめ

今回GitHub Actionsを使って特定のイベントが発生した時にワークフローを自動で実行してみました。

今回は初めてだったので、オンライン上でyamlファイルを作って実行しましたが、 レポジトリに.git/workflows/の下にyamlファイルを作成するだけでGitHub Actionsを使うことができます。