Проблема с использованием git merge в конвейерном задании Jenkins в контейнере Docker - PullRequest
1 голос
/ 11 июня 2019

Я делаю задание Jenkins, которое сливает одну ветку в другую, а затем запускает сборку на созданном коммите.Я получаю сообщение об ошибке:

+ git config --global user.email myemail@gmail.com
error: could not lock config file //.gitconfig: Permission denied
+ git config --global user.name 'Merge before testing'
error: could not lock config file //.gitconfig: Permission denied
+ git merge origin/branchToTest

при подготовке к слиянию.

Как видно из сообщения об ошибке, после первой косой черты нет папки, где должно быть имяпользователь, в моем случае /jenkins/.gitconfig

Когда я вставляю строку whoami, я получаю сообщение об ошибке: whoami: cannot find name for user ID 1000

Когда я запускаю docker exec containerName whoami, он возвращает jenkins

Я гарантировал, что пользователь jenkins существует при создании изображения.Вот часть файла dockerfile:

FROM jenkins/jenkins:lts
ENV TZ=Asia/Tokyo
USER jenkins
RUN <user stuff>
USER root
RUN <root stuff>
USER jenkins

и вот соответствующая часть моего Jenkinsfile:

git checkout -B origin/$BASE_BRANCH
git config --global user.email "email@domain"
git config --global user.name "Merge before testing"
git merge origin/$SOURCE_BRANCH

Кроме того, я совершенно уверен, что слияние завершается неудачно, потому что gitхэши, полученные с помощью git rev-parse --verify HEAD, не изменяются до и после git merge

В конце я хотел бы иметь возможность объединить $ SOURCE_BRANCH с $ BASE_BRANCH с помощью git merge, проверить, чтокоммит слияния, затем отменить коммит слияния.Использование описательных конвейеров и плагинов для этой цели не вариант, потому что я хотел бы, насколько это возможно, поместить все шаги в код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...