💎

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

2024/08/05に公開

はじめに

参画しているプロジェクトのリポジトリ間で Private 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

参考

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

Rehab Tech Blog

Discussion