连接到 GitHub 代码库 (original) (raw)

本页介绍了如何将 GitHub 代码库连接到 Cloud Build。如需详细了解 Cloud Build 仓库,请参阅 Cloud Build 仓库

准备工作

连接到 GitHub 托管服务器

控制台

如需将 GitHub 代码库连接到 Cloud Build,请执行以下操作:

  1. 在 Google Cloud 控制台中打开制品库页面。
    打开“代码库”页面
    您会看到代码库页面。
  2. 在顶部栏的项目选择器中,选择您的 Google Cloud 项目。
  3. 在页面顶部,选择第 2 代标签页。
  4. 点击创建主机连接,将新主机连接到 Cloud Build。
  5. 在左侧面板中,选择 GitHub 作为源代码提供方。
  6. 配置连接部分中,输入以下信息:
    1. 区域:为您的连接选择区域。
    2. 名称:输入连接的名称。
  7. 点击连接
    点击连接按钮后,系统会要求您授权 Cloud Build GitHub 应用访问您的 GitHub 账号。您可以随时从主机上卸载或删除该应用来撤消对该应用的访问权限。
    Cloud Build 会请求授权您的 GitHub 用户账号,并将生成的授权令牌作为 Secret Manager 中的密钥存储在项目中。授权令牌用于验证您的用户账号是否有权安装 Cloud Build GitHub 应用以及访问关联的代码库。Cloud Build Service Agent 账号 (service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com) 用于访问您的 Secret。如需查看您的 Secret,请参阅列出 Secret 并查看 Secret 详情
    授权 Cloud Build GitHub 应用后,您会被重定向到 Cloud Build 的代码库页面。

gcloud

如需使用 gcloud 连接 GitHub 主机,请完成以下步骤:

  1. 输入以下命令以发起与 GitHub 代码库的连接:
 gcloud builds connections create github CONNECTION_NAME --region=REGION  

其中:

  1. 登录您的 github.com 账号。
  2. 点击相应链接,授权 Cloud Build GitHub 应用。
    授权应用后,Cloud Build 会将身份验证令牌作为 Secret 存储在项目的 Secret Manager 中。 Google Cloud您可以在 Secret Manager 页面上查看 Secret。
  3. 请登录您的账号或您拥有的组织账号来安装 Cloud Build GitHub 应用。
    使用您的 GitHub 账号授权安装,并在出现提示时选择代码库权限。
  4. 运行以下命令,验证 GitHub 关联的安装情况:
 gcloud builds connections describe CONNECTION_NAME --region=REGION  

其中:

以程序化方式连接到 GitHub 主机

Terraform

您可以使用 Google Terraform 提供程序,按照以下步骤将 GitHub 主机连接到 Cloud Build:

  1. 在您的 GitHub 账号或您拥有的组织账号中安装 Cloud Build GitHub 应用
  2. 创建个人访问令牌
    请务必将令牌设置为无到期日期,并在 GitHub 中出现提示时选择以下权限:reporead:user。如果您的应用安装在组织中,请务必也选择 read:org 权限。
    生成个人访问令牌后,请将生成的令牌保存在安全的位置。您将在后续步骤中使用生成的令牌。

在以下示例中,代码段会执行以下操作:

// Configure the terraform google provider  
terraform {  
  required_providers {  
    google = {}  
   }  
}  
// Create a secret containing the personal access token and grant permissions to the Service Agent  
resource "google_secret_manager_secret" "github_token_secret" {  
    project = PROJECT_ID  
    secret_id = SECRET_ID  
    replication {  
        auto {}  
    }  
}  
resource "google_secret_manager_secret_version" "github_token_secret_version" {  
    secret = google_secret_manager_secret.github_token_secret.id  
    secret_data = GITHUB_PAT  
}  
data "google_iam_policy" "serviceagent_secretAccessor" {  
    binding {  
        role = "roles/secretmanager.secretAccessor"  
        members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"]  
    }  
}  
resource "google_secret_manager_secret_iam_policy" "policy" {  
  project = google_secret_manager_secret.github_token_secret.project  
  secret_id = google_secret_manager_secret.github_token_secret.secret_id  
  policy_data = data.google_iam_policy.serviceagent_secretAccessor.policy_data  
}  
// Create the GitHub connection  
resource "google_cloudbuildv2_connection" "my_connection" {  
    project = PROJECT_ID  
    location = REGION  
    name = CONNECTION_NAME  
    github_config {  
        app_installation_id = INSTALLATION_ID  
        authorizer_credential {  
            oauth_token_secret_version = google_secret_manager_secret_version.github_token_secret_version.id  
        }  
    }  
    depends_on = [google_secret_manager_secret_iam_policy.policy]  
}  

其中:

gcloud

如需使用上次连接时获取的现有令牌和安装 ID 连接 GitHub 主机,请完成以下步骤:

  1. 在您的 GitHub 账号或您拥有的组织账号中安装 Cloud Build GitHub 应用
  2. 创建个人访问令牌
    请务必将令牌设置为无到期日期,并在 GitHub 中出现提示时选择以下权限:reporead:user。如果您的应用安装在组织中,请务必也选择 read:org 权限。
    生成个人访问令牌后,请将生成的令牌保存在安全的位置。您将在后续步骤中使用生成的令牌。
  3. 运行以下命令,将令牌存储在 Google Cloud 项目的 Secret Manager 中:
    echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-  

其中:

  1. 向 Cloud Build 服务代理授予对 Secret 的访问权限,其中 SECRET_NAME 是 Secret Manager 中存储的 Secret 的名称:
  PROJECT_ID=$(gcloud config list --format="value(core.project)")  
  PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")  
  CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com"  
  gcloud secrets add-iam-policy-binding SECRET_NAME \  
    --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \  
    --role="roles/secretmanager.secretAccessor"  
  1. 创建 GitHub 连接:
  gcloud builds connections create github CONNECTION_NAME \  
    --authorizer-token-secret-version=projects/PROJECT_ID/secrets/SECRET_NAME/versions/1  \  
    --app-installation-id=INSTALLATION_ID --region=REGION  

其中:

关联 GitHub 代码库

控制台

如需将 GitHub 代码库连接到主机连接,请完成以下步骤:

  1. 在 Google Cloud 控制台中打开制品库页面。
    打开“代码库”页面
    您会看到代码库页面。
  2. 在页面顶部,选择第 2 代标签页。
  3. 点击关联代码库,关联您关联的代码库。
    您会看到关联代码库面板。
  4. Connect Repositories 面板中,输入以下信息:
    1. 连接:从下拉菜单中选择一个连接。
    2. 代码库:选择要关联到您的连接的代码库。
    3. 代码库名称:输入代码库的名称。
      1. Generated:为 Cloud Build 选择此选项后,Cloud Build 会代表您自动为所选代码库生成代码库名称。
      2. 手动:选择此选项可手动为所选代码库指定名称。
        如果您选择手动,则可以在代码库名称部分修改所选代码库的名称。
  5. 点击关联,将代码库与关联相关联。

gcloud

如需向连接中添加 GitHub 代码库,请输入以下命令:

   gcloud builds repositories create REPO_NAME \
     --remote-uri=REPO_URI \
     --connection=CONNECTION_NAME --region=REGION

其中:

Terraform

如需向关联添加 GitHub 代码库,请将以下代码段添加到 Terraform 配置中:

    resource "google_cloudbuildv2_repository" "my_repository" {
      project = "PROJECT_ID"
      location = "REGION"
      name = "REPO_NAME"
      parent_connection = google_cloudbuildv2_connection.my_connection.name
      remote_uri = "URI"
  }

其中:

后续步骤