Складные области GitLab CI ведут себя странно

# #shell #gitlab #continuous-integration #sh #gitlab-ci

Вопрос:

Я пытаюсь создать пользовательские складные области в Gitlab CI, используя рекомендации в соответствии с документами GitLab CI, однако это работает не так, как ожидалось. Я запускаю docker:20.10.7 изображение, которое выходит за пределы изображения Alpine, и оно используется /bin/sh в качестве терминала. Я думаю, что это вызывает некоторые проблемы с использованием escape-последовательностей.

Используя что-то вроде этого (из документов GitLab CI):

 job1:
  script:
    - echo -e "e[0Ksection_start:`date  %s`:installre[0KInstalling Node Modules"
    - yarn install
    - echo -e "e[0Ksection_end:`date  %s`:installre[0K"
 

вызывает вывод, аналогичный следующему снимку экрана:

введите описание изображения здесь

Я не ожидаю, что появятся строки с синими стрелками, и подозреваю, что e[0K escape-последовательность четкой строки не работает или не работает ни с тем echo , ни printf с /bin/sh другим .

Проблема усугубляется, когда у меня есть две настраиваемые складные секции, следующие друг за другом. Линии, которые начинаются с section_start областей и section_end появляются за их пределами при сворачивании.

Кто-нибудь знает, как это исправить, ожидается, что эти строки вообще не появятся в выводе GitLab CI, должны появиться только сворачивающиеся заголовки. Я понимаю, что e[0K это то, для чего нужно.

Я создал функции section_start , section_end которые выглядят следующим образом:

 RESET="33[0m"
BOLD="33[1m"
L_CYAN="33[96m"

CLR="33[0K" # Clear line ANSI escape code. (Tried e[0K as well)
CR="r" # Carriage return

section_start()
{
  local SECTION_NAME=$1;
  local COLLAPSIBLE_TITLE=$2;
  local TIME=$(date  %s);

  printf '%bn' "section_start:${TIME}:${SECTION_NAME}r${CLR}${BOLD}${L_CYAN}${COLLAPSIBLE_TITLE}${RESET}";
}

section_end()
{
  local SECTION_NAME=$1;
  local TIME=$(date  %s);

  printf '%bn' "section_end:${TIME}:${SECTION_NAME}${CR}${CLR}";
}
 

enter image description here

In the screenshot above, blue arrows are pointing to custom collapsible sections, and the red underlined items are supposed to have been erased by the escape sequence.