Gitlab CI/CD 如何在管道中捕获 curl 响应
Gitlab CI/CD how to catch curl response in pipline
我有 pipeline
启动一些 maven/java
应用程序,现在我想添加 test
阶段,我在其中检查应用程序是否成功启动,例如当构建阶段完成时,我检查 curl
,我的意思是 curl 127.0.0.1:8080
如果响应 200
ok ,否则失败。
如何使用 Gitlab pipline?
创建
stages:
- build
- deploy
- test
build:
stage: build
script:
- echo Build Stage 1
tags:
- java-run
deploy:
stage: deploy
tags:
- java-run
script:
- "some script"
test:
stage: test
tags:
- java-run
script:
我在这里围绕您的用例做了一些假设,如果它们不正确,请告诉我。我假设:
- 您正在远程启动 java 应用程序(即,您的管道正在将其部署到云提供商或 non-CI/CD 服务器)
- 您的服务器 运行正在 CI/CD 可以通过互联网访问该应用程序
如果是这样,假设您希望您的工作在服务不可访问时失败,您可以使用 -f
标志简单地 curl url,它将如果收到 404 错误,则失败。示例:
test:
image: alpine:latest
script:
- apk add curl
- curl -o /dev/null -s -w "%{http_code}\n" https://httpstat.us/404 -f
上面的作业将失败,因为 curl returns 在收到 >= 400 错误代码并使用 -f 标志时退出代码 22:
现在,如果您尝试 运行 您 CI/CD 中的应用程序(这就是您在问题中提到 127.0.0.1
的原因),那么您可以t 运行 该应用程序在一项工作中本地化,在另一项工作中进行测试。该作业将仅存在并且 运行 在 运行 容器的上下文中,而 test
位于单独的容器中,因为它是一个单独的作业。如果您尝试在 CI/CD 的上下文中 运行 您的应用程序并对其进行测试,您有两种选择:
- 您可以 运行 在启动应用程序的同一个作业中进行测试(您可能需要 运行 使用
nohup
的应用程序到 运行 它在背景)
- 您可以将您的应用程序打包到 docker 容器中,然后 运行 它作为
service
在您的测试作业中。
我有 pipeline
启动一些 maven/java
应用程序,现在我想添加 test
阶段,我在其中检查应用程序是否成功启动,例如当构建阶段完成时,我检查 curl
,我的意思是 curl 127.0.0.1:8080
如果响应 200
ok ,否则失败。
如何使用 Gitlab pipline?
stages:
- build
- deploy
- test
build:
stage: build
script:
- echo Build Stage 1
tags:
- java-run
deploy:
stage: deploy
tags:
- java-run
script:
- "some script"
test:
stage: test
tags:
- java-run
script:
我在这里围绕您的用例做了一些假设,如果它们不正确,请告诉我。我假设:
- 您正在远程启动 java 应用程序(即,您的管道正在将其部署到云提供商或 non-CI/CD 服务器)
- 您的服务器 运行正在 CI/CD 可以通过互联网访问该应用程序
如果是这样,假设您希望您的工作在服务不可访问时失败,您可以使用 -f
标志简单地 curl url,它将如果收到 404 错误,则失败。示例:
test:
image: alpine:latest
script:
- apk add curl
- curl -o /dev/null -s -w "%{http_code}\n" https://httpstat.us/404 -f
上面的作业将失败,因为 curl returns 在收到 >= 400 错误代码并使用 -f 标志时退出代码 22:
现在,如果您尝试 运行 您 CI/CD 中的应用程序(这就是您在问题中提到 127.0.0.1
的原因),那么您可以t 运行 该应用程序在一项工作中本地化,在另一项工作中进行测试。该作业将仅存在并且 运行 在 运行 容器的上下文中,而 test
位于单独的容器中,因为它是一个单独的作业。如果您尝试在 CI/CD 的上下文中 运行 您的应用程序并对其进行测试,您有两种选择:
- 您可以 运行 在启动应用程序的同一个作业中进行测试(您可能需要 运行 使用
nohup
的应用程序到 运行 它在背景) - 您可以将您的应用程序打包到 docker 容器中,然后 运行 它作为
service
在您的测试作业中。