我正在尝试为我的项目启用评论应用程序,并为分支机构自动部署到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}
有没有其他方法可以实现正确的行为?
为此,我们使用一个简单的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
[...]