組織横断で中央管理するGitHub Actions Workflowを整備する
先日、GitHubのアップデートによりRequired workflowが使えるようになりました。
これにより、
Organization内のリポジトリに対して共通のWorkflowを設定できるようになりました。
スマートショッピングでは、さっそく組織横断でWorkflowを中央管理するリポジトリを作成し、運用を始めたので共有します。
Required workflowsを管理するリポジトリの設定
組織のプライベートリポジトリで使用する場合、
GitHub Actions でプライベートリポジトリの Action を共有できるようになったので試してみると同様のアクセス設定を行います。
Required workflowsの設定
Required workflowを使うための設定は、https://github.com/${org}
を開き、
Settings
> Actions
> General
> Required workflows
で設定することができます。
Add workflow
で特定のリポジトリのyamlファイルを指定して追加します。
設定時には、
- Workflowを管理するリポジトリ
- Workflowのファイル
- このファイルは、
.github/workflow
に置く必要はありません。ここでは、リポジトリのrootに各Workflowのためのディレクトリを置いています。
- このファイルは、
- Workflowを動かすリポジトリの選択
- 全てのリポジトリを対象とする
All repositories
か、 特定のリポジトリのみを複数選択して対象とするOnly selected repositories
を選ぶことができます。
- 全てのリポジトリを対象とする
を設定します。
1つのWorkflowが全てのリポジトリ、あるいは選択したリポジトリで動くようになるので、
いままで各リポジトリごとに設定していた作業がなくなり、とても楽になりました。
Workflowで使うActionについて
弊社では、組織のプライベートリポジトリのGitHub ActionをDependabotで更新するで書いた方法で、
- 1つのプライベートリポジトリで組織内で使用するActionを管理
- Dependabotにより呼び出し側のバージョンをアップデートする
ということをしていました。
そこに、Workflow自体も中央管理できるようになったわけです。
Required workflowsでは必ずしも組織内のActionを使用する必要はありませんが、
再利用性やバージョン管理のしやすさを考えて基本的に組織内のActionを呼び出すWorkflowとしています。
もちろん、Required Workflow でもDependabotによるActionのアップデートが可能です。
現在は、SREチームはDevOpsに向き合い、開発を加速させるで紹介したActionを管理しています。
Required Workflowで使用するActionの更新
以下のようにWorkflowを管理するリポジトリでDependabotの設定を行なうことで、自動で更新のためのプルリクエストを作成することができます。
# Set update schedule for GitHub Actions
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/changed_lines"
schedule:
interval: "daily"
まとめ
プライベートリポジトリのGitHub ActionとRequired workflow,Dependabotを使うことで、
組織内で共通利用するWorkflowの管理がとても楽になります。
最近いいアップデートが続いているのでGitHubの今後にも期待しています。
Discussion