はじめに #
GitHub Actionsでトリガーイベントを設定し、簡単なLinuxコマンドを実行する方法をまとめた。
GitHubには、処理を自動実行するGitHub Actionsという機能がある。 処理を実行するきっかけ(トリガーイベント)は、pushやpull requestなどのリポジトリ操作や、cronによる定期実行を指定可能である。また、手動実行も可能である。 GitHub Actionsを使用すると、テストやビルド作業を自動化することができる。
この記事ではGitHub Actionsの入門として、Linuxのechoコマンド(数値や文字を表示するコマンド)を実行する方法を解説する。 主な手順は以下の通り。
- GitHub Actions設定ファイルの作成
- 実行結果の確認
- GitHub Actions設定ファイルの解説
また、GitHubのアカウント(Freeプランで可)を持っていることを前提とする。
なお、GitHub Actionsは以下の範囲まで無料で利用できる(2021/6/19現在)。
- パブリックリポジトリ:無料
- プライベートリポジトリ:
- Freeプラン:2000分/月まで無料
- Proプラン:3000分/月まで無料
最新の情報や詳細は以下のページを参照。 Actions GitHub
GitHub Actions設定ファイルの作成 #
GitHub Actionsを使用するためには、YAML形式の設定ファイルをリポジトリ内に作成する必要がある。 なお、YAMLは構造化されたデータを表現するためのテキスト形式のフォーマットである。
ここでは、GitHubでリポジトリを新規作成する(プライベート、パブリックのどちらでも可)。
このリポジトリに.github/workflows/
フォルダを作成する。
このフォルダの下に、以下のsample.yml
を作成する(異なるファイル名でもよい。また、拡張子は.yml
, .yaml
のどちらでも可)。
このファイルは、Linux環境でechoコマンドを実行して、Hello World!
と表示するものである。
name: Action Sample
on:
push:
branches:
- master
workflow_dispatch:
jobs:
print-hello-world:
runs-on: ubuntu-latest
steps:
- name: execute echo command
run: echo "Hello World!"
作成したファイルをGitHubにpushする(上記のファイルではpushがトリガーイベントになっているため、このpushで実行される)。
$ git add .github/workflows/sample.yml
$ git commit -m "Add GitHub Actions sample."
$ git push
GitHub Actionsの実行結果 #
YAMLファイルをpushした後にGitHubのActionsタブを開くと、sample.yml
に定義したワークフローの実行に成功したことが表示されている(画像の右側)。
この実行結果の詳細を確認すると、echo "Hello World!"
を実行できたことが確認できる。
実行結果の確認 #
以下では、作成したYAMLファイルについて解説する。
ワークフローの名前 #
ワークフローの名前をname
で指定できる(省略可)。
name: Action Sample
トリガーイベント #
ワークフローを実行するための条件をon
以下に指定する。
on:
push:
branches:
- master
workflow_dispatch:
複数の条件を指定可能であり、ここでは次の2条件を指定している。
- masterブランチへのpush
- GitHub上で手動実行 (
workflow_dispatch
)
なお、workflow_dispatch
を指定することにより、GitHub上に"Run workflow"ボタンが表示され、これを押すとワークフローが実行される。
トリガーイベントとして、プルリクエストや特定のタグ、cronなども指定可能である。
ジョブ #
実行する処理内容や実行環境をjobs
以降に記述する。
jobs:
print-hello-world:
runs-on: ubuntu-latest
steps:
- name: execute echo command
run: echo "Hello World!"
print-hello-world
はジョブ名である。ジョブ名には英数字と-
, _
のみ使用可(スペースは使用不可)。
なお、1つのYAMLファイルに複数のジョブを指定可能である。原則として各ジョブは並列に実行されるが、依存関係(他のジョブの終了を待つ)を設定することも可能である。
runs-on
はジョブが実行されるマシンの種類である。
2021/6/19現在、ubuntu-latest
はUbuntu 20.04となる。他にWindows ServerやmacOSが利用可能である。
詳細は以下ページのjobs.<job_id>.runs-on
の項を参照。
GitHub Actionsのワークフロー構文 - GitHub Docs
steps
以降に実行する処理(タスク)を記述する。name
はタスクの名前(省略可)である。
タスクが複数ある場合、以下のように続ける。
steps:
- name: execute echo command
run: echo "Hello World!"
- name: execute echo command 2
run: echo "Hello GitHub!"
もしくは、以下のようにしても良い(run
の後の|
を忘れないように)。
steps:
- name: execute echo commands
run: |
echo "Hello World!"
echo "Hello GitHub!"
また、別途定義された処理をuses
を使って実行できる。
以下はGitのcheckoutコマンドを実行する例である。
steps:
- uses: actions/checkout@v2
これは、actions/checkout@v2
は以下のリポジトリのVersion 2(タグで指定されたバージョンのこと)を参照することを意味する。
actions_checkout - GitHub
まとめ #
GitHub Actionsの簡単な例として、設定ファイルを作成し、Linuxのechoコマンドの実行を確認した。また、設定ファイルについて解説した。 GitHub ActionsでPythonスクリプトを実行する方法については以下の記事を参照。 GitHub ActionsでPythonスクリプトを実行する – Helve Tech Blog