GitHub Actionに入門してみた

はじめに

  • これはGitHub Actionを全然知らない私が、勉強を兼ねて、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を実行できる(次節を参照)

アクション

  • アクションとは、複雑なタスクを簡単に実行できる
    • 頻繁に繰り返される複雑なタスクは、アクションとして事前定義されている
    • GitHubで提供されてるものやサードパーティ製のものもある
    • アクションは usesキーワードを使って実行することができる
  • 例) リポジトリのチェックアウト(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」コマンドを実行してテストを行う

参考

blog1.mammb.com

knowledge.sakura.ad.jp