JavaScriptを有効にしてください

GitHub Actionsに入門する

 ·   5 min read

はじめに

GitHub Actionsでトリガーイベントを設定し、簡単なLinuコマンドを実行する方法をまとめた。

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!と表示するものである。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
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で実行される)。

1
2
3
$ git add .github/workflows/sample.yml
$ git commit -m "Add GitHub Actions sample."
$ git push

GitHub Actionsの実行結果

YAMLファイルをpushした後にGitHubのActionsタブを開くと、sample.ymlに定義したワークフローの実行に成功したことが表示されている(画像の右側)。

GitHubのActionsタブ

この実行結果の詳細を確認すると、echo "Hello World!"を実行できたことが確認できる。

GitHub Actionsの実行結果

実行結果の確認

以下では、作成したYAMLファイルについて解説する。

ワークフローの名前

ワークフローの名前をnameで指定できる(省略可)。

1
name: Action Sample

トリガーイベント

ワークフローを実行するための条件をon以下に指定する。

1
2
3
4
5
on:
  push:
    branches: 
      - master
  workflow_dispatch:

複数の条件を指定可能であり、ここでは次の2条件を指定している。

  • masterブランチへのpush
  • GitHub上で手動実行 (workflow_dispatch)

なお、workflow_dispatchを指定することにより、GitHub上に"Run workflow"ボタンが表示され、これを押すとワークフローが実行される。

GitHub Actionsの手動実行

トリガーイベントとして、プルリクエストや特定のタグ、cronなども指定可能である。

ジョブ

実行する処理内容や実行環境をjobs以降に記述する。

1
2
3
4
5
6
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はタスクの名前(省略可)である。

タスクが複数ある場合、以下のように続ける。

1
2
3
4
5
    steps:
      - name: execute echo command
        run: echo "Hello World!"
     - name: execute echo command 2
        run: echo "Hello GitHub!"

もしくは、以下のようにしても良い(runの後の|を忘れないように)。

1
2
3
4
5
    steps:
      - name: execute echo commands
        run: |
          echo "Hello World!"
          echo "Hello GitHub!"          

また、別途定義された処理をusesを使って実行できる。
以下はGitのcheckoutコマンドを実行する例である。

1
2
    steps:
      - uses: actions/[email protected]

これは、actions/[email protected]は以下のリポジトリのVersion 2(タグで指定されたバージョンのこと)を参照することを意味する。
actions_checkout - GitHub

まとめ

GitHub Actionsの簡単な例として、設定ファイルを作成し、Linuxのechoコマンドの実行を確認した。また、設定ファイルについて解説した。
今後、GitHub ActionsでPythonスクリプトを実行する方法について記事にする予定。

参考

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。Twitterで新着記事を配信中です