GitHub Actionに入門してみた
はじめに
GitHub Actionとは何か
- GitHub Actionとは、GitHub上のリポジトリに大して任意のタスクを自動実行できる機能
- リポジトリ内の
.github/workflows
の.yml
ファイル(ワークフローと呼ぶ)で定義する- 1つのワークフローで複数のタスクを記述することができる
- 1つのリポジトリに複数のワークフローを登録できる
- ワークフローの中で別のワークフローを参照することもできる
- GitHubのActionsタブで実行履歴が参照できます。
ワークフロー(.yml
ファイル)の書き方
基本的な書き方は以下のようになる
name: Greeting Workflow # ワークフロー名 on: [push] # トリガーとなる GitHub イベント jobs: job1: # ジョブ名 runs-on: ubuntu-latest # ジョブの実行環境(runner) steps: # ジョブのステップ - name: Greeting run: echo "Hello, world!"
- job: ひとまとまりの処理を記述する
- 「ジョブ名」は管理画面などに表示される名前として使われる文字列。
- jobは基本的に並列に実行される(順序を指定することも可能)
- steps: jobで実行する処理を記述する
- 要素(リスト)は指定された順序で処理が実行される
name
で処理内容を示す名前を指定するrun
で実行するコマンドを指定する- stepsでは
uses
を使い、任意のActionを実行できる(次節を参照)
- job: ひとまとまりの処理を記述する
アクション
- アクションとは、複雑なタスクを簡単に実行できる
例) リポジトリのチェックアウト(
actions/checkout
というアクションが提供されている)steps: - uses: actions/checkout@v2
@v2
はアクションのバージョン番号
例) Java 実行環境を設定する(
actions/setup-java
というアクションが提供されている)steps: - name: Set up JDK 17 uses: actions/setup-java@v2 with: java-version: '17' distribution: 'adopt'
with:
でアクションのパラメータを指定する
ワークフローのサンプル
name: Java CI on: [push, pull_request] # push時, pull_request時に実行するよう指定 jobs: # ここから実行するジョブを指定する build: runs-on: ubuntu-latest # Ubuntuの最新版環境内で処理を実行することを指定 steps: - uses: actions/checkout@v2 # チェックアウトを行うためのアクションを実行 - name: Set up JDK 11 uses: actions/setup-java@v2 # Java の実行環境を作成 with: java-version: '11' # Java の実行環境に関する条件を指定 distribution: 'adopt' # Java の実行環境に関する条件を指定 - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@v1 # radle-wrapper.jar のチェックサムを検証 - name: Build with Gradle run: ./gradlew build # ./gradlew build コマンドを実行
name: Rust # ワークフロー名を「Rust」に設定 on: [push] # push時にを実行するよう指定 jobs: # ここから実行するジョブを指定する build: # ジョブ名を「build」に設定 runs-on: ubuntu-latest # Ubuntuの最新版環境内で処理を実行することを指定 steps: # ここで実行する処理やコマンドを指定する - uses: actions/checkout@v2 # チェックアウトを行うためのアクションを実行 - name: Build run: cargo build --verbose # 「cargo build」コマンドを実行してビルドを行う - name: Run tests run: cargo test --verbose # 「cargo test」コマンドを実行してテストを行う