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

こんにちは。Development Team の水谷です。
本記事は AI Shift Advent Calendar 2022 の 23 日目の記事です。
Github Actions を導入する中で、便利だった 3 つの機能を紹介していきます!
また、 Composite Action には引数も指定できるので、同じ振る舞いだが、対象が異なる様な処理にも対応することが可能です。
チームでは、マージ以外のイベント時にデプロイするシーンで、Workflow Dispatch を活用しています。

GitHub Actions: Manual triggers with workflow_dispatch
ワークフローの再利用
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"
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 }}"

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