💎
【Github Actions】プライベートリポジトリ間でActionを共有する
はじめに
参画しているプロジェクトのリポジトリ間で Private Action を共有する必要が出たので、その時に対応したことをまとめました 🖲️
要約
プライベートリポジトリに格納されたアクションまたは再利用可能なワークフローは、同じ組織またはユーザーが所有する他のプライベートリポジトリ内で定義されたワークフローで使用できます。
ただし、プライベートリポジトリ内の Action の設定からアクセス設定を変更する必要があります。
プライベートリポジトリ内のアクセスを許可する
今回はgithub-actions-core
というプライベートリポジトリを作成し作業を進めていきます
- Settings > Actions > General の順にクリックし設定画面に移動
- Access セクションで
Accessible from repositories in the '<Organization名>' organization
を選択
詳しくはこちら
共通 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
と出力されていることを確認することができました 🎉
Discussion