こんにちは、クラウド事業部 CI/CDサービスメニューチームの山路です。
今回はGitLabのProjectをテンプレートから作成できるProject templateの紹介です。
背景
GitLabは Project
という単位でリポジトリなどを管理します。Project作成時は複数の選択肢があり、空の状態で作るか、用意されたテンプレートを使うかを選べます。
※参考:
今回紹介するProject templateは、利用者が予め用意したProjectをテンプレートとして利用できる機能です。これにより、複数Projectで作業をする組織やチームにおいて、共通テンプレートを使うことで、Projectの作成や関連する作業時間の短縮、Project間での設定差分の発生を抑える効果が期待できます。なおProject templateはGitLab Premiumプラン以上で利用可能です。
Project templateは大きく2種類に分かれます。
- Group-level template: テンプレートとして利用したいProjectをSubgroupに設定します。
- Instance-level template: テンプレートとして利用したいProjectをGroupに設定します。本機能はSelf-managedでのみ利用可能です。
また、Project templateを使って他Projectに引き継がれる設定には、以下のようなものが含まれます。詳細はGitLabのドキュメントをご覧ください。
- リポジトリ中のファイル
- ブランチ
- コミット
- タグ
- Projectの設定
なおGitLabはProject template以外のテンプレート機能も提供しています。今回はそちらも含めた例を検証しました。
検証
ここから実際にProject templateを操作してみます。なお今回はGitLab SaaS (Ultimateプラン) の環境で検証しており、Group-level templateを検証しています。
Project templateの作成
まずはProject template作成のため、Subgroupとテスト用のProjectを作成します。作成後は適当なファイルを用意しておきます。
Project templateを設定するには、 設定
から 一般
を選択し、 カスタムプロジェクトテンプレート
を選択します。ここでサブグループを選択することで、以降は設定したProjectの内容をテンプレートとして利用できます。
試しに新規Projectの作成を行います。ここではテンプレートから作成
を選択します。
Project templateがない場合はビルトインからのみProjectを選択できますが、今回はグループに1つProjectが含まれているのを確認できます。
グループを選択すると、設定したSubgroupに含まれるProject一覧が表示されるので、使いたいProjectのテンプレートを使用を選択します。
あとは通常のProject作成と同様に操作をすれば、Projectの作成は完了です。
新規Project作成後、先ほどテンプレート用のProjectで作成したテストファイルが存在することを確認できます。
他のテンプレート機能と組み合わせる
続いて、Project template以外のテンプレート機能なども組み合わせてみます。今回はMerge request template、Protected branch を使ってみます。
※参考:
- GitLab Description templateでIssue/Merge requestのテンプレートを用意する - TECHSTEP
- GitLab Protected branchを試す - TECHSTEP
実際にGitLab上で開発を行う場合、複数のブランチを使うケースが大半かと思います。組織やチームによってはどんなブランチ戦略を使うか決まっている場合もあり、テンプレート用のProjectに予めブランチを作成しておくことができます。
ここではGitLab Flowを想定し、デフォルトの main
ブランチに加え develop
staging
production
を作成します。
また寿命の長いブランチを保護するため、Protected branchを設定しておきます。
さらにMerge request templateを使うと、予めMerge requestメッセージのテンプレートを用意しておけます。例えば以下のように3種類のテンプレートを用意し、リリースやHotfix用の文言を決めておくこともできます。
これらを設定し、再度Projectを作成してみます。
作成後のProjectを見ていきます。まず事前に作成したブランチ、およびProtected branchの設定は引き継がれていることを確認できます。
各種ファイルも引き継がれています。例えばMerge request template用のファイルも作成されるため、新規作成したProjectでMerge requestを作成すると、以下のようにテンプレートを利用できます。
またIssue templateを用意していれば同様にテンプレートを使用できます。
さいごに
今回はGitLab Project templateの紹介でした。複数のProjectを扱う、かつ定期的に新規Projectを立ち上げるような組織であれば、新規立ち上げまでの速度をかなり向上させられるのではないかと思います。また今回取り上げなかったGitLabの機能も組み合わせることで、より組織のポリシーに沿ったProjectの複製が可能となるため、利用を検討してみてはいかがでしょうか。
最後に、弊社はGitLabオープンパートナー認定を受けております。 また以下のようにCI/CDの導入を支援するサービスも行っているので、何かご相談したいことがあればお気軽にご連絡ください。