Gitlab CI变量问题提取页面的子组路径

时间:2019-03-27 09:29:07

标签: sed devops gitlab-ci

我正在尝试为我的子项目提取Gitlab页面路径。

WhiteListPolicy变量是CI_PAGES_URL。我使用以下脚本提取路径:

https://mygroup.gitlab.io/subgroup/project/

在我的本地环境中,一切似乎都很好:

echo $CI_PAGES_URL | sed -E 's#^(http|https)://([[:alnum:]\.\-\_]+)(/.+)$#\3#g'

但是在Gitlab CI环境中,事情并没有按预期进行:

> export CI_PAGES_URL=https://mygroup.gitlab.io/subgroup/project/
> echo $CI_PAGES_URL | sed -E 's#^(http|https)://([[:alnum:]\.\-\_]+)(/.+)$#\3#g'

/subgroup/project/

自然,我检查了其他子匹配项:

> echo $CI_PAGES_URL | sed -E 's#^(http|https)://([[:alnum:]\.\-\_]+)(/.+)$#\3#g'

/project/

我已经检查过> echo $CI_PAGES_URL | sed -E 's#^(http|https)://([[:alnum:]\.\-\_]+)(/.+)$#\1#g' https > echo $CI_PAGES_URL | sed -E 's#^(http|https)://([[:alnum:]\.\-\_]+)(/.+)$#\2#g' mygroup.gitlab.io/subgroup > echo $CI_PAGES_URL | sed -E 's#^(http|https)://([[:alnum:]\.\-\_]+)(/.+)$#\3#g' /project/ 版本。 CI和我的本地环境都在使用sed

这是怎么回事?

1 个答案:

答案 0 :(得分:0)

原来这解决了我的问题。而且我仍然不知道为什么本地环境和CI之间会有区别。但是你有:

echo "$CI_PAGES_URL" | sed -E 's#^(http|https)://([[:alnum:]\.-\_]+?)(/.+)$#\3#g'

有2个更改:

  • 引用变量$CI_PAGES_URL
  • 将懒惰的限定词?添加到域名匹配(\2)中。