🚀

組織横断で中央管理するGitHub Actions Workflowを整備する

2023/01/24に公開

先日、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