第 3 章 自定义 GitLab 管道并重建容器镜像


在 GitLab 中自定义管道时,重建容器镜像是一个关键步骤,可确保您的更改包含在更新的工作流中。

GitLab 中的管道依赖于特定的容器镜像,如 GitLab 运行程序镜像,以执行 CI/CD 工作流中定义的任务。GitLab 运行程序镜像提供运行管道所需的必要工具、配置和脚本。如果修改管道中的任务,您必须更新并重建容器镜像,使其包含这些更改。这样可确保在触发管道时正确执行管道任务。

重建容器镜像涉及以下步骤:

  • 运行 podman 以提取现有的管道文件。
  • 根据您的要求自定义管道任务。
  • 重建容器镜像。
  • 将更新的镜像推送到容器 registry。

先决条件

  • 必须在您的系统上安装了 podman
  • 您必须具有 Quay.io 的登录凭证,才能推送更新的镜像。
  • 您必须已分叉并在本地克隆 Sample 模板
  • 您必须确保 fork 的版本为最新版本,并与上游存储库同步。

流程

  1. 为构建资源创建一个目录。目录的位置取决于您的角色:

    • 平台工程师: 如果您要重建镜像以更新机构的默认管道,您可以在 fork tssc-sample-templates 存储库的位置创建该目录。例如,重新构建
    • 开发人员: 如果您要为自己的使用或特定项目重建镜像,请在 tssc-sample-templates 机构范围内分叉之外的位置创建一个目录以避免冲突。
    mkdir rebuild-image
  2. 运行以下命令并复制 容器镜像 URL:

    more ../tssc-sample-templates/skeleton/ci/source-repo/gitlabci/.gitlab-ci.yml
    
    # Example:
    ...
    image: quay.io/redhat-appstudio/rhtap-task-runner:latest
    ...
  3. 运行以下命令在本地复制现有管道内容:

    podman run -v $(pwd):/pwd:z <The_url_you_copied_in_step_2> cp -r /work/rhtap /pwd 1
    1
    此命令使用 < the_url_you_copied_in_step_2> 镜像启动容器。然后,它会将容器内的 /work/rhtap 中的管道文件复制到工作目录中($(pwd)。另外,如果您不在启用了 SELinux 的系统上(如 Fedora、RHEL、pr CentOS),请删除命令中的 :z 选项以确保兼容性。
  4. 导航到 rhtap 目录,并根据需要自定义管道任务。
  5. rebuild-image 目录中创建 Dockerfile,并添加以下内容来在容器中包含您的更改:另外,基础镜像 quay.io/redhat-app Studio/rhtap-task-runner:latest 基于 ubi/ubi-minimal,它提供了一个轻量级通用基础镜像(UBI)。如果您需要安装其他软件和依赖项,请使用 microdnf。一个命令示例:

    FROM quay.io/redhat-appstudio/rhtap-task-runner:latest 1
    
    #Copy the updated pipeline tasks
    
    COPY ./rhtap /work/rhtap 2
    
    # Example: Install additional software (for example, git)
    RUN microdnf -y install make 3
    1
    使用现有的 rhtap-runner 容器作为起点。
    2
    将本地 rhtap 文件夹中的更新的管道任务复制到容器内的 /work/rhtap 目录中。
    3
    演示使用 microdnf 来安装其他软件或依赖项。
  6. 使用以下命令构建新容器镜像:

    podman build -f Dockerfile -t quay.io/<namespace>/<new_image_name> 1
    1
    -f Dockerfile 指定用于构建容器镜像的 Dockerfile。如果 Dockerfile 没有被命名或位于其他目录中,可以使用 -f 标志明确指向 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
    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>
  9. 仅限开发人员:为 GitLab 中的单个存储库更新容器镜像:

    1. 导航到源存储库 > .gitlab-ci.yaml,并将容器镜像 URL 替换为您刚才创建的镜像 URL。
    image: quay.io/<namespace>/<new_image_name>
  10. 提交并推送更改以应用更新的管道配置。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.