こんにちは。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
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 日は、下山さんの記事となります。お楽しみに!