メインコンテンツへスキップ

GitHub Actionsに入門する

·2212 文字·5 分
目次

はじめに
#

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に定義したワークフローの実行に成功したことが表示されている(画像の右側)。

GitHubのActionsタブ
GitHubのActionsタブ

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

GitHub Actionsの実行結果
GitHub Actionsの実行結果

実行結果の確認
#

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

ワークフローの名前
#

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

name: Action Sample

トリガーイベント
#

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

on:
  push:
    branches: 
      - master
  workflow_dispatch:

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

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

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

GitHub Actionsの手動実行
GitHub Actionsの手動実行

トリガーイベントとして、プルリクエストや特定のタグ、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

参考
#

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

Gitコマンドの個人的まとめ(ブランチ利用なし)
·3222 文字·7 分
個人的によく使用するGitのコマンドをまとめた(ブランチに関連するコマンドを除く)。
Condaの仮想環境をYAMLファイルに保存する
·2095 文字·5 分
Condaで構築した仮想環境をYAML形式のファイルに保存し、再構築する方法を解説する。
HugoのZzoテーマで記事の日付・著者の絵文字をSVGに変更する
·1953 文字·4 分
HugoのZzoテーマで記事の日付・著者に設定されている絵文字アイコンを、モダンなデザインのSVG画像に変更する方法を解説する。
HugoのZzoテーマでTwitter Card用の画像を設定する
·1621 文字·4 分
HugoのZzoテーマでTwitter Cardに表示する画像を設定する方法をまとめた
PythonでJSONを扱う
·1099 文字·3 分
Pythonの標準ライブラリjsonを使って、JSONデータを辞書型データとして扱う方法を解説する。
非線形最適化ソルバIPOPTのアウトプットの読み方
·2049 文字·5 分
主双対内点法を用いた非線形最適化ソルバIPOPTのアウトプットの読み方を解説する。