在我的gitlab-ci文件中,我想使用命令curl
来获取页面的结果并验证其内容,但是我不知道如何使用它。
....................
server:check-quality:
<<: *all-settings
stage: check-quality
<<: *tags_definition
script:
- echo "APPEL de CURL"
- content=($curl http://example.com/sonar/api/qualitygates/project_status?projectKey=com.orange.catalog:feature-m752-conditionequals)
- echo "content"
- exit 0
only:
- develop
- /^feature.*$/
- /^hotfix.*$/
请问您有什么想法吗?
答案 0 :(得分:2)
在脚本中,您可以使用类似curl的方式
script:
- echo "APPEL de CURL"
- curl http://example.com/sonar/api/qualitygates/project_status?projectKey=com.orange.catalog:feature-m752-conditionequals
- echo "content"
- exit 0
答案 1 :(得分:0)
我不确定这是否可行;因为YAML解释器会吞噬各种特殊字符,例如该http中的:。经过数小时的努力,使其能够正常工作,这是我找到的解决方案。
- |
curl --fail --output "/dev/null" --silent --show-error --write-out "HTTP response: ${http_code}\n\n" \
--data "{\"tag_name\": \"${CI_COMMIT_TAG}\", \"name\": \"${CI_PROJECT_NAME} ${CI_COMMIT_TAG}\", \"description\": \"${CI_COMMIT_TAG_MESSAGE:-No release notes.}\"}" \
--header "Content-Type: application/json" \
--header "Private-Token: ${CI_PRIVATE_TOKEN}" \
--request POST \
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases"
此脚本将使用gitlab api生成一个发行版,因此比您的要求花哨得多。
请注意,CI_COMMIT_TAG_MESSAGE是我的变量,有望将其添加到GitLab中。
最大的问题是弄清楚所有需要转义的特殊字符。
另外,您交换了(和$在内容参数中;)
答案 2 :(得分:0)
我修改了一些解决方法和带有变量的 CURL,并使用以下脚本为我工作:
testing:
only:
- master
script:
- curl --request GET --header "Authorization:cpanel user:$CPANEL_API_TOKEN" "$CPANEL_URL/execute/VersionControl/update?repository_root=%2Fhome%2Ftesting%2Fpublic_html%2Ftesting.domain.com&branch=master"
答案 3 :(得分:0)
这是在 GitLab CI 中轻松使用 curl 的方法:
deploy:
stage: deploy
variables:
DEPLOY_CURL_COMMAND_BODY: "'{\"force_build\":true}'"
DEPLOY_CURL_COMMAND: 'curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $DO_APP_PLATFORM_API_TOKEN" --data $DEPLOY_CURL_COMMAND_BODY https://api.digitalocean.com/v2/apps/$DO_APP_PLATFORM_STAGE_FRONT_APP_ID/deployments'
script:
- echo "Stage Deploy to DigitalOcean App Platform"
- echo "$DO_APP_PLATFORM_API_TOKEN"
- echo "$DO_APP_PLATFORM_STAGE_FRONT_APP_ID"
- echo $DEPLOY_CURL_COMMAND
- 'eval "$DEPLOY_CURL_COMMAND"'
将命令的参数放在一个变量中。然后 eval
变量。请注意包装变量值和 eval
命令的单引号。他们是校长。
变量也使用外推的 repository level variables 来表示秘密。
请注意,GitLab YAML 不会抱怨 :
列符号。它抱怨 :
列后跟空格符号。所以上面的例子普遍适用于这两种情况。但是,当命令行中冒号后没有空格时,按照上面的@Mavichow 答案进行更简单的实现会很好。
注意,您还可以使用 curl body
参数,该参数需要包含在单个配额中。请注意,body
变量内容中的逗号后没有空格。