[GitHub Actions]LintとBuildを別のジョブに分けて並列実行する

公式ページによるとGitHub Actionsのジョブという単位は並列実行できる。LintとBuildをシーケンシャルに実行するかパラレルに実行するかは考え方次第だけど、ここでは並列実行を試す。

複数ジョブの設定

リポジトリの.github/workflows/下のYAMLファイルを修正し、BuildとLintのそれぞれのジョブを定義する。jobsというキーの下にネストして定義することでGitHub Actionsが自動的に並列実行してくれる。

name: CI

#############################
# Start the job on all push #
#############################
on: push

################
# Set the Jobs #
################
jobs:

  #################
  # Set build Job #
  #################
  build:
    # Name the Job
    name: Build by Gradle
    # Set the agent to run on
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      ################################
      # Run Build                    #
      ################################
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Build with Gradle
        run: ./gradlew build

  #################
  # Set Lint Job #
  #################
  lint:
    # Name the Job
    name: Lint
    # Set the agent to run on
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
        with:
          # Full git history is needed to get a proper list of changed files within `super-linter`
          fetch-depth: 0

      ################################
      # Run Linter against code base #
      ################################
      - name: Lint Code Base
        uses: github/super-linter@v3
        env:
          VALIDATE_KOTLIN: true
          DEFAULT_BRANCH: master
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

確認

テスト用のブランチを作成してPushして確認。

AsIs

ToBe

BuildとLintが並列で実行されてる事を確認。時間もシーケンシャル実行で4分だったのがパラレル実行だと2-3分ほどに短縮されている。

参考

GitHub Actions 入門

コード

https://github.com/little-engineer/bff-sample/tree/master/.github/workflows

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
little
15年以上プログラマーをしているエンジニアです。Kotlin, Java, Python, C++を使用したServerSideの開発に携わってきました。とりあえずやってみるスタイルで記事を更新していきます。