Neb*_*tic 13

第一个选项是创建一个调度来触发构建:

gcloud scheduler jobs create http ${PROJECT_ID}-run-trigger \
    --schedule='0 12 * * *' \
    --uri=https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/triggers/${TRIGGER_ID}:run \
    --message-body='{\"branchName\": \"${BRANCH_NAME}\"}' \
    --oauth-service-account-email=${PROJECT_ID}@appspot.gserviceaccount.com \
    --oauth-token-scope=https://www.googleapis.com/auth/cloud-platform
Run Code Online (Sandbox Code Playgroud)

请注意,您几乎可以从云构建中运行它。PROJECT_ID 是项目名称,BRANCH_NAME 是分支名称(development、master 等)。两者都可以从您的云构建管道中获得。可以使用以下命令获取 TRIGGER_ID:

gcloud beta builds triggers list --format json
Run Code Online (Sandbox Code Playgroud)

除了branchName,您还可以在消息正文中指定其他属性,为您提供更大的灵活性:

  • 提交沙
  • 目录
  • 反转正则表达式
  • 项目编号
  • 仓库名称
  • 替换
  • 标签名称

第二种选择是按计划提交 cloudbuild:

gcloud scheduler jobs create http ${PROJECT_ID}-run-build \
    --schedule='0 12 * * *' \
    --uri=https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/builds \
    --message-body-from-file=cloudbuild.json \
    --message-body="{\"branchName\": \"${BRANCH_NAME}\"} \
    --oauth-service-account-email=${PROJECT_ID}@appspot.gserviceaccount.com \
    --oauth-token-scope=https://www.googleapis.com/auth/cloud-platform
Run Code Online (Sandbox Code Playgroud)

您的 cloudbuild.json 可能如下所示:

{
    "timeout": "60s",
    "steps": [
        {
            "name": "gcr.io/cloud-builders/gcloud",
            "entrypoint": "bash",
            "args": [
                "-c",
                "echo "Hello"
            ]
        },
        {
            "name": "gcr.io/cloud-builders/gcloud",
            "entrypoint": "bash",
            "args": [
                "-c",
                "echo "World"
            ]
        }
    ],
    "substitutions": {
        "BRANCH_NAME": "$BRANCH_NAME"
    }
}
Run Code Online (Sandbox Code Playgroud)


Har*_*own 8

在 Cloud Scheduler 中,我们对项目的构建触发器执行 HTTP 请求:https : //cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers/run

对于身份验证,我们使用服务帐户。