取消屏蔽继承的屏蔽 gitlab CI/CD 变量
Unmask inherited masked gitlab CI/CD variable
有谁知道如何在一个项目中获取 Gitlab 中 [MASKED] 变量的值,该项目从另一个我无权访问的父项目继承了这个 [MASKED] 变量?
运行 Gitlab CI/CD 管道中的 .gitlab-ci.yaml 给了我:
...
$ echo $ENV / $VERSION / $LEANIX_SERVICE_URL
development / 1.1.0 / [MASKED]
...
项目的设置可以在下面的截图中看到:
您需要在 Biz-IT
组(从中继承该变量的组)中拥有 maintainer or higher privileges 才能查看继承变量的值。项目 Ci/CD 变量设置中组名的超链接会将您带到 Biz-IT
组的 CI/CD 设置页面,如果您有权限的话。在该页面上,如果您有权限,您可以显示该值。
虽然可以在您的工作中展现价值(参见 ),但这并不是一个特别好的主意。该变量可能出于某种原因而被屏蔽——因为创建它的人不希望它在作业日志中公开。如果可能,您应该强烈考虑联系管理员或该组中具有足够权限的人。
我找到了如何公开此变量内容的答案。这是我修改后的“.gitlab-ci.yml文件”的内容。
解决方案
image: mcr.microsoft.com/dotnet/sdk
stages:
- dotnet
- leanix
...
leanix_sync:
stage: leanix
variables:
ENV: "development"
rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
variables:
ENV: "development"
...
before_script:
- apt update && apt -y install jq
- apt-get install -y libxml2-utils
script:
- IFS='/' read -r -a FILES <<< "$LEANIX_SERVICE_URL"
- echo ${FILES[*]}
我的想法是将初始字符串拆分为一个字符,我确信我会在其中找到像 '/' 这样的字符,然后将输出添加到数组并获得以下内容:
不工作
(实际有效,它只是给出一个编码字符串)
我尝试过但没有奏效:正如@sytech 所指出的,我尝试将以下内容添加到我的 .gitlab-ci.yml.
第一次尝试:
编辑.gitlab-ci.yml :
image: mcr.microsoft.com/dotnet/sdk
stages:
- dotnet
- secrets
- leanix
dotnet_sync:
stage: dotnet
before_script:
- export dotn=test1
script:
- echo $dotn
expose_secrets:
stage: secrets
script:
- echo $LEANIX_SERVICE_URL | base64
...
给出以下加密输出:
第二次尝试:
编辑.gitlab-ci.yml :
leanix_sync:
stage: leanix
variables:
ENV: "development"
rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
variables:
ENV: "development"
before_script:
- apt update && apt -y install jq
- apt-get install -y libxml2-utils
script:
- echo $LEANIX_SERVICE_URL | base64
- cat packages.config
...
有谁知道如何在一个项目中获取 Gitlab 中 [MASKED] 变量的值,该项目从另一个我无权访问的父项目继承了这个 [MASKED] 变量?
运行 Gitlab CI/CD 管道中的 .gitlab-ci.yaml 给了我:
...
$ echo $ENV / $VERSION / $LEANIX_SERVICE_URL
development / 1.1.0 / [MASKED]
...
项目的设置可以在下面的截图中看到:
您需要在 Biz-IT
组(从中继承该变量的组)中拥有 maintainer or higher privileges 才能查看继承变量的值。项目 Ci/CD 变量设置中组名的超链接会将您带到 Biz-IT
组的 CI/CD 设置页面,如果您有权限的话。在该页面上,如果您有权限,您可以显示该值。
虽然可以在您的工作中展现价值(参见
我找到了如何公开此变量内容的答案。这是我修改后的“.gitlab-ci.yml文件”的内容。
解决方案
image: mcr.microsoft.com/dotnet/sdk
stages:
- dotnet
- leanix
...
leanix_sync:
stage: leanix
variables:
ENV: "development"
rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
variables:
ENV: "development"
...
before_script:
- apt update && apt -y install jq
- apt-get install -y libxml2-utils
script:
- IFS='/' read -r -a FILES <<< "$LEANIX_SERVICE_URL"
- echo ${FILES[*]}
我的想法是将初始字符串拆分为一个字符,我确信我会在其中找到像 '/' 这样的字符,然后将输出添加到数组并获得以下内容:
不工作
(实际有效,它只是给出一个编码字符串)
我尝试过但没有奏效:正如@sytech 所指出的,我尝试将以下内容添加到我的 .gitlab-ci.yml.
第一次尝试:
编辑.gitlab-ci.yml :
image: mcr.microsoft.com/dotnet/sdk
stages:
- dotnet
- secrets
- leanix
dotnet_sync:
stage: dotnet
before_script:
- export dotn=test1
script:
- echo $dotn
expose_secrets:
stage: secrets
script:
- echo $LEANIX_SERVICE_URL | base64
...
给出以下加密输出:
第二次尝试:
编辑.gitlab-ci.yml :
leanix_sync:
stage: leanix
variables:
ENV: "development"
rules:
- if: '$CI_COMMIT_BRANCH == "develop"'
variables:
ENV: "development"
before_script:
- apt update && apt -y install jq
- apt-get install -y libxml2-utils
script:
- echo $LEANIX_SERVICE_URL | base64
- cat packages.config
...