如何使用 Google 工作流检索 Cloud 运行 服务的 URL?
How to retrieve the URL of a Cloud Run service with Google Workflow?
我习惯于使用 CI / CD 架构在云 运行 上进行部署。每次部署发生时,我都必须手动检索通过电子邮件发送给员工的 URL。我的目标是使用 Google 工作流自动执行此任务。如何使用 Google 工作流检索新服务的 URL 或云 运行 服务的标签?
这可以使用 gcloud
CLI 轻松完成,但是目前 Cloud Workflows 步骤中不支持该操作。目前您唯一的选择是使用 Get Service REST API 端点。
这是一个例子:
TOKEN="$(gcloud auth print-access-token -q)"
curl -H "Authorization: Bearer $TOKEN" \
https://us-central1-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/PROJECT_ID/services/SERVICE_NAME?alt=json
在上面的示例中,请注意 us-central1
是区域并将 PROJECT_ID
和 SERVICE_NAME
替换为您的区域。
响应将有一个 JSON 文档,其 status.address.url
将包含您的云 运行 服务的 https://[...].run.app
URL。
专业提示:要了解 REST API 调用 gcloud
命令的作用(例如 gcloud run services describe
),请添加 --log-http
选项。
将此returns 放在一起URL 云运行 服务
- initialize:
assign:
- project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_NUMBER")}
- zone: us-central1
- service: service
- getCloudRunDetails:
call: http.get
args:
url: ${"https://"+zone+"-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/"+project+"/services/"+service+"?alt=json"}
auth:
type: OAuth2
result: bitresult
- returnResult:
return: ${bitresult.body.status.address.url}
预期输出是:
argument: 'null'
endTime: '2020-11-19T23:05:18.232772542Z'
name: projects/<edited>describeCloudRun/executions/<edited>
result: '"https://<edited>uc.a.run.app"'
startTime: '2020-11-19T23:05:17.769640039Z'
state: SUCCEEDED
workflowRevisionId: 000020-b11
您的值在 result
键中。
Google 现在提供内置工作流连接器,including one for Cloud Run service。
根据服务名称获取云 运行 URL 可以按如下方式完成:
main:
steps:
- initialize:
assign:
- project_number: ${sys.get_env("GOOGLE_CLOUD_PROJECT_NUMBER")}
- cloud_run_location: europe-west2
- cloud_run_service_name: my-service-name
- get_cloud_run_details:
call: googleapis.run.v1.namespaces.services.get
args:
name: ${"namespaces/" + project_number + "/services/" + cloud_run_service_name}
location: ${cloud_run_location}
result: service_obj
- assign_vars:
assign:
- service_url: ${service_obj.status.address.url}
我习惯于使用 CI / CD 架构在云 运行 上进行部署。每次部署发生时,我都必须手动检索通过电子邮件发送给员工的 URL。我的目标是使用 Google 工作流自动执行此任务。如何使用 Google 工作流检索新服务的 URL 或云 运行 服务的标签?
这可以使用 gcloud
CLI 轻松完成,但是目前 Cloud Workflows 步骤中不支持该操作。目前您唯一的选择是使用 Get Service REST API 端点。
这是一个例子:
TOKEN="$(gcloud auth print-access-token -q)"
curl -H "Authorization: Bearer $TOKEN" \
https://us-central1-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/PROJECT_ID/services/SERVICE_NAME?alt=json
在上面的示例中,请注意 us-central1
是区域并将 PROJECT_ID
和 SERVICE_NAME
替换为您的区域。
响应将有一个 JSON 文档,其 status.address.url
将包含您的云 运行 服务的 https://[...].run.app
URL。
专业提示:要了解 REST API 调用 gcloud
命令的作用(例如 gcloud run services describe
),请添加 --log-http
选项。
将此returns 放在一起URL 云运行 服务
- initialize:
assign:
- project: ${sys.get_env("GOOGLE_CLOUD_PROJECT_NUMBER")}
- zone: us-central1
- service: service
- getCloudRunDetails:
call: http.get
args:
url: ${"https://"+zone+"-run.googleapis.com/apis/serving.knative.dev/v1/namespaces/"+project+"/services/"+service+"?alt=json"}
auth:
type: OAuth2
result: bitresult
- returnResult:
return: ${bitresult.body.status.address.url}
预期输出是:
argument: 'null'
endTime: '2020-11-19T23:05:18.232772542Z'
name: projects/<edited>describeCloudRun/executions/<edited>
result: '"https://<edited>uc.a.run.app"'
startTime: '2020-11-19T23:05:17.769640039Z'
state: SUCCEEDED
workflowRevisionId: 000020-b11
您的值在 result
键中。
Google 现在提供内置工作流连接器,including one for Cloud Run service。
根据服务名称获取云 运行 URL 可以按如下方式完成:
main:
steps:
- initialize:
assign:
- project_number: ${sys.get_env("GOOGLE_CLOUD_PROJECT_NUMBER")}
- cloud_run_location: europe-west2
- cloud_run_service_name: my-service-name
- get_cloud_run_details:
call: googleapis.run.v1.namespaces.services.get
args:
name: ${"namespaces/" + project_number + "/services/" + cloud_run_service_name}
location: ${cloud_run_location}
result: service_obj
- assign_vars:
assign:
- service_url: ${service_obj.status.address.url}