GitHub Actionsは、GitHub上でリポジトリ内のコードの変更を自動的にチェックしたり、テストしたり、デプロイ(公開)したりする仕組みのこと。
ポイント GitHub Actionsの仕組み【概要】
自動化:GitHub Actionsは特定のイベントが起こったときに自動で何かを実行する仕組み。コードをリポジトリにプッシュ(アップロード)したり、プルリクエストを作成したりする「イベント」を定義し、そのイベントを契機に動作する。
ワークフロー:ワークフローとは、どのようなイベントが発生したときに何をするかを定義したもの。例えば、「コードをプッシュしたときにテストを実行する」など。
ジョブ:ワークフローの中で行われる一連の作業をジョブと呼ぶ。ジョブはさらに細かいステップに分けられ、それぞれ具体的な作業内容を定義する。
この基本知識をベースに、具体的にGitHub Actionsを定義・実行する方法をご説明します。
GitHub Actionsの使い方:ワークフロー
GitHub Actionsを理解するための最も重要なポイントは、ワークフローファイル(workflowファイル)。このファイルが、どのようなイベントでどのようなアクションを実行するかを定義しており、逆に言えばこのファイルを作成することができれば、GitHub Actionsを利用することができるようになります。
ステップ1:workflowファイルの作成
リポジトリのトップページに移動。「Add file」ボタン→「Create new file」で、ファイル名.github/workflows/main.yml
と入力。このディレクトリとファイルがワークフローファイルの標準的な場所です。
ファイル名はなんでもOK。ディレクトリは固定ですが、目的に応じてファイル名は使い分けOKです。
.github/workflows/ci.yml
.github/workflows/deploy.yml
.github/workflows/test-workflow.yml
ステップ2:workflowの定義(yaml)
GitHub ActionsのworkflowファイルはYAML形式で記述され、インデントによる階層構造やキーと値のペア、リストの表現が特徴です。このYAMLファイルを正しく記述することで、さまざまな自動化タスクを簡単に設定できます。
name: Java CI on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - name: Check out repository code uses: actions/checkout@v2 - name: Set up JDK 11 uses: actions/setup-java@v2 with: java-version: '11' - name: Build with Maven run: mvn -B package --file pom.xml - name: Run tests run: mvn test
ポイントとなる部分をピックアップして解説します。
1.ワークフローの名前
name: ワークフローの名前を指定します。この名前はGitHubの「Actions」タブで表示されます。
name: Java CI
2.イベントのトリガー
on: ワークフローが実行されるイベントを指定します。この例では、push
(コードがプッシュされたとき)とpull_request
(プルリクエストが作成されたとき)にワークフローがトリガーされます。
on: [push, pull_request]
3.ジョブの定義
jobs: 実行するジョブを定義します。
- build: ジョブの名前。この名前は任意。ここでは他のジョブと区別するためにbuildとしています。
- runs-on: ジョブが実行される環境を指定します。この例では
ubuntu-latest
を使用しています。
jobs: build: runs-on: ubuntu-latest
4.ステップの定義
steps: ジョブ内の各ステップを定義します。各ステップは順番に実行されます。
- name: ステップの名前を任意で指定。ステップが何をするかを説明することが一般的。
- uses: 既存のアクションを利用する場合に使用します。ここでは、リポジトリのコードをチェックアウトする
actions/checkout@v2
アクションを使用しています。
steps: - name: Check out repository code uses: actions/checkout@v2
- with: アクションに渡すパラメータを指定します。ここでは、
actions/setup-java@v2
アクションを使用して、Javaバージョン11をセットアップしています。
- name: Set up JDK 11 uses: actions/setup-java@v2 with: java-version: '11'
- run: シェルコマンドを直接実行する場合に使用します。この例では、Mavenを使ってプロジェクトをビルドしています。(関連 Mavenとは?)
- name: Build with Maven run: mvn -B package --file pom.xml
このワークフローファイルをリポジトリに追加することで、コードがプッシュされたりプルリクエストが作成されたときに自動的にJavaプロジェクトがビルドされ、テストが実行されます。特別な設定は不要で、ファイルを所定のディレクトリに格納することで自動的にワークフローが実行されます。