Я делаю задание 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
, проверить, чтокоммит слияния, затем отменить коммит слияния.Использование описательных конвейеров и плагинов для этой цели не вариант, потому что я хотел бы, насколько это возможно, поместить все шаги в код.