在 GitLab CI 脚本中使用 CURL 响应
Use CURL response in GitLab CI Script
我尝试在.gitlab-ci.yaml中获取某个GitLab项目的所有徽章,并通过找出某个徽章的id姓名。我有以下脚本,我尝试用 curl 调用徽章 api 并将 json 结果存储在名为 BADGES:
的变量中
build-backend:
stage: build
script:
- BADGES='curl --header "PRIVATE-TOKEN:$GITLAB_API_TOKEN" "https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/badges"'
- echo ${BADGES}
当然现在 echo ${BADGES}
将输出卷曲,因为我将它存储在变量的 as 字符串中,但我不知道如何执行此操作。
在 JavaScript 我会这样做:
const badges = ...CURL_RESPONSE...;
const versionBadge = badges.find(b => b.name === 'vBadge');
这可能吗?
要捕获对 curl
的调用结果,您可以使用 $(…)
结构:
BADGES="$(curl …)"
要 select 响应中的特定徽章 ID,您可以使用 jq
。
完整示例:
get_badge_id:
image: alpine
before_script:
- apk add --no-cache curl jq
script:
- 'BADGE_ID="$(curl -s -H "PRIVATE-TOKEN: $GITLAB_API_TOKEN" $CI_API_V4_URL/projects/${CI_PROJECT_ID}/badges | jq ".[] | select(.name == \"vBadge\") | .id")"'
- echo BADGE_ID is $BADGE_ID
我尝试在.gitlab-ci.yaml中获取某个GitLab项目的所有徽章,并通过找出某个徽章的id姓名。我有以下脚本,我尝试用 curl 调用徽章 api 并将 json 结果存储在名为 BADGES:
的变量中build-backend:
stage: build
script:
- BADGES='curl --header "PRIVATE-TOKEN:$GITLAB_API_TOKEN" "https://gitlab.example.com/api/v4/projects/${CI_PROJECT_ID}/badges"'
- echo ${BADGES}
当然现在 echo ${BADGES}
将输出卷曲,因为我将它存储在变量的 as 字符串中,但我不知道如何执行此操作。
在 JavaScript 我会这样做:
const badges = ...CURL_RESPONSE...;
const versionBadge = badges.find(b => b.name === 'vBadge');
这可能吗?
要捕获对 curl
的调用结果,您可以使用 $(…)
结构:
BADGES="$(curl …)"
要 select 响应中的特定徽章 ID,您可以使用 jq
。
完整示例:
get_badge_id:
image: alpine
before_script:
- apk add --no-cache curl jq
script:
- 'BADGE_ID="$(curl -s -H "PRIVATE-TOKEN: $GITLAB_API_TOKEN" $CI_API_V4_URL/projects/${CI_PROJECT_ID}/badges | jq ".[] | select(.name == \"vBadge\") | .id")"'
- echo BADGE_ID is $BADGE_ID