Я пытаюсь создать йо-изображение с Дженкинсом в Docker. Выполнение команды bitbake от имени root -user вызывает много проблем, и я попробовал некоторые обходные пути, такие как:
touch build/conf/sanity.conf
и установив эту переменную для возможности сборки как root пользователь:
FORCE_UNSAFE_CONFIGURE=1
Мой вопрос: Возможно ли запустить Jenkins в docker контейнере с пользователем, не являющимся root?
Что я пробовал:
Настройка USER jenkins в Dockerfile:
# From official jenkins image.
FROM jenkins/jenkins
# Set root user
USER root
# Install recommended tools for yocto
RUN apt-get update && apt-get install -y \
gawk wget git-core diffstat unzip texinfo gcc-multilib g++-multilib \
build-essential chrpath socat cpio python python3 python3-pip python3-
pexpect \
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-
mesa libsdl1.2-dev \
pylint3 xterm file
# Set working directory.
WORKDIR /home/jenkins
# Add user jenkins
RUN adduser -D jenkins
# change owner of /home/jenkins directory
RUN chown -R jenkins /home/jenkins
# Set user to jenkins
USER jenkins
# Update $PATH variable
ENV PATH="${PATH}:/home/jenkins/bin"
# Listening port at runtime.
EXPOSE 8080
После запуска моего контейнера я посмотрел системную информацию jenkins и увидел, что пользователь still root.
Переключение на пользовательский jenkins в Jenkinsfile с помощью команды оболочки
pipeline {
agent any
stages {
stage('Test') {
steps {
dir('/home/jenkins/') {
sh """su jenkins
whoami"""
}
}
}
}
}
Вывод:
+ su jenkins
+ whoami
root
Я видел, что это происходит только в docker контейнере. Я установил Jenkins на свой локальный компьютер, чтобы проверить, будет ли разница, и обнаружил, что Jenkins по умолчанию работает с пользователем jenkins на моем локальном компьютере.