💎

【Github Actions】プライベートリポジトリ間でActionを共有する

2024/08/05に公開

はじめに

参画しているプロジェクトのリポジトリ間でActionを共有する必要が出たので、その時に対応したことをまとめました🖲️

要約

プライベートリポジトリに格納されたアクションまたは再利用可能なワークフローは、同じ組織またはユーザーが所有する他のプライベートリポジトリ内で定義されたワークフローで使用できます。

ただし、プライベートリポジトリ内のActionの設定からアクセス設定を変更する必要があります。

プライベートリポジトリ内のアクセスを許可する

今回はgithub-actions-coreというプライベートリポジトリを作成し作業を進めていきます

  1. Settings > Actions > Generalの順にクリックし設定画面に移動

Settings

  1. AccessセクションでAccessible from repositories in the '<Organization名>' organizationを選択

Access

詳しくはこちら

共通Actionを作成する

nameの引数を受け取り、Hello {name}を出力するシンプルな共通workflowを作成

example.yml
name: example

on:
  workflow_call:
    inputs:
      name:
        description: "args example"
        required: false
        default: "example name"
        type: string

jobs:
  example:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Hello
        run: |
          echo "Hello, ${{ inputs.name }}"

inputsにはstring, number, booleanがサポートされているが、配列を渡したい場合は自分でなんとかする必要があります🧑‍🎤

inputsについて、詳しくはこちら

再利用可能なワークフローについて、詳しくはこちら

他のリポジトリから使用する

今回はuse-github-actions-coreというプライベートリポジトリを作成し、以降の作業を進めます

mainへのpushをトリガーに、前セクションで作成したworkflowを呼び、引数を渡します

example.yml
name: example

on:
  push:
    branches:
      - main

jobs:
  add_label_into_pull_request:
    # 作成したworkflowを定義
    uses: {your organization or your username}/{your repository}/.github/workflows/example.yml@main
    # 引数
    with:
      name: "Michael"

実行結果

引数に設定したMichaelを共通actionが受け取り、Hello, Michaelと出力されていることを確認することができました🎉

result

参考

プライベート リポジトリからのアクションとワークフローの共有

Discussion