公開:2023年7月10日

9分で読めます

CI/CDコンポーネント入門:GitLabでの使い方と活用メリット

CI/CDコンポーネントをパイプラインで活用する主なメリットと実践方法をご紹介します。再利用性の向上、柔軟な入力パラメーター、テストによる品質確保など、パイプライン設定を効率化するポイントを詳しく解説します。近日公開のCI/CDカタログもお見逃しなく。

GitLabのCI/CDコンポーネントシリーズ、第3回へようこそ!まだお読みでない方は、ぜひ「再利用可能なCI/CDテンプレートの作成方法」と「インクルード可能なファイルでの入力値の活用」もご一読ください。これら新機能の全体像をより深く理解できます。本記事では、GitLabのCI/CDコンポーネントがCIパイプラインをどのように革新するかを詳しくご説明します。また、コンポーネントのコレクションを収録したフレームワーク「CI/CDカタログ」の近日公開予定についても触れます。GitLabはこれらの取り組みを通じて、パイプライン設定の効率化と再利用性の向上に向けた大きな一歩を踏み出しています。

CI/CDコンポーネント

GitLab 16.1では、CI/CDコンポーネントという注目の実験的機能が導入されました。CI/CDコンポーネントとは、パイプライン設定の単位を抽象化した、再利用可能な単一目的のビルディングブロックです。

CI/CDコンポーネントを活用することで、いくつかの重要なメリットが得られます。

  1. 再利用性と抽象化。 CI/CDコンポーネントにより、すべての詳細を1か所に記述する代わりに、抽象化を組み合わせてパイプラインを構築できます。実装の詳細がコンポーネントにカプセル化されるため、開発者は事前に構築された再利用可能なブロックを組み合わせることに集中できます。このアプローチはモジュール性とコードの再利用性を高め、パイプラインのメンテナンスを簡素化します。
  2. 柔軟な入力対応。 コンポーネントは入力パラメーターをサポートしており、パイプラインのコンテキストに応じたカスタマイズが可能です。これにより、さまざまなパイプラインステージで柔軟に再利用できます。また、タグ付けとバージョン管理を備えた動的なCI/CDカタログを構築でき、制御性と互換性が向上します。特定のコンポーネントバージョンを参照することで、安定性と再現性を確保しながら、必要に応じて新しいバージョンへ簡単にアップグレードできます。
  3. テストによる高品質の維持。 開発ワークフローの一部としてコンポーネントをテストし、品質を維持することを強くお勧めします。CI/CDプロセスにテストを組み込むことで、コンポーネントの信頼性と機能性を検証し、早期に問題を発見・修正して、より堅牢で信頼性の高いパイプラインを実現できます。
  4. CI/CDカタログ。 コンポーネントの一元化されたリポジトリであるCI/CDカタログは間もなく公開予定で、幅広いユースケースに対応したコンポーネントの宝庫となります。開発者はこの一元化されたリポジトリで、コンポーネントの検索・統合・共有をワンストップで行えます。事前に構築された品質検証済みのコンポーネントが揃ったカタログを活用することで、パイプライン設定の手間と時間を大幅に削減できます。

前回までのブログ記事では、最初の2点(CI/CDテンプレートでも利用可能な機能)の主なメリットについて説明しました。今回はコンポーネントをさらに深く掘り下げ、パイプラインの構築方法をどのように革新できるかを探ります。

CI/CDコンポーネントのテスト

ソフトウェア開発が進化し続ける中、コードコンポーネントの信頼性と品質を確保することはますます重要になっています。

コンポーネントを活用する主なメリットの1つは、ソフトウェアの正式リリース前にコンポーネントを徹底的にテストできることです。これにより、より堅牢で効率的な開発プロセスが実現します。コンテキスト内では、リリース済みコンポーネントはバージョン管理され、構造化された構文に従うため、パイプライン内でシームレスに統合できます。

      include:
  - components: /path/to/project@<version>

    

CI/CDコンポーネントのユニークなメリットの1つは、その柔軟性です。DevSecOpsチームは@commit_SHAを付加することで「非公式」リリースを選択し、正式リリース前にコードの実験や反復を行うことができます。

      include:
  - components: /path/to/project@<commit_SHA>

    

コンポーネントを正式リリースにするには、タグを付けてバージョン管理されたスナップショットを作成する必要があります。タグ付きリリースは包括的なCI/CDカタログ(近日公開)に掲載され、十分なテストと承認を経たコンポーネントに簡単にアクセスできるようになります。CI/CDコンポーネントの安定性と信頼性を確保するためには、徹底的なテストが不可欠です。DevSecOpsチームはcommit_SHAを活用してパイプラインで包括的なテストを実行できます。パイプラインがすべてのテストに合格したら、コンポーネントにタグを付けてリリース準備が整ったことを示します。

タグ付きバージョンに基づくリリースジョブを設定することで、DevSecOpsチームはテストと検証を経た公式コンポーネントをプロジェクトに安心して組み込めます。コンポーネントのテスト方法について詳しくは、ドキュメントをご覧いただくか、以下のウォークスルー動画をご視聴ください。

バージョン管理とタグ付け

前のセクションで述べたように、DevSecOpsチームは@version@commit_SHAを使用してパイプライン内のコンポーネントを参照できます。また、@latestを活用する方法もあります。

      include:
  - components: /path/to/project@latest

    

これにより、最新の公式(タグ付き)コンポーネントが使用されます。信頼性の高いテストと組み合わせてパイプラインで使用することで、パイプライン内のコンポーネントが常にテスト済みかつ検証済みであることを保証できます。

今後の展望:CI/CDカタログ

コンポーネントを活用する最大のメリットの1つは、CI/CDカタログの公開とともに実現します。カタログにより、ユーザーは組織全体で利用可能なコンポーネントを検索・発見し、使用方法を確認できるようになります。また、パイプラインの構成要素を共同で進化・改善するためのフレームワークも提供されます。続報をお待ちください!

コンポーネントのドッグフーディング

GitLabでは、自社製品のドッグフーディングを大切にしています。CI/CDコンポーネントの実用性と有効性を実証するため、GitLabのテンプレートの一部をコンポーネントに変換し、社内チームに使用とフィードバックの提供を依頼しました。これにより、実際のシナリオでコンポーネントを積極的に活用・テストし、インサイトを得て機能を継続的に改善しています。このグループでは、Code Quality、Container Scanning、SASTのテンプレートをCI/CDコンポーネントに変換し、社内チームに利用を依頼しました。

このドッグフーディングプロセスを通じて、CI/CDコンポーネントの有効性を検証するだけでなく、提供内容を改善・強化するための貴重な経験とフィードバックを得ています。これは、ユーザーに実用的で信頼性の高いソリューションを提供するというGitLabのコミットメントの表れです。社内チーム間の継続的な議論はこちらのIssueでご確認いただけます。

アクションのご案内

CI/CDコンポーネントカタログは現在実験的な段階にあるため、本番環境での使用はお控えください。仕様変更の可能性が高い状況です。現在、CI/CDカタログの公開に向けてコンポーネントのフォルダー構造の再編成を進めています。進捗状況はEpicでご確認いただけます。また、専用のフィードバックIssueでご意見をお聞かせください。

今後の展開

GitLabのCI/CDコンポーネントカタログとCI/CDコンポーネント機能は、効率的なパイプライン設定の新時代を切り開いています。再利用性、抽象化、柔軟な入力、バージョン管理、そして一元化されたカタログを活用することで、開発者は効率的で適応性が高く、メンテナンスしやすいCI/CDワークフローを構築できます。CI/CDコンポーネントカタログは、チームがソフトウェアデリバリーを加速し、効果的に連携し、GitLabのCI/CD機能の可能性を最大限に引き出すことを支援します。

CI/CDカタログの公開をお楽しみに。豊富なコンポーネントコレクションへのアクセスが可能となり、パイプラインの新たな可能性が広がります。GitLabは引き続き、最先端のツールで開発者を支援し、イノベーションを推進し、現代のソフトウェア開発の複雑さを解消することに注力してまいります。

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

カバー画像:Alexander Grey on Pexels

ご意見をお寄せください

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

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

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

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