公式ページによると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分ほどに短縮されている。
参考
コード
https://github.com/little-engineer/bff-sample/tree/master/.github/workflows
コメントを残す