Проблема с переменной Gitlab CI, извлекающая путь подгруппы для Pages - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь извлечь путь к страницам 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.

Что происходит?

1 Ответ

0 голосов
/ 27 марта 2019

Оказывается, это решило мою проблему.И я до сих пор понятия не имею, почему существует разница между моей местной средой и CI.Но там у вас есть:

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

Есть 2 изменения:

  • Процитировал переменную $CI_PAGES_URL.
  • Добавлен ленивый квалификатор ? всовпадение доменного имени (\2).
...