はじめに
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」コマンドを実行してテストを行う