#bash #jenkins #environment-variables #substring
#bash #Дженкинс #переменные среды #подстрока
Вопрос:
Я использую Jenkins и плагин Git, который предлагает следующие переменные среды:
- GIT_COMMIT: SHA текущего
- GIT_BRANCH: имя используемой в данный момент ветки, например, «master» или «origin / foo»
- GIT_PREVIOUS_COMMIT: SHA предыдущего встроенного коммита из той же ветки (текущий SHA при первой сборке в ветке)
- GIT_URL: URL-адрес удаленного хранилища
- GIT_URL_N: URL-адреса удаленных репозиториев при наличии более 1 удаленного доступа, например, GIT_URL_1, GIT_URL_2
- GIT_AUTHOR_EMAIL: электронная почта коммиттера / автора
- GIT_COMMITTER_EMAIL: электронная почта коммиттера / автора
Используя плагин с номером версии, я получил ${GIT_COMMIT}
переменную, которая считывается как ожидалось.
Проблема в том, что это полный 32 (?) символьный хэш SHA. Я бы хотел взять ее подстроку. Есть ли способ получить подстроку переменной среды в Jenkins?
Комментарии:
1. И где использовать? Если вы используете его в качестве скрипта, существует много способов извлечения подстроки, но это зависит от языка используемого вами скрипта.
2. @Slav — я использую его в конфигурации сборки, в разделе
Build Environment -> Create a formatted version number
(из плагина с номером версии), а затем вVersion Number Format String
поле. Я также использую скрипты, никаких проблем нет.
Ответ №1:
В bash (я предполагаю, что это то, что вы хотите знать, поскольку вы отметили вопрос с ним), вы можете сделать это, используя этот синтаксис: ${string:start_position:length}
Вы можете извлечь, например, первые 8 символов хэша, написав:
${GIT_COMMIT:0:8}
Я взял это решение отсюда: http://tldp.org/LDP/abs/html/string-manipulation.htm
Комментарии:
1. Большое спасибо, но без кубиков… минуту выглядело хорошо, но потом ничего. Есть еще идеи? Смотрите Мой комментарий к OP для получения более подробной информации, если это поможет.
2. Итак, вы хотите использовать плагин для получения одной переменной среды и установки другой, которая является подстрокой первой? В данном случае это полностью зависит от самого плагина (в Jenkins нет «общего способа» для анализа переменных среды). Где вы хотите использовать переменную среды, сгенерированную плагином? Может быть, вы могли бы пропустить использование плагина и получить подстроку
GIT_COMMIT
с помощью вышеупомянутого решения непосредственно в скрипте, где это необходимо?3. Хорошо, спасибо, я думаю, что это не очень хороший способ сделать это — мне это не нужно для сценария, пока просто отображаемое имя проекта («2014-06-25-fb8ce» или что-то в этом роде).