Запустите sudo в конвейере докерфайла Jenkins - PullRequest
0 голосов
/ 28 сентября 2018

Я настраиваю конвейер 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 не будет работать.

...