LoginSignup
24
0

More than 1 year has passed since last update.

Github Actionsのcustom actionsを使って、共通処理を外部に切り出し再利用できるようにしたい

Last updated at Posted at 2022-12-10

ディップ Advent Calendar 2022 10日目です。そろそろ折り返しですね。

業務でGithub Actionsを使っているのですが、共通になった処理を再利用したいケースがありました。

custom actions, composite action, reusable workflow を用いて実現可能ですが、今回は custom actions を用いて説明します。

詳細なドキュメント

構造

❯ exa -T -I .git -a
.
├── .github
│  ├── actions
│  │  └── hello_action
│  │     └── action.yml
│  └── workflows
│     ├── workflow-a.yml
│     └── workflow-b.yml
├── .gitignore
└── README.md

芸がありませんが、受け取った名前を使って hello, ○○! みたいなものをログに出力してみます。

呼ばれる側

.github/actions/hello_action/action.yml

.github/actions/hello_action/action.yml
inputs:
  action_user_name:
    description: "action user name"
    required: true
runs:
  using: "composite"
  steps:
    - name: Hello!
      run: echo "hello, ${{ inputs.action_user_name }}!"
      shell: bash

custom actions では inputs として変数値を渡すことができ、柔軟な動作変更が可能です。
(今回は紹介しませんが output というものもあり、 custom actions で処理した結果を参照することもできます)

steps では実際に echo で受け取った変数値を出力するようにしています。

呼ぶ側

.github/workflows/workflow-a.yml

.github/workflows/workflow-a.yml
name: Hello World A

on:
  push:
  workflow_dispatch:

jobs:
  say_hello:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v2
      - name: workflow A
        with:
          action_user_name: 'Action User A san'
        uses: ./.github/actions/hello_action

呼び出し側からは with を用いて変数に渡します。

実行結果

image.png

実際プロジェクトではどう使っているのか

リリース作業で特定のブランチに対してPRを出すのですが、それを後続の開発ブランチに取り込みたい需要があり、自動的にPRを作成しています。
他のCIを使うよりもActionsのイベントからPRの情報が取れるGithub Actionsを活用しました。

運用をしていく中で、いくつかの操作で同じものが出てきてしまったため、処理をまとめたいという需要からcustom actionsを見つけて適用しています。

まとめ

プログラムを書く際に再利用性について意識するシーンがありますが、Github Actionsでも同様にできるのは良い発見でした。

入力値による操作が分岐などにより複雑になってしまうと利便性の問題も出てきそうですが、適切な範囲でactionを分割することにより、よりよい開発体験を実現できそうです!

24
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
0