我正在使用从Dockerfile构建的Docker容器代理设置Jenkins管道(声明性脚本) . 我想要一个构建阶段来获取依赖包(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代理,simply adding the jenkins user to the sudoers file of the Jenkins server将无效 .