我的管道中只有这两项工作。第二个应该检索所有以前作业的列表。
stages:
- build
- test
build:
stage: build
script:
- echo "build"
test_job:
image: bash:latest
stage: test
script:
- apk add curl
- |
curl --header "Job-Token: $CI_JOB_TOKEN" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/pipelines/${CI_PIPELINE_ID}/jobs"
我的问题是第二个作业返回 404。
{
"message": "404 Project Not Found"
}
这一定是因为授权问题,因为该项目确实存在。不过,我正在尝试通过 API 从项目本身访问该项目,并根据 docs:
“默认情况下,任何项目的白名单仅包含其自身。”
这意味着
CI_JOB_TOKEN
应该有足够的访问权限。
此外,这让我更加困惑,当我用
"Job-Token: $CI_JOB_TOKEN"
替换 "Private-Token: $CI_JOB_TOKEN"
时,curl 命令返回:
{
"error": "invalid_token",
"error_description": "Token was revoked. You have to re-authorize from the user."
}
哪些设置可能设置不正确或者我使用的 API 错误?
注意:我使用个人访问令牌测试了curl,它按预期工作
工作令牌的 API 访问权限有限。您不能将此作业 API 与作业令牌一起使用。即使添加到白名单中,作业令牌仍然仅限于特定端点,其中不包括作业list API(尽管您可以使用作业令牌获取作业工件)。
您将需要使用另一种方法来对此 API 进行身份验证,例如项目访问令牌、组访问令牌或类似方法。