はじめに
GitHub Actionsを初めて使いましたが、git pushした時にWorkflowを自動実行させるのに苦戦したのでその手順をまとめます。
当記事の到達点
当記事ではmasterブランチにgit pushされたらワークフローを自動実行して「Hello World」を表示させるまでを到達点とします。内容的にはCI/CDのCDになります。
事前準備
事前にリモートリポジトリを用意してクローンしてください。新規に作成するリポジトリでも作成済みのリポジトリでも構いません。
GitHub Actionsが無料プランの場合はパブリックリポジトリでのみGitHub Actionsを利用出来ます。
プライベートリポジトリでGitHub Actionsを利用したい場合は有料プランになる必要があります。
ワークフローファイルを作成する
GitHub Actionsのワークフローとは
GitHub Actionsのワークフローとは、GitHubのリポジトリ上での操作(push、checkoutなど)や指定された時間をトリガーにあらかじめ定義した処理(Workflow)を実行する機能です。
Workflowはジョブという処理の単位に分けられ、仮想マシンのインスタンス上で実行されます。ジョブはさらにステップという単位に分けられ、コマンドや既存の処理(アクション)が実行されます。
ワークフローファイルを作成する
ワークフローの設定はYAMLファイルで行います。プロジェクトの最上位の階層に.github/workflowsディレクトリを作成し、その直下に.yml形式のワークフローファイルを保存します。
このディレクトリ名はGitHubで決められており、他のディレクトリにワークフローファイルを作成してもワークフローは実行されません。
ワークフローファイルへの記述
ワークフローファイルに次の内容を記述します。
name: Hello World
on:
push:
branches:
- master
jobs:
say_hello:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Print message
run: echo "Hello World!"
記述の注意点として、インデントはtabではなくスペースで行ってください。GitHub Actionsでは2スペースのインデントが標準とされています。
記述内容についてそれぞれ解説します。
name
nameはGitHub Actions上で表示されるワークフローやステップの名前です。ファイルの先頭に書いたnameはワークフローの名前となります。
name: Hello World
この場合は名前がHello Worldのワークフローということになります。
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Print message
run: echo "Hello World!"
steps以下にあるnameは各ステップの名前です。stepについては後述します。
nameは省略可能で、省略した場合はGitHub Actions側が自動で名前を付けます。
ワークフローのnameを省略した場合はワークフローファイルのパスがワークフローの名前となります。stepのnameを省略した場合は実行内容に応じて表示名が自動的に決まります。
on
GitHub Actionsのワークフローは特定のイベントが発生した時に実行されます。そのイベントをトリガーと呼びます。このトリガーを設定するのがonです。
次のコードはリポジトリにpushされた時をトリガーにワークフローを実行します。
on:push
次のようにpushされたブランチを指定することも出来ます。
on:
push:
branches:
- master
これはmasterブランチにpushされた時をトリガーにワークフローを実行します。
他にもプルリクエストが作成された時や、特定の時間をトリガーに設定出来ます。その他のイベントはドキュメントに一覧が記載されているのでこちらを参照してみてください。
jobs
ジョブはワークフローで実行する処理のまとまりです。jobsで設定します。ジョブには一意の識別子(ジョブID)が必要であり、その下に実行内容や設定を記述します。
次はジョブの例です。
jobs:
say_hello:
runs-on: ubuntu-latest
say_helloがジョブIDです。ジョブID は、ワークフロー内で一意である必要があり、英数字とハイフン(-)、アンダースコア(_)のみを使用できます。数字で始めることはできません。
ジョブIDはGitHub Actionsで表示されます。nameを付けた場合はnameが表示されますが、省略した場合はジョブIDが表示されます。
jobs:
say_hello:
name: Say Hello
runs-on: ubuntu-latest
この場合は、nameのSay Helloがsay_helloジョブの名前となります。
runs-onは必須で、ジョブを実行する環境を指定します。この例ではubuntu-latestを指定していますが、これはGitHubが提供する最新のUbuntu Linux環境を使用することを意味します。
ジョブで具体的に行いたい処理はsteps以下に書いていきます。
steps
ステップはジョブ内で行われる処理の単位です。steps以下に指定します。
ステップではコマンドを実行する、設定タスクを実行することが出来ます。
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Print message
run: echo "Hello World!"
このステップでは、リポジトリにチェックアウトしてGitHub Actionsで「Hello World!」を表示しています。usesとrunについて見ていきましょう。
steps:
- name: Checkout repository
uses: actions/checkout@v7
usesでアクションを実行しています。アクションとは、GitHub Actions で再利用可能な処理の単位であり、よく使用される処理をパッケージ化したものです。アクションを使用することで、複雑な処理を簡単に実行することができます。actions/checkout@v7ではリポジトリのコードをワークスペースにチェックアウトする処理を行っています。
steps:
- name: Print message
run: echo "Hello World!"
runでシェルコマンドを実行しています。シェルコマンドを実行することで、ファイルの操作、プログラムのビルド、テストの実行など、様々な処理を行うことができます。
GitHub Actionsで動作確認
ワークフローの記述が出来たらリモートリポジトリへpushしてください。ブラウザでGitHubへアクセスしてワークフローを設定したリポジトリへ移動します。
リポジトリのActionsタブをクリックして、「Hello World」でワークフローが追加されているか確認します。問題が無ければpushすると同時にワークフローの実行もされています。
ワークフローが確認出来たら実行されたワークフローで「Hello World」が表示されているか確認しましょう。workflow runの緑チェックマークの横に表示されている「say hello」は実行されたワークフローの履歴です。表示名はコミットメッセージになります。
「say hello」クリックするとワークフローの詳細画面に遷移します。
ワークフローファイルのjobに記述したジョブIDの「say_hello」が表示されています。
jobs:
say_hello:
「say_hello」をクリックするとジョブで実行された処理の詳細画面に遷移します。
stepで実行されている内容を確認出来ます。
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Print message
run: echo "Hello World"
ステップにはチェックアウトと「Hello World」を表示する処理を書きました。
nameの「Checkout repository」と「Print message」が表示されていますね。
「Print message」に「Hello World」を表示させる処理を書いているので確認します。
「Hello World」が表示されているのが確認出来れば完了です。
おわりに
初めてのGitHub Actionsの利用で最初は苦戦しましたが、GitHubが提供するサービスなだけあって情報が多いのでそこもありがたいですね。
今回CI/CDのCDを学んだので次はCIの自動テストやビルドを学んで実装したいです。
参考






