第3章 GitLab パイプラインのカスタマイズとコンテナーイメージの再構築


GitLab でパイプラインをカスタマイズする場合、コンテナーイメージを再構築することは、更新されたワークフローに変更が確実に含まれるようにするための重要なステップです。

GitLab のパイプラインは、GitLab ランナーイメージなどの特定のコンテナーイメージに依存して、CI/CD ワークフローで定義されたタスクを実行します。GitLab ランナーイメージは、パイプラインの実行に必要なツール、設定、スクリプトを提供します。パイプライン内のタスクを変更する場合は、その変更を反映するためにコンテナーイメージを更新して再構築する必要があります。これにより、パイプラインがトリガーされたときにパイプラインタスクが適切に実行されるようになります。

コンテナーイメージの再構築には、次の手順が含まれます。

  • podman を実行して既存のパイプラインファイルを抽出。
  • 要件に応じてパイプラインタスクをカスタマイズ。
  • コンテナーイメージを再構築。
  • 更新されたイメージをコンテナーレジストリーにプッシュします。

前提条件

変更を行う前に、次の点を確認してください。

  • システムに podman がインストールされている。
  • 更新したイメージをプッシュするための Quay.io へのログイン認証情報がある。
  • サンプルテンプレート リポジトリーをフォークしてクローンした。
  • フォークしたリポジトリーは最新であり、アップストリームリポジトリーと同期済みである。

手順

  1. ビルドリソース用のディレクトリーを作成します。ディレクトリーの場所は、ロールに応じて異なります。

    • プラットフォームエンジニア: 組織のデフォルトパイプラインを更新するためにイメージを再構築する場合は、tssc-sample-templates リポジトリーをフォークした場所内にディレクトリーを作成できます。たとえば、rebuild-image です。
    • 開発者: 自分自身の使用または特定のプロジェクト用にイメージを再構築する場合は、競合を避けるために、tssc-sample-templates の組織全体のフォークの外部の場所にディレクトリーを作成してください。
    mkdir rebuild-image
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行し、コンテナーの image の URL をコピーします。

    more ../tssc-sample-templates/skeleton/ci/source-repo/gitlabci/.gitlab-ci.yml
    
    # Example:
    ...
    image: registry.access.redhat.com/rhtap-task-runner/rhtap-task-runner-rhel9:1.5
    ...
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、既存のパイプラインのコンテンツをローカルにコピーします。

    podman run -v $(pwd):/pwd:z <The_url_you_copied_in_step_2> cp -r /work/rhtap /pwd 
    1
    Copy to Clipboard Toggle word wrap
    1
    このコマンドは、<the_url_you_copied_in_step_2> イメージを使用してコンテナーを起動します。次に、コンテナー内の /work/rhtap からパイプラインファイルを作業ディレクトリー ($(pwd)) にコピーします。さらに、SELinux が有効になっているシステム (Fedora、RHEL、CentOS など) を使用していない場合は、互換性を確保するためにコマンドの :z オプションを削除してください。
  4. rhtap ディレクトリーに移動し、必要に応じてパイプラインタスクをカスタマイズします。
  5. rebuild-image ディレクトリーに Dockerfile を作成し、次のコンテンツを追加してコンテナーに変更を含めます。さらに、registry.access.redhat.com/rhtap-task-runner/rhtap-task-runner-rhel9:1.5 のベースイメージは、軽量の Universal Base Image (UBI) を提供する ubi/ubi-minimal 上に構築されます。追加のソフトウェアと依存関係をインストールする必要がある場合は、microdnf を使用します。コマンドの例:

    FROM registry.access.redhat.com/rhtap-task-runner/rhtap-task-runner-rhel9:1.5 
    1
    
    
    #Copy the updated pipeline tasks
    
    COPY ./rhtap /work/rhtap 
    2
    
    
    # Example: Install additional software (for example, git)
    RUN microdnf -y install make 
    3
    Copy to Clipboard Toggle word wrap
    1
    既存の rhtap-runner コンテナーを開始点として使用します。
    2
    更新されたパイプラインタスクをローカル rhtap フォルダーからコンテナー内の /work/rhtap ディレクトリーにコピーします。
    3
    microdnf を使用して追加のソフトウェアまたは依存関係をインストールする方法を示します。
  6. 次のコマンドで新しいコンテナーイメージをビルドします。

    podman build -f Dockerfile -t quay.io/<namespace>/<new_image_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    -f Dockerfile は、コンテナーイメージのビルドに使用する Dockerfile を指定します。-f フラグを使用すると、Dockerfile の名前が Dockerfile でない場合や別のディレクトリーにある場合に、Dockerfile を明示的に指定できます。-t quay.io/<namespace>/<new_image_name> は、コンテナーイメージを簡単に識別できるようにタグ (名前) を割り当てます。
  7. Quay.io にログインし、更新されたイメージをプッシュします。

    podman login quay.io
    
    # Enter username and password
    
    podman push quay.io/<namespace>/<new_image_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    これにより、カスタマイズされたコンテナーイメージが Quay.io にアップロードされ、GitLab パイプラインで使用できるようになります。
  8. プラットフォームエンジニアのみ: tssc-sample-templates > skeleton > ci > source-repo > gitlabci > .gitlab-ci.yml ファイルに移動し、コンテナーイメージの URL を、先ほど作成した URL に置き換えます。これにより、新しいコンテナーイメージがデフォルトになります。

    image: quay.io/<namespace>/<new_image_name>
    Copy to Clipboard Toggle word wrap
  9. 開発者専用: GitLab 内の単一のリポジトリーのコンテナーイメージを更新するには、以下の作業を行います。

    1. ソースリポジトリー > .gitlab-ci.yaml に移動し、コンテナーイメージの URL を先ほど作成した URL に置き換えます。
    image: quay.io/<namespace>/<new_image_name>
    Copy to Clipboard Toggle word wrap
  10. 変更をコミットしてプッシュし、更新されたパイプライン設定を適用します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat