1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actionsの共通化について(Composite ActionとReusable workflowsの違い)

Last updated at Posted at 2025-01-04

はじめに

業務で、CI/CDをGitHub Actionsで自動化する取り組みに挑戦しています。
ワークフローを作成する中でなく、メンテナンス性や拡張性を高めるために、ワークフローファイルのモジュール化に取り組みました。

調べる中で、共通化する方法が二つあることを知ったので、それぞれについてまとめることにしました。

Composite Action

共通化部分

action.yml
name: test-action

inputs:
  version:
    default: '3.8'
    required: false

runs:
  using: "composite"
  steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Set up Docker Buildx
      id: buildx
      uses: docker/setup-buildx-action@v2

    - name: Set Up
      uses: actions/setup-python@v2
      with:
        python-version: ${{ inputs.version }}

呼び出し

test-workflow-action.yml
name: test-call

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: test-action
        uses: ./.github/workflows/buildx
        with:
          version: '3.9.1'

解説

  • ファイル名はaction.ymlにする。(フォルダを分けることで、区別するようにするのが一般的。今回は、 ./.github/workflows/buildx内にaction.ymlをおく)
  • using: "composite"を指定する
  • 値を渡すときは、inputsを使って渡す
  • secretsを渡すことができない

Reusable workflows

共通化部分

_test-action.yml
name: test-action

on:
  workflow_call:
    inputs:
      version:
        default: '3.8'
        required: false
    secrets:
      secret-version:
        default: '3.8'
        required: false

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: sample
        with:
          secret-version: ${{ secrets.secret-version }}
          version: ${{ inputs.version }}

呼び出し

test-workflow-action.yml
name: test-call

jobs:
  test:
    runs-on: ubuntu-latest
      steps:
        - name: Checkout code
          uses: actions/checkout@v3

    call-reusable-workflow:
      uses: ./.github/workflows/_test-action.yml
      with:
        version: '3.9.1'
      secrets:
        secret-version: '3.9.1'

解説

  • ファイル名は任意(ハイフンから始めることが多そう)
  • onの値にworkflow_callを指定する
  • 呼び出す時はファイル名まで書く(Composite Actionはフォルダ名まで)
  • 呼び出されたワークフローからさらに別のワークフローを呼び出すことはできない_test-action.ymlから、さらに別のワークフローを飛び出すことはできない)
  • 値を渡すときは、inputssecretsを使って渡す

参考

Composite Action
https://zenn.dev/tmrekk/articles/5fef57be891040
https://qiita.com/M_Kagawa/items/98f154477b8b5bd3d315

Reusable workflows
https://zenn.dev/jerome/articles/618af7cc934f2f
https://tech.speee.jp/entry/terraform-reusable-workflow

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?