Я настраиваю конвейер Jenkins (декларативный скрипт) с помощью агента-контейнера Docker, созданного из Dockerfile.Я хочу, чтобы на одном из этапов сборки были получены зависимые пакеты (в моем случае пакеты Debian, из Artifactory), а затем установил их в контейнере Docker.Для установки этих пакетов (с использованием dpkg
, в моем случае) требуется разрешение суперпользователя и, следовательно, sudo
.Как мне настроить конвейер и / или Dockerfile, чтобы включить это?
В настоящее время мой Jenkinsfile выглядит примерно так:
pipeline {
agent {
dockerfile {
filename 'Dockerfile.jenkins'
}
}
stages {
stage('Set up dependencies') {
steps {
sh 'rm -rf dependent-packages && mkdir dependent-packages'
script {// Fetch packages from Artifactory
def packageserver = Artifactory.server 'deb-repo-srv'
def downloadSpec = ...
packageserver.download(downloadSpec)
}
sh 'sudo dpkg -i -R dependent-packages/'
}
}
...
}
}
А мой Dockerfile выглядит так:
# Set up the O/S environment
FROM debian:9
# Add the build and test tools
RUN apt-get -y update && apt-get -y install \
cmake \
doxygen \
g++ \
libcppunit-dev \
make \
libxerces-c-dev
Поскольку я использую агент Dockerfile, простое добавление пользователя jenkins
в файл sudoers
сервера Jenkins не будет работать.