【AI Shift Advent Calendar 2022】GitHub Actions で便利だった機能 3 選を紹介します

こんにちは。Development Team の水谷です。
本記事は AI Shift Advent Calendar 2022 の 23 日目の記事です。

Github Actions を導入する中で、便利だった 3 つの機能を紹介していきます!

1. Composite Action

Composite Action は複数 Action をまとめて管理することで共通化が可能になります。
例えば Go のセットアップのみを目的とした Action を用意することで、バージョン更新時のコストを減らすこともできます。

name: Go setup
description: go-setup composite template
runs:
  using: composite
  steps:
    - name: Setup Go
      uses: actions/setup-go@v3
      with:
        go-version: "1.19.3"

また、 Composite Action には引数も指定できるので、同じ振る舞いだが、対象が異なる様な処理にも対応することが可能です。

name: Go push
description: go-push composite template
inputs:
  app:
    description: "app project id"
    required: true
runs:
  using: composite
  steps:
    - shell: bash
      run: TARGET=${{ inputs.app }} make push 

Creating a composite action

2. Workflow Dispatch

Workflow Dispatch は手動で処理を実行したい際に用いる機能で、こちらも Composite Action 同様、引数を指定できるので、動的に処理を変えることが可能です。

下記は、入力したメッセージをログ出力する、簡単なサンプルコードです

name: Manual Workflow
on:
  workflow_dispatch:
    inputs:
      message:
        description: 'Please enter a message to print'
        required: true
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Print the message
        run: echo "The message is: ${{ inputs.message }}"

チームでは、マージ以外のイベント時にデプロイするシーンで、Workflow Dispatch を活用しています。

GitHub Actions: Manual triggers with workflow_dispatch

3.Workflow Call

Workflow Call は共通化した workflow を呼出することが可能です。これにより、複数の workflow を組み合わせて、より複雑な処理を実現することができます。
例えば、.github/workflows/build.yaml を配置します。

name: Build Workflow
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Print the message
        run: echo "The message is: ${{ inputs.message }}"
        id: build
        outputs:
          message: ${{ steps.build.output }}

上記で作成した Workflow 下記の様な形で呼出することができます。
これは 1 つ呼出しているだけですが、異なるワークフローを呼出ことで、より要件に合った処理を行うことが可能です。

name: Dev CICD Dialog Engine
"on":
  pull_request:
jobs:
  build:
    name: Build
    uses: ORG/REPO/.github/workflows/build.yml@master

ワークフローの再利用

終わりに

Github Actions の導入は簡単で、手軽に自動化ができます。新機能も頻繁に追加されているので、今後ともキャッチアップしていこうと思っています!
最後まで読んで頂きありがとうございました、Github Actions ユーザーに役立てば幸いです!

明日 24 日は、下山さんの記事となります。お楽しみに!

PICK UP

TAG