如何获取Gitlab中从无权限父项目继承的已掩码[MASKED] CI/CD变量值
GitLab 继承父项目掩码变量取值方案
核心原理
GitLab 的[MASKED]标记是日志输出层的替换机制,变量的实际值在CI作业的运行环境中是完整存在的,只要避开日志的掩码匹配规则即可拿到原始值。由于你没有父项目的访问权限,无法直接在配置页查看,可通过以下两种操作实现取值:
- 编码输出法
修改.gitlab-ci.yaml的脚本逻辑,将变量做base64编码后再打印到日志,绕开GitLab的掩码匹配:
拿到作业输出的编码字符串后,本地用base64解码即可得到原始值。script: # 对目标变量做base64编码输出 - echo $LEANIX_SERVICE_URL | base64 - 制品导出法
把变量值写入制品文件,通过下载制品获取原始值,GitLab不会对制品内的内容做掩码替换:
作业运行完成后,在作业详情页下载制品文件即可查看明文值。script: - echo $LEANIX_SERVICE_URL > leanix_service_url.txt artifacts: paths: - leanix_service_url.txt
注意事项
如果父项目的对应变量同时设置了「保护变量」属性,只有在受保护的分支/标签上运行的CI作业才能获取到变量值,非受保护分支运行的作业中该变量会为空。
内容的提问来源于stack exchange,提问作者R13mus
相关产品推荐
相关产品推荐

