我正在尝试为我的子项目提取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
。
这是怎么回事?
答案 0 :(得分:0)
原来这解决了我的问题。而且我仍然不知道为什么本地环境和CI之间会有区别。但是你有:
echo "$CI_PAGES_URL" | sed -E 's#^(http|https)://([[:alnum:]\.-\_]+?)(/.+)$#\3#g'
有2个更改:
$CI_PAGES_URL
。?
添加到域名匹配(\2
)中。