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

问题描述 投票:0回答:1

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

CI_PAGES_URL变量是https://mygroup.gitlab.io/subgroup/project/。我使用以下脚本来提取路径:

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

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

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

/subgroup/project/

但是在Gitlab CI环境中,事情并没有像预期的那样:

> 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/

我检查了sed版本。 CI和我的本地环境都使用GNU sed 4.4

到底是怎么回事?

sed devops gitlab-ci
1个回答
0
投票

原来这解决了我的问题。我仍然不知道为什么我的本地环境和CI之间存在差异。但是你现在有了:

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

有2个变化:

  • 引用变量$CI_PAGES_URL
  • 将懒惰限定符?添加到域名匹配(\2)。
© www.soinside.com 2019 - 2024. All rights reserved.