到目前为止我得到的是,可以通过以下方式进行身份验证Personal Access Token
and include外部 CI 脚本,但更简洁的方法是使用$CI_JOB_TOKEN
因为它更安全、更受限制。我正在研究是否可以通过这种方式完成 -
include 'https://gitlab-ci-token:${CI_JOB_TOKEN}@raw-file-url'
我尝试在虚拟脚本作业中以这种格式卷曲,但无法获取文件。
显然,可以使用文件 API 和 $CI_JOB_TOKEN 导入外部脚本(https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2346/diffs),但我正在研究是否include
功能也支持这一点。任何有关如何实现这一目标的建议都将受到赞赏。
很遗憾,CI_JOB_TOKEN
范围非常有限。截至今天(GitLab 11.0),您只能用它做两件事:
- 使用 GitLab 容器 (Docker) 注册表进行身份验证
- 进行身份验证以触发多项目管道(仅限 EE)
参考:
- https://docs.gitlab.com/ce/ci/variables/
- https://docs.gitlab.com/ee/ci/variables/
So you cannot use CI_JOB_TOKEN
从另一个存储库下载文件,既不通过原始端点(/raw/<ref>/<path>
) 也不是 API。
很遗憾,部署密钥也没有帮助——它们仅适用于 SSH。
我想出的唯一可行的解决方案是使用单独的用户:
- 创建一个新用户
Reporter
role.
- 创建个人访问令牌(
/profile/personal_access_tokens
)对于该用户api and 读存储库 rights.
- 将此令牌添加为秘密变量在项目 CI/CD 设置中。称之为例如
BUILD_USER_TOKEN
.
- Use
$BUILD_USER_TOKEN
在 CI 脚本中访问 API 或项目文件。
这是一个巨大的 hack,我真的希望看到 GitLab 做出CI_JOB_TOKEN
具有指定资源权限的一流只读 (?) 令牌。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)