我正在使用从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无法正常工作。