Mic*_*142 6 gitlab gitlab-ci gitlab-api
我尝试获取 .gitlab-ci.yaml 中某个 GitLab 项目的所有徽章,并按name找出某个徽章的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}
Run Code Online (Sandbox Code Playgroud)
当然,现在echo ${BADGES}将输出卷曲,因为我将其存储在变量的字符串中,但我不知道如何执行此操作。
在 JavaScript 中我会这样做:
const badges = ...CURL_RESPONSE...;
const versionBadge = badges.find(b => b.name === 'vBadge');
Run Code Online (Sandbox Code Playgroud)
这有可能吗?
要捕获调用的结果,curl您可以使用以下$(\xe2\x80\xa6)结构:
BADGES="$(curl \xe2\x80\xa6)"\nRun Code Online (Sandbox Code Playgroud)\n要在响应中选择特定的徽章 ID,您可以使用jq.
完整示例:
\nget_badge_id:\n image: alpine\n before_script:\n - apk add --no-cache curl jq\n script:\n - \'BADGE_ID="$(curl -s -H "PRIVATE-TOKEN: $GITLAB_API_TOKEN" $CI_API_V4_URL/projects/${CI_PROJECT_ID}/badges | jq ".[] | select(.name == \\"vBadge\\") | .id")"\'\n - echo BADGE_ID is $BADGE_ID\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
8836 次 |
| 最近记录: |