公開:2024年5月8日

12分で読めます

CI/CDカタログがGAに:パイプラインをゼロから構築する必要はもうありません

GitLab 17.0でCI/CDカタログが一般公開(GA)されました。事前構築済みのパイプラインコンポーネントを検索・共有・再利用してワークフローを標準化・スケールさせる方法と、DevSecOpsチームの効率化に役立つ機能をご紹介します。

GitLabのCI/CDカタログが17.0(2024年5月16日)で一般公開(GA)となり、すべてのGitLabユーザーがCI/CDコンポーネントを簡単に検索・再利用・共有できるようになりました。CI/CDカタログは、事前に構築されたコンポーネントの宝庫へのアクセスを提供し、DevSecOpsワークフローへのシームレスな統合を支援することで、パイプライン設定の作成における協力と効率を大幅に向上させます。企業はCI/CDカタログの一元化されたプラットフォームを活用して、組織全体でワークフローを標準化できます。

      CI/CDカタログの一般公開に合わせて、GitLabはいくつかの重要な機能も合わせてGAリリースします。


> AIを活用したソフトウェア開発の未来を、GitLab 17バーチャルローンチイベントでご確認ください。[今すぐ視聴!](https://about.gitlab.com/eighteen/)


## コンポーネントとインプット

[CI/CDカタログ](https://about.gitlab.com/blog/introducing-the-gitlab-ci-cd-catalog-beta/)の力の源は、コンポーネントとインプットという2つの基本機能にあります。これらの機能はカタログの根幹をなし、開発者とDevSecOpsチームのパイプライン開発を効率化します。それぞれの機能について詳しく見ていきましょう。


### コンポーネント


#### コンポーネントとは?

コンポーネントとは、パイプライン設定の複雑さを抽象化した、再利用可能な単一目的のビルディングブロックです。CI/CDワークフローのレゴブロックのようなものとイメージしてください。コンポーネントを活用することで、毎回ゼロから始めることなく、より効率的にパイプラインを組み立てられます。


#### コンポーネントの種類

- テンプレート型コンポーネント:CIテンプレートに近い構造を持ち、定義済みのインプット定義が付属しています。特定のディレクトリ構造に整理されており、パイプラインに簡単に組み込むことができます。

- CI Steps(近日公開):[実験的機能](https://docs.gitlab.com/ee/ci/steps/)として提供されているこの新しいタイプのコンポーネントは、CI/CDカタログのファーストクラスオブジェクトになる予定です。このエキサイティングな追加機能にご期待ください。


### インプット


#### インプット補間とは?


インプット補間は、インクルード可能な設定ファイルに対してインプットパラメーターを定義できる強力な機能です。コンポーネント設定内で[spec: inputsキーワード](https://docs.gitlab.com/ee/ci/yaml/#specinputs)を使用することで、コンポーネント内のほぼすべてのキーワードをパラメーターで動的に置き換えることができます。この柔軟性はステージ、スクリプト、ジョブ名の調整にも適用され、さまざまなデータ型をサポートすることでコンポーネントをニーズに合わせて完全にカスタマイズできます。


##### スコープと有効性

重要な点として、インプットはインクルードされた設定にのみスコープが限定されます。これにより、パイプラインの他の部分への意図しない影響を防ぎます。インプット補間を使用することで、制約をシームレスに宣言・適用でき、コンポーネントのスムーズな統合を実現できます。


DevOpsのベテランも初めて触れる方も、CI/CDカタログ、コンポーネント、インプット補間によって、パイプライン開発の体験が大きく変わります。


## CI/CDカタログのコンポーネントへのアクセス方法

CI/CDカタログは開発者とDevOpsチームにとって強力なリソースです。事前に構築されたコンポーネントを共有・検索でき、パイプライン開発を効率化します。その仕組みを見ていきましょう。


1. コンポーネントはパイプライン設定を簡素化するスタンドアロンのビルディングブロックです。ニーズに合わせてカスタムコンポーネントを作成することもできます。では、それを他の人が使えるようにするにはどうすればよいでしょうか?そこでCI/CDカタログの出番です。


2. CI/CDカタログへの公開方法

\    - コミュニティとコンポーネントを共有するには、次の手順に従ってください:

\      - シンプルなCIジョブを使用してコンポーネントを公開し、CI/CDカタログ内で検索可能にします。

\      - 再利用可能なスクリプト、デプロイテンプレート、その他のパイプライン要素など、CI/CDカタログはコントリビュートに最適な場所です。

CI/CDカタログにリリースされるコンポーネントは、3桁を使用した[セマンティックバージョン](https://docs.gitlab.com/ee/ci/components/#semantic-versioning)でタグ付けする必要があります。

\    - コンポーネントを共有することで、コミュニティ全体が恩恵を受けるリソースライブラリの発展に貢献できます。

3. カタログのインデックスページ

\    - CI/CDカタログのメインページ(インデックスページとも呼ばれます)には、公開済みコンポーネントを含むプロジェクトの概要が表示されます。誰でもカタログにアクセスし、ニーズに合ったコンポーネントを検索できます。

\    - インデックスページには2つのタブがあります:

\      - すべて:公開済みかつ自分が参照可能なすべてのコンポーネントプロジェクトを表示します。

\      - 自分のグループ:自分が所属するネームスペース内で公開されているコンポーネントを表示します。


![CI/CD
Catalog](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098805/Blog/Content%20Images/Blog/Content%20Images/catalog_index_aHR0cHM6_1750098804807.png)


4.  カタログの詳細ページ


- CI/CDカタログのプロジェクトをクリックすると、そのプロジェクトで利用可能なコンポーネントを確認できる詳細ページに移動します。\

\    - 1つのプロジェクトに複数のコンポーネントが含まれている場合もあります。


- 詳細ページには2つのタブがあります:

<center><em>Readme:ユーザーが事前に設定したプロジェクトのreadme.mdを表示します。</em></center>


![readme
tab](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098805/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098804808.png)


<center><em>コンポーネント:インプットテーブルの構文など、各コンポーネントの詳細情報を表示します。この情報は自動的に生成・表示され、常に最新の状態に保たれます。</em></center>


![components
tab](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098805/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750098804809.png)


## コンポーネントの使用方法


CI/CDカタログのコンポーネントを使用するには、提示されたスニペットをパイプライン設定にコピーするだけです。例えば:\


```yaml


include:\

\  -
component:   gitlab.com/google-gitlab-components/cloud-run/deploy-cloud-run\
@0.1.0


```


スニペットにはコンポーネントの完全修飾ドメイン名(FQDN)が含まれているため、コンポーネントを別の場所に移動またはクローンした場合は、FQDNが正確であることを確認してください。パイプライン設定にFQDNをハードコードする代わりに、$CI_SERVER_FQDN変数を使用することもできます。


コンポーネントは以下の方法で参照できます:


- コミットSHA(例:e3262fdd0914fa823210cdb79a8c421e2cef79d)。CI/CDカタログに公開する前にコンポーネントをテストするため、`.gitlab.ci.yml`ファイルで$CI_COMMIT_SHA変数と組み合わせて使用することを強くお勧めします。

- ブランチ名(例:main)

- タグ(例:1.0.0)

- 省略形の1.0(最新のパッチ済み1.0.xバージョンを提供)または1(最新の1.x.xマイナーバージョンを提供)。そのため、セマンティックバージョニングのベストプラクティスに従い、常に特定のバージョン(マイナー、メジャー、または特定のパッチ)を参照することをお勧めします。

- ~latest(CI/CDカタログに公開されている最新のセマンティックバージョンを常に参照します)。~latestは常に絶対最新バージョンを使用したい場合にのみ使用してください。破壊的変更が含まれる可能性があるため、慎重にご使用ください。


## GitLabのデプロイメント形態別にみるCI/CDカタログ

CI/CDカタログとコンポーネントは、さまざまなニーズやユースケースに対応するために、複数の形態を提供しています。


### プライベートコンポーネントとパブリックコンポーネント


#### パブリックコンポーネント


- パブリックコンポーネントはパブリックリポジトリでホストされており、誰でもアクセスできます。

- GitLab.comからメインカタログにパブリックコンポーネントが公開されると、すべてのユーザーが検索・利用できるようになります。

- 最高のコンポーネントをパブリックカタログに提供していただき、活気あるコミュニティの構築にご協力ください。


#### プライベートコンポーネント


- プライベートコンポーネントはプライベートリポジトリでホストされています。

- 権限に基づく可視性:カタログにアクセスするユーザーは、コンポーネントがホストされているリポジトリの閲覧権限があれば、プライベートコンポーネントも検索・閲覧できます。

\    - プライベートカタログオプション:GitLab.comでは、組織がプライベートコンポーネントをGitLab.comのメインカタログに公開することができ、承認されたユーザーのみがアクセスできる「プライベートカタログ」を作成できます。\


### GitLab.com対Self-Managed

- GitLab.comの「パブリック」カタログ:メインカタログはGitLab.comでホストされており、[gitlab.com/explore/catalog](http://gitlab.com/explore/catalog)にアクセスすることで誰でも利用できます。CI/CDカタログの特長:

\    - オープンアクセス:GitLab.comでホストされているカタログは誰でも閲覧できます。

\    - コントリビュートと成長:コンポーネントを共有することで、世界中のユーザーがコミュニティ全体の恩恵となるリソースライブラリの発展に貢献できます。


- Self-Managedユーザー向け:CI/CDカタログはSelf-Managedユーザーも利用できますが、いくつかの違いがあります:\

\    - 空のカタログ:Self-Managedユーザーの場合、初期状態ではカタログに利用可能なコンポーネントが含まれていないため、空の状態で表示されます。

\    - 組織カタログ:各組織が独自のカタログを管理し、この形態の中で独自のコンポーネントライブラリを作成・維持する責任を担います。

\    - GitLab.comのコンポーネントを使用する場合:GitLab.comのメインカタログのコンポーネントを使用したい場合は、プロジェクトをローカルにクローンして組織カタログに公開してください。アップストリームの更新を取り込むには、ミラーリングが必要です。詳細については[CI/CDコンポーネントのドキュメント](https://docs.gitlab.com/ee/ci/components/#use-a-gitlabcom-component-in-a-self-managed-instance)をご確認ください。


## 今後の展開


CI/CDカタログは、パイプラインの構築・表示方法を革新する第一歩に過ぎません。今後のマイルストーンでユーザーに提供予定の機能の一部をご紹介します。


### CI Steps


Stepsとは、パイプライン設定で参照できる再利用可能かつ組み合わせ可能なジョブの構成単位です。各Stepは他のStepが利用できる構造化されたインプットとアウトプットを定義します。Stepsはローカルファイル、GitLab.comリポジトリ、その他のGitソースから取得できます。


GitLabでは、StepsをコンポーネントのもうひとつのタイプとしてCapitalizeしています。CI StepsをCI/CDカタログのファーストクラスオブジェクトにし、ユーザーが今日のコンポーネントと同じようにStepsを公開・非公開・検索・利用できるようにしていく予定です。


### カタログワークフローのセキュリティ強化


組織カタログ内でのコンポーネントの作成・使用・公開を、中央管理者が管理できるよう支援することを目指しています。公開プロセスが組織の標準や既存のワークフローとシームレスに統合されるよう取り組んでいます。プラットフォーム管理者がCI/CDカタログとコンポーネントワークフローのセキュリティとガバナンスを確保できる機能を提供したいと考えています。詳細については[このEpic](https://gitlab.com/groups/gitlab-org/-/epics/12713)をご覧ください。


### アナリティクス


パイプライン全体でのコンポーネント管理をシームレスに制御できるようにし、最適なバージョン管理とプロジェクトの整合性を確保することが目標です。これは、現状ではさまざまなプロジェクトパイプラインにわたるコンポーネントの使用状況を把握できないという課題に対処するものです。古くなったバージョンを迅速に特定し、必要に応じて速やかに修正できる機能をユーザーに提供することを目指しています。この強化により、コンポーネントの効率的な管理・更新が促進され、バージョン管理の精度とプロジェクトの整合性が向上します。詳細は[このIssue](https://gitlab.com/gitlab-org/gitlab/-/issues/393326)をご覧ください。


## CI/CDカタログを使い始める


CI/CDカタログの登場により、豊富な事前構築済みコンポーネントが提供され、パイプライン開発が大きく変わります。ユーザーはゼロからパイプラインを構築する必要がなくなり、CI/CDカタログがコンポーネントとパイプライン設定を検索するアクセスポイントとなります。CI/CDカタログによってコンポーネントのアクセスと共有が容易になり、コラボレーションとコミュニティの発展が促進されます。パブリックまたはプライベートリポジトリのどちらを利用する場合でも、これらのリソースを活用してパイプライン開発体験を向上させることができます。さらに、GitLab.comユーザーはオープンアクセスのカタログを利用でき、Self-Managedユーザーはニーズに合わせた組織カタログを構築できます。


> GitLab Ultimateの[無料トライアル](https://about.gitlab.com/free-trial/devsecops/)で[CI/CDカタログを体験](https://about.gitlab.com/free-trial/devsecops/)してみましょう。


> CI/CDカタログとコンポーネントについてさらに詳しく:

>\

> - [CI/CDコンポーネント作成者の歩み](https://about.gitlab.com/blog/a-ci-component-builders-journey/)

>

> - [FAQ:GitLab CI/CDカタログ](https://about.gitlab.com/blog/faq-gitlab-ci-cd-catalog/)

>

> - [ドキュメント:CI/CDコンポーネントとCI/CDカタログ](https://docs.gitlab.com/ee/ci/components/)

>\

> - [CI/CDコンポーネント入門:GitLabでの使い方と活用メリット](https://about.gitlab.com/blog/introducing-ci-components/)

>\ \n

    

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成してあなたの声を届けましょう。

フィードバックを共有する

今すぐ開発をスピードアップ

DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。