【问题标题】:GitLab: Unauthorized access to API from pipeline using CI_JOB_TOKEN [duplicate]GitLab:使用 CI_JOB_TOKEN 从管道未经授权访问 API [重复]
【发布时间】:2019-12-26 17:33:19
【问题描述】:

我正在尝试向我的 gitlab 主机的 api 发出请求以解析标签发布信息,从我在互联网上看到的情况来看,我可以使用 curl 使用 pre-在工作中定义变量,这样我就可以得到我正在寻找的东西。

现在 curl 的执行方式是这样的:

curl -H "PRIVATE-TOKEN: $CI_JOB_TOKEN" $CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/tags/$CI_COMMIT_TAG

这个请求的响应是404: Unauthorized。我也尝试过使用CI_BUILD_TOKEN 环境变量,但我也得到了相同的结果。

我创建这些作业的存储库不是私有的,只是内部的。所以我不知道如何使这项工作。

如果有必要,以下是作业管道的编码方式:

fetch-tag-info:
  stage: setup
  only:
    - tags
  image: ubuntu:18.04
  before_script:
    - apt-get update
    - apt-get install curl jq -y
  script:
    - "curl -H \"PRIVATE-TOKEN: $CI_JOB_TOKEN\" $CI_API_V4_URL/projects/$CI_PROJECT_ID/repository/tags/$CI_COMMIT_TAG -o release-notes.json"

【问题讨论】:

标签: gitlab devops gitlab-ci pipeline


【解决方案1】:

您只能在所有人都可以访问的公共项目中使用CI_JOB_TOKEN。请参阅 GitLab 中的未解决问题:https://gitlab.com/gitlab-org/gitlab-foss/issues/29566

同时,您可以使用此处提到的解决方案:https://stackoverflow.com/a/44469417/6076269,或此处:https://stackoverflow.com/a/51005977/6076269

【讨论】:

  • 我会试试你发送的第一个链接。
  • 我已经尝试了第一个链接,但它仍然不起作用。对于另一种方法,我已经考虑过了,但我不能要求我的公司为此创建一个新帐户,那又如何我最终做的是代表我创建一个新的访问令牌并将其存储在一个私有变量中,这不是一个好的解决方案,但它现在可以使它工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 1970-01-01
  • 2015-03-05
相关资源
最近更新 更多