Неверная кодировка в тексте коммита из 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 шт):

Автор решения: Alexshev92

Как я понял, Jenkins, при вызове bat использует стандартный Windows CMD (не Windows PowerShell), с кодировкой cp866. Чтобы в нем корректно отображались символы юникода, в настройках Win10 зайти в Языковые параметры -> Административные языковые параметры. Перейти во вкладку Дополнительно и нажать кнопку Изменить язык системы. В открывшемся окне установить флажок Использовать Юникод.... Перезагрузить Windows.

После этого русские символы в консоли отображаются корректно:

C:\...\Test commit -m "Русские буквы" 
[master 724a38d] Русские буквы
→ Ссылка