GitLab CI - 缩短变量值

时间:2018-02-21 20:55:45

标签: heroku gitlab gitlab-ci

我正在尝试为我的项目启用评论应用程序,并为分支机构自动部署到Heroku。每个部署都应具有以下地址:

https://prefix-<branch-name>.herokuapp.com

Heroku要求应用名称不超过30个字符,因此如果分支名称太长,我的作业应缩短分支名称。

我试图以一种常见的Unix方式执行此操作,如下所示:

variables:
  REVIEW_APP_NAME: "prefix-${CI_COMMIT_REF_SLUG:0:23}"

但它解决了“前缀 - ”。

我还找到了以下解决方案,它允许我在脚本部分中使用缩短的分支名称。但它仍然不能在环境url参数中使用。这导致应用程序被部署到Heroku,但根本没有被GitLab跟踪(没有在“环境”列表中进行部署,也没有关于删除分支的操作​​)。

variables:
  REVIEW_APP_NAME: "prefix-$${CI_COMMIT_REF_SLUG:0:23}"

before_script:
  - eval export REVIEW_APP_NAME=${REVIEW_APP_NAME}

还有其他方法可以达到正确的行为吗?

2 个答案:

答案 0 :(得分:1)

为此,我们使用了一个简单的bash脚本:

#!/bin/bash
set -e

out=${1:0:40}
if [[ $out =~ ^.*-$ ]]; then
    out=${out:0:-1}
fi
echo $out

if语句检查字符串是否以结尾的破折号结尾。

然后我们像这样在CI中使用脚本:

[...]
  script:
    - export CI_COMMIT_REF_NAME=$(./infrastructure/utils/shorten_branchname.sh $CI_COMMIT_REF_NAME)
[...]

对于使用 docker alpine 的图像,您需要在以下位置安装bash:

[...]
before_script:
    - apk add --update bash
[...]

答案 1 :(得分:0)

我最终使用$CI_MERGE_REQUEST_IID而不是$CI_COMMIT_REF_SLUG来构建URL。