如何在 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) 规范?