📔
GitLab CI/CD Componentsを使いこなそう!実践ガイドとカタログの作成方法
はじめに
今回はGitLabの「CI/CD components」について紹介します。
この機能を使うことでパイプラインを簡単に再利用できます。
※ 記事はGitLabのv17.0
時点の内容になります。また、動作確認はオンプレ環境で確認してます。
CI/CD componentsとは
「CI/CD components」とは、再利用可能なパイプラインの構成ユニットです。
※ GitHubでいうと、GitHub Marketplaceで公開されているアクションのようです(筆者はGitHub Actionsを使ったことがほぼありません)。
メリット
-
再利用性
- プロジェクト毎にパイプラインを作ったり・設定したりの手間が減る
-
CI/CDの利用・活用に対するハードルを下げることができる
- 利用者は「CI/CD components」の使い方さえわかれば、スクリプトを書かなくても済む
デメリット
-
習得難易度が高い
- CI/CDの知見がないメンバーでは作るのは難しい
CI/CD components_作り方
1. プロジェクトを新規作成し、機能を設定・有効化します
- プロジェクトの説明(
Project description
)- 記載が必須
- リポジトリ
- 有効化(コード管理のため、必須)
- リリース
- 有効化(カタログを公開・管理するため、必須)
-
CI/CDカタログプロジェクト
- 有効化
2. ディレクトリ構成は以下で構成します
ディレクトリ構成
.
├─ .gitlab-ci.yml
├─ README.md # 必須です
└─ templates
├─ xxxx.yml # `xxxx`の部分はCI/CD componentsの名前になります
└─ yyyy.yml # 複数のコンポーネントを指定できます(v16.11で最大数は30です)
.gitlab-ci.yml
は以下を最低限設定します(解析やテストが必要であれば、記載)
3. .gitlab-ci.yml
# タグができたらリリースを実施する
create-release:
stage: deploy
image: registry.gitlab.com/gitlab-org/release-cli:latest
script: echo "Creating release $CI_COMMIT_TAG"
rules:
- if: $CI_COMMIT_TAG
release:
tag_name: $CI_COMMIT_TAG
description: "Release $CI_COMMIT_TAG of components in $CI_PROJECT_PATH"
templates/*.yml
を設定します
4. CI/CD componentsの定義ファイルCI/CD componentsの定義 (例 xxxx.yml)
spec:
inputs: # コンポーネントを利用する際のインプット(プロパティのイメージ)
stage:
default: test
---
# パイプラインのジョブを記載する。
# $[[ inputs.xxxxx ]]と記載することで、インプットの値を参照することができます
component-job:
script: echo job $[[ inputs.stage ]]
stage: $[[ inputs.stage ]]
CI/CD componentsの定義 (例 yyyy.yml)
spec:
inputs: # コンポーネントを利用する際のインプット(プロパティのイメージ)
stage:
default: build
---
# パイプラインのジョブを記載する。
# $[[ inputs.xxxxx ]]と記載することで、インプットの値を参照することができます
component-job:
script: echo job $[[ inputs.stage ]]
stage: $[[ inputs.stage ]]
5. GitのTagを作成します
CI/CD components_使い方
.gitlab-ci.yml
include:
# ${GitLabのドメイン}/${コンポーネントプロジェクトのバス}/${コンポーネント名}@${バージョン}
- component: gitlab.example.com/components/sample/xxxx@1.0.0
inputs:
stage: test
CI/CD Catalog
「CI/CD components」をリスト化したものになります。
カタログの一覧は${GITLAB_URL}/explore/catalog
で確認できます。
また、パイプラインエディターにもリンクが配置されています。
おわりに
今回はGitLabの「CI/CD components」について記載しました。
「普段、毎回記載していた.gitlab-ci.yml
の一部を統一化してメンテがしやすい」という点で非常に便利です。
こちらにも記載がありますが、日本語での情報が少ない。
参照
Discussion