如何检查 gitlab 规则中是否存在变量?

Jor*_*-El 5 gitlab gitlab-ci

我有一个如下所示的 gitlab 规则条件。

'$ACTION && $REGION && $ROLE_ARN && $PACKAGEURL && $ACTION == "new" && $CLOUD_PLATFORM == "aws" && $ROLE_ARN != "" && $PACKAGEURL != "" && $REGION != ""'
Run Code Online (Sandbox Code Playgroud)

想要稍微修改一下,以便它应该检查上面的 PACKAGEURL 或 BUILDRPMREQUIRED 是否存在。

尝试保持如下,但即使未提供 PACKAGEURL 或 BUILDRPMREQUIRED 也能运行。

'$ACTION && $REGION && $ROLE_ARN && ($PACKAGEURL || $BUILDRPMREQUIRED) && $ACTION == "new" && $CLOUD_PLATFORM == "aws" && $ROLE_ARN != "" && ($PACKAGEURL != "" || $BUILDRPMREQUIRED != "") && $REGION != ""'
Run Code Online (Sandbox Code Playgroud)

我遵守如下规则。

.ifawsfulldeploy:
  rules:
    - if: '$ADMIN_SERVER_IP && $ADMIN_SERVER_IP != ""'
      when: never
    - if: '$ACTION && $REGION && $ROLE_ARN && ($PACKAGE_URL || $BUILDRPMREQUIRED) && $ACTION == "new" && $CLOUD_PLATFORM == "aws" && $ROLE_ARN != "" && ($PACKAGE_URL != "" || $BUILDRPMREQUIRED != "") && $REGION != ""'
      when: always
Run Code Online (Sandbox Code Playgroud)

其他规则应该在那里,只有变量我收到语法错误。

.ifawsfulldeploy:
  rules:
    - if: '$ADMIN_SERVER_IP && $ADMIN_SERVER_IP != ""'
      when: never
    - if: '$ACTION && $REGION && $ROLE_ARN && ( $PACKAGE_URL || $BUILDRPMREQUIRED ) && $ACTION == "new" && $CLOUD_PLATFORM == "aws" && $ROLE_ARN != "" && ( $PACKAGE_URL != "" || $BUILDRPMREQUIRED != "" ) && $REGION != ""'
      when: always
Run Code Online (Sandbox Code Playgroud)

在我的工作中。

  only:
    variables:
      - $PACKAGE_URL
      - $BUILDRPMREQUIRED
  extends:
    - .ifawsfulldeploy
Run Code Online (Sandbox Code Playgroud)

小智 5

我是 Gitlab 的新人,但我也有同样的问题

$FOO != null
Run Code Online (Sandbox Code Playgroud)

条件对我有帮助。希望它也对你有帮助!


小智 3

您是否尝试过仅对变量使用规则?就像 Gitlab 文档中的这个例子一样:

job1:
  script:
    - echo This rule uses parentheses.
  only:
    variables:
      - ($CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "develop") && $MY_VARIABLE
Run Code Online (Sandbox Code Playgroud)

来源:https://docs.gitlab.com/ee/ci/jobs/job_control.html#only-variables-- except-variables-examples