DevSecOpsプラットフォームの一部であるGitLab CI/CDカタログでは、CI/CDコンポーネントを検索・再利用・公開することで、ソフトウェア開発をより効率的かつ生産的にすることができます。先日、CI/CDカタログに関するウェビナーを開催したところ、多くの参考になる質問が集まりました。このFAQでは、その中からいくつかの質問(と回答)をご紹介するとともに、CI/CDカタログの機能と活用のベストプラクティスをお伝えします。
GitLab.comでCIカタログのコンポーネントとインプットはいつ利用できるようになりますか?
CIカタログのコンポーネントとインプットは一般提供(GA)となりました。GitLab 17.0以降、GitLab.comおよびセルフマネージド環境でご利用いただけます。
コンポーネントのバージョン管理についてはどうなっていますか?パイプラインがコードと密結合していることが多く、古いバージョンのコードからリリースパイプラインを再実行したい場合があります。アプリケーションと同様にコンポーネントをバージョン管理する方法はありますか?
バージョン管理は完全にサポートされています。任意の時点で、以前の任意のバージョンを使用することができます。
複数の他コンポーネントを使用するコンポジットコンポーネントは作成できますか?
もちろんです!こちらはvalidateコンポーネントを使用するdeployコンポーネントの例です。

コンポーネントのテスト方法にはどのようなものがありますか?
コンポーネントをテストする方法はいくつかあります。最初の方法はドキュメントに記載されています。バージョンの代わりに$CI_COMMIT_SHAを使用してコンポーネントをインクルードすることで、すべてのコミットに対してコンポーネントをテストできます。もう一つの方法は子パイプラインを使用する方法で、異なるインプットパラメーターでコンポーネントをテストすることができます。詳細はGitLabフォーラムをご覧ください。
コンポーネント参照URLでは、タグの代わりにブランチ名をバージョンとして使用できますか(例:$CI_SERVER_FQDN/my-org/security-components/secret-detection@master)?
はい、ブランチ名を使用できます。CI/CDカタログのドキュメントにコンポーネントバージョンの一覧が記載されています。
セルフマネージドインスタンスでカタログを表示するにはどうすればよいですか?
セルフマネージド向けのカタログは利用可能ですが、コンポーネントが公開されていない状態では空の状態になります。このカタログを組織内で内部利用することができ、適切なコンポーネントを追加するかどうかはユーザーやチームの判断に委ねられています。あるいは、GitLab.comの既存のコンポーネントプロジェクトをセルフマネージドインスタンスにミラーリングすることも可能です。
パブリックリポジトリをセルフホストインスタンスにクローンできますか?
コンポーネントはGitLabプロジェクトでホストされており、他のプロジェクトと同様にローカルにクローンすることができます。GitLab.comからセルフマネージドインスタンスへのコンポーネントのミラーリング方法についてはこちらの手順をご参照ください。
CI/CDコンポーネントのジョブ名の衝突を防ぐにはどうすればよいですか?
インプットを使用して動的なジョブ名を指定してください。これにより、同じパイプライン内に同じコンポーネントを複数回インクルードすることができます。
カタログ内のコンポーネントのソースコードを確認することはできますか?
はい。ソースコードを確認するには、カタログから表示したいコンポーネントを開き、コンポーネント名をクリックします。するとコンポーネントがホストされているプロジェクトが開き、コンポーネントのtemplatesフォルダ内に.ymlファイルを見つけることができます。
コンポーネントは配列データをインプットパラメーターとして受け取れますか?
コンポーネントは複数のデータ型を受け取ることができます。対応しているのは、文字列、ブール値、数値、配列です。
コンポーネントは.ymlファイルと並んで他のファイルを参照できますか?
できません。この機能は(試験的な)CI Stepsで利用可能です。
CI/CDコンポーネントのアンチパターンはありますか?
ドキュメントのベストプラクティスセクションをご参照ください。
グループが所有するコンポーネントのみを使用するようグループを制限すること(コミュニティコンポーネントの使用を禁止するなど)は可能ですか?
現時点では対応していませんが、この機能はロードマップに含まれています。
GitLab CI Stepsとこのコンポーネントは何か関係がありますか?
はい、関係があります。CI Stepsは別のタイプのコンポーネントとして位置付けています。詳細はCI Stepsのドキュメントをご覧ください。
組織内のメンバーのみが使用できるプライベートコンポーネントを作成することはできますか?
はい。コンポーネントの可視性はプロジェクトの可視性レベルに基づいており、プロジェクトを閲覧する権限を持つメンバーのみがカタログ内でコンポーネントを表示・検索できます。
GitLab.comのコンポーネントをフォークする場合、フォークしたリポジトリを管理し、元のリポジトリに変更を提案するための最善のGitLabフローはどのようなものですか?
フォークの管理は、他のGitリポジトリと同様に行うことができます。フォーク内で変更を加え、マージリクエストを作成して元のリポジトリに変更を提案してください。
カタログにおいて、認証済みクリエイターと非認証クリエイターの間でソースコードの標準化に違いはありますか?認証済みクリエイターはより高い基準に従う必要がありますか?
現在、拡張コミュニティの個々のクリエイターを認証・承認するプロセスはありません。ただし、GitLabパートナーおよびGitLabが管理するコンポーネントに対するプロセスは存在します。
Fortify SCAなどのツールをCI/CDパイプラインに組み込む際の推奨方法は何ですか?
2つの方法が考えられます。1つ目は、Fortifyがカタログに共有コンポーネントを作成し、必要な要素を公開する方法です。2つ目は、公開APIが存在する場合、コミュニティがオープンソースのコンポーネントを構築してカタログで共有・利用できるようにする方法です。
他のジョブやコンポーネントに渡す「アウトプット」をコンポーネントから提供する際の推奨パターンはどのようなものですか?
現時点ではコンポーネントのアウトプットを指定する機能はありませんが、CI Stepsという新しい機能としてロードマップに含まれています。
コンポーネントへのラベル付けの計画はありますか?
はい!このGitLabエピックでは、コンテンツタイプ、タグ、カテゴリーによる検索性と検出性を向上させるための複数のイシューが含まれています。
既存のCI/CDテンプレートはコンポーネントに移行されますか?
はい、GitLabのテンプレートは移行済みで、CI/CDカタログに特別なバッジが表示されています。
既存のGitLabパイプラインテンプレートからGitLabカタログコンポーネントへの移行に推奨される方法は何ですか?
コンポーネントはテンプレートと非常に似ているため、移行は比較的シンプルに行えます。まずテンプレートでインプットの使用を開始し、その後適切なフォルダ構造に移動することをお勧めします。
CI/CDカタログとコンポーネントについてさらに詳しく:





