Help us learn about your current experience with the documentation. Take the survey.

教程:创建用于推送至 Google Artifact Registry 的 GitLab pipeline

学习如何将 GitLab 连接到 Google Cloud,并使用 Compute Engine 上的 runners 创建 GitLab pipeline,将镜像推送到 Artifact Registry。

开始之前

  1. 要运行本页面的命令,请在以下开发环境中设置 gcloud CLI:

  2. 创建或选择一个 Google Cloud 项目。

    如果您不打算保留在此过程中创建的资源,请创建一个新的 Google Cloud 项目,而不是选择现有项目。完成这些步骤后,您可以删除该项目,从而删除与该项目关联的所有资源。

    要创建 Google Cloud 项目,请运行以下命令:

    gcloud projects create PROJECT_ID

    PROJECT_ID 替换为您正在创建的 Google Cloud 项目的名称。

  3. 选择您创建的 Google Cloud 项目:

    gcloud config set project PROJECT_ID

    PROJECT_ID 替换为您的 Google Cloud 项目名称。

  4. 确保为您的 Google Cloud 项目启用了计费

  5. 启用 Compute Engine 和 Artifact Registry API:

    gcloud services enable compute.googleapis.com artifactregistry.googleapis.com
  6. 按照 Google Cloud Workload Identity Federation 和 IAM 策略 中的说明设置 GitLab on Google Cloud 集成。

  7. 创建标准模式 Docker 格式的 Artifact Registry 仓库

  8. 按照 在 GitLab 项目中设置 Google Artifact Registry 中的说明,将您的 Artifact Registry 仓库连接到 GitLab 项目。

克隆您的 GitLab 仓库

  1. 要使用 SSH 或 HTTPS 将您的 GitLab 仓库克隆到工作环境,请按照 将 Git 仓库克隆到本地计算机 中的说明操作。

  2. 如果您在本地 shell 中工作,安装 Terraform。Cloud Shell 中已安装 Terraform。

创建 Dockerfile

  1. 在您的克隆仓库中,创建一个名为 Dockerfile 的新文件。

  2. 将以下内容复制并粘贴到您的 Dockerfile 中。

    # 用于测试目的的 Dockerfile。每次构建都会生成一个新的随机镜像。
    FROM alpine:3.15.11
    RUN dd if=/dev/urandom of=random bs=10 count=1
  3. 将您的 Dockerfile 添加到 Git,提交并推送到您的 GitLab 仓库。

    git add Dockerfile
    git commit -m "add dockerfile"
    git push

    系统会提示您输入用户名和 personal access token

Dockerfile 每次构建都会生成一个新的随机镜像,仅用于测试目的。

在 Google Compute Engine 上启用持续集成 (CI) runners

GitLab Runner 是一个与 GitLab CI/CD 协作以在 pipeline 中运行作业的应用程序。GitLab on Google Cloud 集成帮助您在 Compute Engine 上设置一个自动扩展的 runners 集群,其中包含一个 runner 管理器,该管理器会创建临时的 runners 来同时执行多个作业。

要设置您的自动扩展 runners 集群,请按照 在 Google Cloud 上设置 GitLab Runner 以执行您的 CI/CD 作业 中的说明操作。选择 Google Cloud 作为您希望 runners 执行 CI/CD 作业的环境,并填写其余的配置详细信息。

输入您的 runners 详细信息后,您可以按照设置说明配置您的 Google Cloud 项目,安装和注册 GitLab Runner,并在您的工作环境中应用提供的 terraform 以应用配置。

创建 pipeline

创建一个 pipeline,构建您的 Docker 镜像,将其推送到 GitLab 容器注册表,并将镜像复制到 Google Artifact Registry。

  1. 在您的 GitLab 项目中,创建一个 .gitlab-ci.yml 文件

  2. 要创建一个 pipeline,构建您的镜像,将其推送到 GitLab 容器注册表,并将其复制到 Google Artifact Registry,请修改您的 .gitlab-ci.yml 文件内容,使其类似于以下内容。

    在示例中,替换以下内容:

    • LOCATION:您创建 Google Artifact Registry 仓库的 Google Cloud 区域。
    • PROJECT:您的 Google Cloud 项目 ID。
    • REPOSITORY:您的 Google Artifact Registry 仓库的仓库 ID。
    stages:
      - build
      - deploy
    
    variables:
      GITLAB_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
    
    build-sample-image:
      image: docker:24.0.5
      stage: build
      services:
        - docker:24.0.5-dind
      before_script:
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
      script:
        - docker build -t $GITLAB_IMAGE .
        - docker push $GITLAB_IMAGE
    
    include:
      - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@0.1.0
        inputs:
          stage: deploy
          source: $GITLAB_IMAGE
          target: LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/image:v1.0.0

该 pipeline 使用 Docker in Docker 构建 docker:24.0.5 镜像,将其存储在 GitLab 容器注册表中,然后使用 Google Artifact Registry GitLab component 将其推送到您的 Google Artifact Registry 仓库,版本为 v1.0.0

查看您的 artifacts

要在 GitLab 中查看您的 artifact:

  1. 在您的 GitLab 项目中,在左侧边栏中,选择 Build > Artifacts
  2. 选择 artifact 的名称以查看构建的详细信息。

要在 Google Artifact Registry 中查看您的 artifact:

  1. 在 Google Cloud 控制台中打开 Repositories 页面
  2. 选择您的链接仓库的名称。
  3. 选择镜像的名称以查看版本名称和标签。
  4. 选择镜像版本的名称以查看该版本的构建、拉取和清单信息。

清理

为了避免因使用本页面资源而对您的 Google Cloud 账户产生费用,您可以删除您的 Google Cloud 项目。如果您想保留您的项目,可以删除您的 Google Artifact Registry 仓库。

有关 GitLab 和 Google Artifact Registry 定价及项目管理的更多信息,请参阅以下资源:

删除您的 Google Artifact Registry 仓库

如果您想保留您的 Google Cloud 项目,只删除 Google Artifact Registry 仓库资源,请按照本部分的步骤操作。如果您想删除整个 Google Cloud 项目,请按照 删除您的项目 中的步骤操作。

在删除仓库之前,请确保您要保留的任何镜像都已在其他位置可用。

要删除您的仓库,请运行以下命令:

gcloud artifacts repositories delete REPOSITORY \
    --location=LOCATION

替换以下内容:

  • REPOSITORY 替换为您的 Google Artifact Registry 仓库 ID
  • LOCATION 替换为您仓库的位置

删除您的 Google Cloud 项目

注意:删除项目会产生以下影响:

  • 项目中的所有内容都将被删除。如果您使用现有项目执行本文档中的任务,当您删除该项目时,也会删除您在该项目中完成的任何其他工作。
  • 自定义项目 ID 将丢失。当您创建此项目时,您可能创建了一个自定义项目 ID,希望将来使用它。为了保留使用项目 ID 的 URL(例如 appspot.com URL),请删除项目内的选定资源,而不是删除整个项目。

如果您计划探索 Google Cloud 上的多种架构、教程或快速入门教程,重用项目可以帮助您避免超出项目配额限制。

  1. 在 Google Cloud 控制台中,转到 管理资源 页面
  2. 在项目列表中,选择您要删除的项目,然后选择 Delete
  3. 在对话框中,输入项目 ID,然后选择 Shut down 以删除项目。

相关主题