运行 gitlab 管道时,Gitlab CI CD 变量不会被注入

sim*_*ond 20 gitlab gitlab-ci python-3.8 cicd

我正在 gitlab-ci.yml 文件中运行以下代码部分:

  script:
- pip install --upgrade pip
- cd ./TestAutomation
- pip install -r ./requirements.txt
Run Code Online (Sandbox Code Playgroud)

以下是键和值。所以我必须将任何值传递到管道,并将 key 作为变量 ENV : dev

我通过扩展将上述三个变量添加到了 GitLab CI CD 变量部分。只是添加了一个值和键

我还发现我们可以在 .yml 文件本身中添加变量,如下所示。我不知道如何为一个键添加多个值

variables:
 TEST:
   value: "some value" # this would be the default value
   description: "This variable makes cakes delicious"
Run Code Online (Sandbox Code Playgroud)

当我运行管道时,我收到错误,因为看起来这些变量和值没有正确注入。

更多细节:

我在运行管道时遇到同样的错误。因此,我怀疑当我通过管道运行时,类别变量没有正确注入

如果需要,我会将其显示在共享屏幕上

我观察到的是——与我作为参数或变量传递的键关联的值,这些值不会被注入或替换,而不是键。所以理想情况下 ${Category} 应该替换为 value Smoke 等

Kee*_*asa 26

当 Gitlab CI CD 变量没有作为环境变量注入到您的管道中时,请按照以下步骤进行验证。

  1. 检查变量是否已定义。您至少需要Maintainer为您的用户设置角色。转到设置 --> CI/CD --> 变量。您可以查看所有项目变量和组变量(继承)。

  2. 接下来,检查这些变量是否被定义为Protected变量。如果它们被标记为受保护,则它们仅暴露于受保护的分支或受保护的标签。如果您当前的分支不是protected branch. 如果没有,您可以随时将当前分支设为受保护分支。 在此输入图像描述

  3. 接下来,检查您的代码是否正确访问环境变量。根据您的脚本语言,只需像访问常规环境变量一样进行访问即可。

  4. 您实际上不需要在.gitlab-ci.yaml文件中定义这些变量。(尽管他们的文档是这么说的)

希望这可以帮助。

  • 分支未受保护;变量被标记为受保护。这解决了我的问题。 (3认同)

Dam*_*nga 17

GitLab UI 中设置的变量不会传递到服务容器。要设置它们,请将它们分配给 UI 中的变量,然后在 .gitlab-ci.yml 中重新分配它们:

stages:
  - Test
# Added this to your yml file
variables:
  ENV: $ENV
  BROWSER: $BROWSER
  Category: $Category

ui_tests:
  stage: Test
  image: 
    name: joyzourky/python-chromedriver:3.8
    entrypoint: [""]
  tags:
  - micro
  only:
  - develop
  when: manual
  script:
    - pip install --upgrade pip 
    - cd ./src/Tests/UIAutomation
    - pip install -r ./requirements.txt
    - pytest -s -v --env=${ENV} --browser=${BROWSER} --alluredir=./reports ./tests -m ${Category}
  artifacts:
    when: always
    path:
    - ./src/Tests/UIAutomation/reports/
    - ./src/Tests/UIAutomation/logs/
    expire_in: 1 day

Run Code Online (Sandbox Code Playgroud)

请参阅附件,它可以解决任何问题。 在此输入图像描述

  • 不幸的是这个答案不正确。项目变量确实被传递到容器中。*不需要*需要自我分配。更重要的是 ssi-anik 是正确的(即它更可能是一个“受保护”问题)。 (6认同)
  • 如果选中“保护变量”,则它只能由受保护的分支和标签使用。请阅读此https://docs.gitlab.com/ee/ci/variables/index.html#protected-cicd-variables (4认同)
  • 添加更多要点: - 至少在我的情况下,“变量”键不是必需的,变量在我的工作中可用。- 如果变量受到**保护**,它们将在您的合并请求事件中不可用。 (3认同)

sar*_*eno 6

正如 @Keet Sugathadasa 提到的,触发 CI 的分支必须受到保护;这是我的情况,所以我必须通过去保护它Settings > Repository > Protected branch,然后从那里保护分支