【问题标题】:Make a curl request in Cloud Build CI/CD pipeline在 Cloud Build CI/CD 管道中发出 curl 请求
【发布时间】:2019-10-26 11:28:42
【问题描述】:

我有一个服务器,我们的测试用例在其中运行所有 API,它位于 GCP 的计算引擎上。如何从云构建 CI/CD 管道连接它,以便 CI/CD 阶段仅传递来自服务器的 200 响应状态代码?

GCP 说要创建一个自定义构建步骤 (here)。文档不是很清楚

【问题讨论】:

    标签: google-cloud-platform continuous-integration google-cloud-build


    【解决方案1】:

    您有 2 个解决方案。

    • 您可以有效地创建自定义步骤。构建一个容器,通过 ENTRYPOINT 完成它,它将在 Cloud Build 管道中调用
    • 您可以在包含命令的任何步骤中执行 curl 调用,获取返回码并对其应用条件(如果与 200 不同,则在此处退出)。这里是代码示例
    steps:
            - name: gcr.io/cloud-builders/gcloud
              entrypoint: "bash"
              args:
                      - "-c"
                      - |
                          RESPONSE=$(curl -i <YOUR URL> | grep HTTP | cut -d' ' -f2)
                          if [ "200" != "$$RESPONSE" ]; then exit 1; fi
    

    注意双重 $$ 以防止 Cloud Build 查看替换变量

    【讨论】:

    • 谢谢!我看到了类似 gcr.io/cloud-builders/curl 的东西。我可以使用 /curl 代替 gcr.io/cloud-builders/gcloud 吗?两者有什么区别?如果我可以使用 gcr.io/cloud-builders/curl,那么执行上述任务的命令会是什么样子?
    • @DarshanNaik 您可以在 Github 存储库 here 上找到一个示例。关于差异,它们是不同的图像并使用不同的论点。查找有关gcr.io/cloud-builders/gcloud 图像here 的所有信息。
    • 区别在于 ENTRYPOINT 和安装在映像上的包,您可以将步骤名称替换为 gcr.io/cloud-builders/curl,但您必须保留入口点。实际上,如果您直接使用 curl 图像,您将执行一元调用。在这里,您需要执行调用并测试 HTTP 响应。因此,您需要一个脚本,从而将 bash 作为入口点
    • 谢谢,我在使用 curl 请求构建后使用它来清除 cloudflare 缓存.. 谢谢!!
    • RESPONSE=$(curl -o /dev/null -s -w "%{http_code}" ) 将返回状态码 - 不需要 grep 和 cut
    猜你喜欢
    • 2021-11-30
    • 2022-01-07
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多