# #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}";
}
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.