我正在使用从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将无效 .