取消屏蔽继承的屏蔽 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
...