Использование агента docker внутри docker -swarm slave, который также работает внутри Docker - PullRequest
0 голосов
/ 17 июня 2020

У нас есть файл Jenkins, который выглядит следующим образом:

pipeline {
    agent {
      node {
        label 'slave-test'
      }
    }
    stages {
      stage ('test docker run') {
        agent {
          docker {
            image 'node:14.4.0-slim'
            args '-u root -v /var/run/docker.sock:/var/run/docker.sock'
            reuseNode true
          }
        }
        steps {
          sh 'PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm ci'
          sh 'npm run test:ci'
          sh 'npm run patternlab:build'
        }
      }
    }

Узел, помеченный как slave-test , является клиентом docker -swarm, работающим как docker на основе образа на debian-buster. Внутри этого ведомого устройства мы хотим запустить узел изображения: 14.4.0-slim, чтобы запустить некоторые тесты и упаковать некоторые элементы интерфейса.

Мы используем reuseNode = true, чтобы использовать ту же рабочую область, что и агент в начале трубопровод. Но Дженкинс сообщает нам:

[Pipeline] {
[Pipeline] stage
[Pipeline] { (test docker run)
[Pipeline] getContext
[Pipeline] isUnix
[Pipeline] sh
13:24:07  + docker inspect -f . node:14.4.0-slim
13:24:07  .
[Pipeline] withDockerContainer
13:24:07  hofladen-slave01-20d7912d seems to be running inside container 23d34522985b2e7ec99327337cd2b20bee22018562886c9930a4ba777cda11ca
13:24:07  but /home/****/workspace/ttern-library_feature_BWEBHM-262@2 could not be found among [/var/run/docker.sock]
13:24:07  but /home/****/workspace/ttern-library_feature_BWEBHM-262@2@tmp could not be found among [/var/run/docker.sock]
13:24:07  $ docker run -t -d -u 10000:10000 -u root -v /var/run/docker.sock:/var/run/docker.sock -w /home/****/workspace/ttern-library_feature_BWEBHM-262@2 -v /home/****/workspace/ttern-library_feature_BWEBHM-262@2:/home/****/workspace/ttern-library_feature_BWEBHM-262@2:rw,z -v /home/****/workspace/ttern-library_feature_BWEBHM-262@2@tmp:/home/****/workspace/ttern-library_feature_BWEBHM-262@2@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** node:14.4.0-slim cat
13:24:08  $ docker top 0759f74d1c2676d68a32edab9775b2ca3c518fa2e4e673af856a87e9da514683 -eo pid,comm
[Pipeline] {
[Pipeline] sh
13:29:15  process apparently never started in /home/****/workspace/ttern-library_feature_BWEBHM-262@2@tmp/durable-504ce105
13:29:15  (running Jenkins temporarily with -Dorg.****ci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
[Pipeline] }
13:29:15  $ docker stop --time=1 0759f74d1c2676d68a32edab9775b2ca3c518fa2e4e673af856a87e9da514683
13:29:17  $ docker rm -f 0759f74d1c2676d68a32edab9775b2ca3c518fa2e4e673af856a87e9da514683
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Cancel running builds if exist)
Stage "Cancel running builds if exist" skipped due to earlier failure(s)

Нам нужно запустить эти команды в одной рабочей области Jenkins, чтобы выполнить последующие шаги.

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

1 Ответ

0 голосов
/ 01 июля 2020

Исправлено запуском подчиненного устройства jenkins как контейнера с томом для обмена данными и разрешения доступа к /var/run/docker.sock

#!/bin/bash
volume_name=myfinevolume-slave01-workspace
docker volume create ${volume_name}
docker run -d --name jenkins-agent-for-myfineproject \
  -v /var/run/docker.sock:/var/run/docker.sock:rw \
  --mount source=${volume_name},target=/home/jenkins/workspace \
  --memory=8G \
  --memory-swap=16G \
  --restart unless-stopped \
  myfineregsitry.domain.lala/acme/jenkins-swarm-client:3.17.0_buster
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...