Неверная кодировка в тексте коммита из Jenkins
Имеется Jenkins Pipeline на узле Win10, из которого выполняется коммит в репозиторий проекта следующим образом:
...
def commit = "Русские буквы"
String addCmd = "git -C ${WORKSPACE} add -A"
String commitCmd = "git -C ${WORKSPACE} commit -m \"${commit}\""
bat script:"${addCmd}"
bat script:"${commitCmd}"
...
При этом в консоли Jenkins выводится следующее
C:\...\Test commit -m "Русские буквы"
[master 724a38d] ╨а╤Г╤Б╤Б╨║╨╕╨╡ ╨▒╤Г╨║╨▓╤Л
Такие же кракозябры появляются и в репозитории.
Пробовал разные варианты:
- явно задавал кодировку в
bat script:"${commitCmd}", encoding: 'UTF-8' - устанавил в гите
git config --global core.quotepath false
git config --global i18n.commitencoding UTF-8
git config --global i18n.logoutputencoding UTF-8
- в jenkins.xml добавил опцию
-Dfile.encoding=UTF8
Ни один из вариантов не помог. Что я делаю не так?
Ответы (1 шт):
Как я понял, Jenkins, при вызове bat использует стандартный Windows CMD (не Windows PowerShell), с кодировкой cp866. Чтобы в нем корректно отображались символы юникода, в настройках Win10 зайти в Языковые параметры -> Административные языковые параметры. Перейти во вкладку Дополнительно и нажать кнопку Изменить язык системы. В открывшемся окне установить флажок Использовать Юникод.... Перезагрузить Windows.
После этого русские символы в консоли отображаются корректно:
C:\...\Test commit -m "Русские буквы"
[master 724a38d] Русские буквы