Получение "sudo: unknown uid xxx: кто ты?"В трубопроводе Дженкинс строится собственный контейнер - PullRequest
0 голосов
/ 01 июня 2018

Я создаю конвейер Jenkins, который создает свой собственный контейнер из centOS, используя agent { dockerfile true }, затем вызывает пользовательский сценарий, используя:

pipeline {
agent { dockerfile true }
stages {
    stage('Build') {
        steps {
            sh 'whoami'
            sh 'printenv'
            sh './rpmBuild.sh'
        }
    }
}
}

Затем возникает проблема, когда он завершается с ошибкой при вызове любой команды сСудо, это дает sudo: unknown uid xxx: who are you?

Ответы [ 2 ]

0 голосов
/ 07 августа 2019

UID xxx, который jenkins не смог распознать, был идентификатором пользователя jenkin внутри системы server / ubuntu, на которой работал jenkins, и конвейер запускался внутри док-контейнера, где идентификатор jenkins отличался.Следовательно, идентификатор сервера jenkins не был распознан внутри докера.

Итак, вот что сработало для меня: Изменение с: JENKINS_USER = $ NAME на: JENKINS_USER = "root" в / etc / default / jenkins

Это можно проверить из вывода консоли конвейера, чтоговорит в самом начале: $ docker run -t -d -u 0: 0 ....

это 0: 0 указывает на то, что он работает от имени пользователя root.Когда я столкнулся с этой проблемой, вместо 0: 0 у меня был xxx: yyy.Этот xxx: yyy был таким же, как и для пользователя jenkins в / etc / passwd внутри системы server / ubuntu, на которой запущен jenkins.

Надеюсь, это поможет !!

0 голосов
/ 19 сентября 2018

Внутри контейнера вы должны иметь файлы passwd, group и sudoers, которые есть у пользователя jenkins.Для пользователя jenkins необходимо настроить sudo без пароля (%jenkins ALL=(ALL) NOPASSWD: ALL).

Один из способов - правильно настроить учетную запись jenkins на хосте, а затем запустить docker как:

docker run -v /etc/group:/etc/group:ro -v /etc/passwd:/etc/passwd:ro -v /etc/shadow:/etc/shadow:ro -v /etc/sudoers.d:/etc/sudoers.d:ro ...
...