variables - 如何在 .gitlab-ci.yml 变量中使用条件?

标签 variables if-statement continuous-integration gitlab gitlab-ci

我想知道是否可以通过 if-else 条件语句设置自定义 Gitlab CI 变量。

在我的 .gitlab-ci.yml 文件中,我有以下内容:

variables:
    PROJECT_VERSION: (if [ "${CI_COMMIT_TAG}" == "" ]; then "${CI_COMMIT_REF_NAME}-${CI_PIPELINE_ID}"; else ${CI_COMMIT_TAG}; fi);

Trying to set project version:
    image: php:7.1-cli
    stage: test
    script:
        # this echoes correct string (eg. "master-2794")
        - (if [ "${CI_COMMIT_TAG}" == "" ]; then echo "${CI_COMMIT_REF_NAME}-${CI_PIPELINE_ID}"; else echo ${CI_COMMIT_TAG}; fi);
        # this echoes something like "(if [ "" == "" ]; then "master-2794"; else ; fi);"
        - echo $PROJECT_VERSION

这可以做到吗?如果是这样,我错过了什么?谢谢

最佳答案

这是预期的行为。

CI_COMMIT_TAG 仅设置为 GitLab 作业中的值。来自 https://docs.gitlab.com/ee/ci/variables/README.html

CI_COMMIT_TAG - The commit tag name. Present only when building tags.

因此,在variables部分中,CI_COMMIT_TAG未定义,因此等于“”。

因此,如果您想使用CI_COMMIT_TAG,请在定义标签的作业中使用。请参阅https://docs.gitlab.com/ee/ci/yaml/README.html#tags

关于variables - 如何在 .gitlab-ci.yml 变量中使用条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204720/

相关文章:

.net - 在构建代理上运行代码分析 (FxCop > 10),无需安装 Visual Studio

automation - nuget 是否适合日常开发工作流程?

java - 在 java 字符串中进行变量替换的优雅方法

variables - 如何使用 Javascript 在 qualtrics 中设置嵌入式数据

c - 我不明白这些变量如何用于 getchar

bash - 脚本,将所有 $input 保存到 1 个变量中

可选范围内的 Python 过滤器数字(少用 if-else)

C++ - 否则返回 Elseif

mysql - 如何在选择查询中使用 IF 条件显示不为空的列

windows - Azure 上的自定义 Jenkins 从属镜像