在Jenkins dockerfile管道中运行sudo

时间:2018-09-28 14:34:24

标签: jenkins dockerfile jenkins-pipeline sudo

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

0 个答案:

没有答案