Докер в Дженкинс и частные модули - PullRequest
0 голосов
/ 30 октября 2019

Я ищу способ безопасного клонирования частных модулей npm из хранилища прокси в контейнере Docker, который запускается Jenkins, работающим в Ubuntu. Образ Docker будет отброшен, но он должен скомпилировать проект и запустить модульные тесты.

Jenkinsfile, используемый для сборки, выглядит, упрощенно, как это:

node('master') {
    stage('Checkout from version control') {
      checkout scm
    }
    stage('Build within Docker') {
        docker.build("intermediate-image", ".")
    }
}

Dockerfile на данный момент:

FROM node:10-alpine
COPY package.json package-lock.json .npmrc ./    
RUN npm ci && \
    rm -f .npmrc 
COPY . .
RUN npm run build && \
    npm run test

Файл .npmrc (анонимный):

@domain:registry=https://npm.domain.com/
//npm.domain.com/:_authToken=abcdefg

Проблема в том, что команда COPY создает слой сфайл .npmrc. Если я собираюсь вне моего собственного сервера Jenkins, слой будет кэшироваться провайдером сборки.

Или я слишком сильно переживаю, учитывая, что изображение не будет опубликовано, а Jenkins тоже будет приватным?

Чего я хочу добиться, так это чтобы сборка могла использовать версию произвольного узла, независимую от этого. сервера сборки.

1 Ответ

0 голосов
/ 31 октября 2019

Я решил, что, поскольку хост докера - это та же (виртуальная) машина, что и хост Дженкинса, нет проблем, если я запекаю файл .npmrc в слой докера.

Любой, кто имеет доступ к хосту Docker, может в любом случае украсть локальный токен .npmrc.

Кроме того, группа, которая имеет доступ к нашим частным модулям npm, является полной подгруппой людей сдоступ к репозиторию контроля версий. Таким образом, предоставление токена npm для машины сборки, промежуточного образа Jenkins, Docker, слоя образов Docker и / или хранилища на данный момент не создает никаких дополнительных проблем аутентификации. Отмена доступа должна затем идти рука об руку с вращением токена npmrc (чтобы удаленные разработчики не использовали токен сборки), но это небольшая поверхность атаки, в любом случае, она меньше, чем люди, копирующие код на жесткий диск.

Мы должны будем пересмотреть наши варианты, если эта настройка изменится. Надеюсь, мы найдем решение тогда, но оно не стоит хлопот сейчас. Одним из возможных решений может быть запрос токена из другого контейнера докера с единственной целью ответа на эти (локальные) вызовы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...