第3章 GitLab パイプラインのカスタマイズとコンテナーイメージの再構築
GitLab でパイプラインをカスタマイズする場合、コンテナーイメージを再構築することは、更新されたワークフローに変更が確実に含まれるようにするための重要なステップです。
GitLab のパイプラインは、GitLab ランナーイメージなどの特定のコンテナーイメージに依存して、CI/CD ワークフローで定義されたタスクを実行します。GitLab ランナーイメージは、パイプラインの実行に必要なツール、設定、スクリプトを提供します。パイプライン内のタスクを変更する場合は、その変更を反映するためにコンテナーイメージを更新して再構築する必要があります。これにより、パイプラインがトリガーされたときにパイプラインタスクが適切に実行されるようになります。
コンテナーイメージの再構築には、次の手順が含まれます。
-
podman
を実行して既存のパイプラインファイルを抽出。 - 要件に応じてパイプラインタスクをカスタマイズ。
- コンテナーイメージを再構築。
- 更新されたイメージをコンテナーレジストリーにプッシュします。
前提条件
変更を行う前に、次の点を確認してください。
-
システムに
podman
がインストールされている。 - 更新したイメージをプッシュするための Quay.io へのログイン認証情報がある。
- サンプルテンプレート リポジトリーをフォークしてクローンした。
- フォークしたリポジトリーは最新であり、アップストリームリポジトリーと同期済みである。
手順
ビルドリソース用のディレクトリーを作成します。ディレクトリーの場所は、ロールに応じて異なります。
-
プラットフォームエンジニア: 組織のデフォルトパイプラインを更新するためにイメージを再構築する場合は、
tssc-sample-templates
リポジトリーをフォークした場所内にディレクトリーを作成できます。たとえば、rebuild-image
です。 -
開発者: 自分自身の使用または特定のプロジェクト用にイメージを再構築する場合は、競合を避けるために、
tssc-sample-templates
の組織全体のフォークの外部の場所にディレクトリーを作成してください。
mkdir rebuild-image
mkdir rebuild-image
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
プラットフォームエンジニア: 組織のデフォルトパイプラインを更新するためにイメージを再構築する場合は、
次のコマンドを実行し、コンテナーの
image
の URL をコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、既存のパイプラインのコンテンツをローカルにコピーします。
podman run -v $(pwd):/pwd:z <The_url_you_copied_in_step_2> cp -r /work/rhtap /pwd
podman run -v $(pwd):/pwd:z <The_url_you_copied_in_step_2> cp -r /work/rhtap /pwd
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このコマンドは、
<the_url_you_copied_in_step_2>
イメージを使用してコンテナーを起動します。次に、コンテナー内の /work/rhtap からパイプラインファイルを作業ディレクトリー ($(pwd)) にコピーします。さらに、SELinux が有効になっているシステム (Fedora、RHEL、CentOS など) を使用していない場合は、互換性を確保するためにコマンドの:z
オプションを削除してください。
-
rhtap
ディレクトリーに移動し、必要に応じてパイプラインタスクをカスタマイズします。 rebuild-image
ディレクトリーにDockerfile
を作成し、次のコンテンツを追加してコンテナーに変更を含めます。さらに、registry.access.redhat.com/rhtap-task-runner/rhtap-task-runner-rhel9:1.5
のベースイメージは、軽量の Universal Base Image (UBI) を提供するubi/ubi-minimal
上に構築されます。追加のソフトウェアと依存関係をインストールする必要がある場合は、microdnf
を使用します。コマンドの例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドで新しいコンテナーイメージをビルドします。
podman build -f Dockerfile -t quay.io/<namespace>/<new_image_name>
podman build -f Dockerfile -t quay.io/<namespace>/<new_image_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
-f Dockerfile
は、コンテナーイメージのビルドに使用する Dockerfile を指定します。-f
フラグを使用すると、Dockerfile の名前がDockerfile
でない場合や別のディレクトリーにある場合に、Dockerfile を明示的に指定できます。-t quay.io/<namespace>/<new_image_name>
は、コンテナーイメージを簡単に識別できるようにタグ (名前) を割り当てます。
Quay.io にログインし、更新されたイメージをプッシュします。
podman login quay.io # Enter username and password podman push quay.io/<namespace>/<new_image_name>
podman login quay.io # Enter username and password podman push quay.io/<namespace>/<new_image_name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- これにより、カスタマイズされたコンテナーイメージが Quay.io にアップロードされ、GitLab パイプラインで使用できるようになります。
プラットフォームエンジニアのみ: tssc-sample-templates > skeleton > ci > source-repo > gitlabci >
.gitlab-ci.yml
ファイルに移動し、コンテナーイメージの URL を、先ほど作成した URL に置き換えます。これにより、新しいコンテナーイメージがデフォルトになります。image: quay.io/<namespace>/<new_image_name>
image: quay.io/<namespace>/<new_image_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 開発者専用: GitLab 内の単一のリポジトリーのコンテナーイメージを更新するには、以下の作業を行います。
-
ソースリポジトリー >
.gitlab-ci.yaml
に移動し、コンテナーイメージの URL を先ほど作成した URL に置き換えます。
image: quay.io/<namespace>/<new_image_name>
image: quay.io/<namespace>/<new_image_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ソースリポジトリー >
- 変更をコミットしてプッシュし、更新されたパイプライン設定を適用します。