如何在 GitLab YAML 文件中生成随机数

Posted

技术标签:

【中文标题】如何在 GitLab YAML 文件中生成随机数【英文标题】:How to generate random number in GitLab YAML file 【发布时间】:2020-11-01 00:50:09 【问题描述】:

我的 Gitlab 分支中有 YAML 文件。根据要求,我想在 YAML 文件中创建一个随机的 mergeID。

【问题讨论】:

你能给出你测试过的代码吗? YAML 不是编程语言,因此无法生成随机数。 gitlab-ci-runner 标签没有意​​义,因为它是用 TOML 配置的,而不是 YAML。 【参考方案1】:

如果您指的是 gitlab-ci.yml 文件,这是可能的。 YAML 文件中定义的每个 GitLab 作业都提供了一个 script 部分,您可以在其中定义将在作业运行时由 GitLab 执行的 bash 命令。如果你想要更复杂的操作,你可以从脚本部分调用 Python 脚本。

幸运的是,在这种情况下,bash 有一个内置的$RANDOM 函数,在How to generate random number in Bash? 中进行了描述。

gitlab-ci.yml:

my-job:
  stage: my-stage
  script:
    # Generate random number from 1 to 10:
    - let MR_ID=$((1 + RANDOM % 10))

有关 GitLab 脚本的更多信息:https://docs.gitlab.com/ee/ci/yaml/#script

【讨论】:

非常感谢,看来解决了我的要求!!! 这里我还有一个要求,即:生成七位随机数。所以我修改了如下代码 - let SevenDigitMR_ID=RANDOM -MINIMUM 999999 -MAXIMUM 9999999 - echo $SevenDigitMR_ID 但它仍然只生成相同的五位随机数。默认情况下,$RANDOM 只生成最多 5 位的数字。 在 *** 中搜索答案。如果找不到,请发布另一个问题;)【参考方案2】:

另一个不使用脚本的简单解决方案是使用 gitlab 环境变量CI_JOB_ID。 它不是随机数,但它是唯一的。

variables:
  MERGE_ID: $CI_JOB_ID

【讨论】:

以上是关于如何在 GitLab YAML 文件中生成随机数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 protobuf (.proto) 文件中生成 (.json/.yaml) 中的 swagger3 (OpenAPI3) 规范?

如何在批处理文件中生成 4 位随机数?

如何在 BusyBox shell 中生成随机数

R data.table 在数据表中生成随机配对

如何在matlab中生成概率3D图

如何在 Bash 中生成随机数?