Коляска конвейера Jenkins docker подчиненное устройство jdk и docker mysql база данных - PullRequest
0 голосов
/ 05 мая 2020

Среда:

  1. Мастер Jenkins работает внутри контейнера docker на машине 1.
  2. Jenkins настроен на использование docker, установленного на машине 2.
  3. ведомые устройства Jenkins (настроенное изображение S SH с JDK11) являются динамическими c docker контейнерами на машине 2.

Цель:

  1. Задание, которое запускает контейнер MySQL в качестве подготовительного шага.
  2. Создайте новую базу данных в контейнере MySQL.
  3. Запустите подчиненный контейнер Jenkins и подключитесь к MySQL база данных контейнеров для выполнения тестов с использованием новой базы данных.
  4. Удалить контейнеры после завершения задания.

Что сделано до сих пор?

Нижний конвейер создан в соответствии с документом do c Использование Docker с конвейером .

node {
        docker.withServer('tcp://172.18.0.1:2376') {
            docker.image('mysql:8.0.20').withRun('-e "MYSQL_ROOT_PASSWORD=my-secret-pw" -p 3306:3306') { c ->
                docker.image('mysql:8.0.20').inside("--link ${c.id}:db") {
                    /* Wait until mysql service is up */
                    sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done'
                }
                docker.image('slave:jdk11').inside("--link ${c.id}:db") {
                    /*
                     * Run some tests which require MySQL, and assume that it is
                     * available on the host name `db`
                     */
                    sh 'java -version'
                }
            }
        }
}

В чем проблема?

  1. Состояние задания на ведомом устройстве, на котором оно было запущено.

    jdk11-00002tlztcaay на docker кажется, выполняется внутри e контейнер 4500cc9dc8df5b3f1eefb2e29bf9e20e390cd6e454886a8c94cdf7327772aecc, но / home / jenkins / workspace / test-sidecar не может быть найден среди [/ var / jenkins_home / tools, /home/jenkins/.см. среди [/ var / jenkins_home / tools, /home/jenkins/.ssh visible

  2. MySQL запускается контейнер.

    $ docker run -t - d -u 1000: 1000 --ссылка 174ddb69b163232937b4d93c55af7c07132a55c0e3794610110742faf216021d: db -w / home / jenkins / workspace / test-sidecar -v / home / jenkins / workspace / test-sidecar: / home / jenkins, sidecar: / home / test-side / workspace z -v / home / jenkins / workspace / test-sidecar@tmp: / home / jenkins / workspace / test-sidecar@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 ******** mysql: 8.0.20 cat

  3. Jenkins exe cutes docker top command.

    $ docker top 8eb75a9953d5fde678a06549e39fdd362c9305a12ac161c6cc4780b4a8b733f4 -eo pid, comm [конвейер] {sh* *

    [конвейерный процесс] * 1093, очевидно, никогда не запускался в / home / jenkins / workspace / test-sidecar@tmp/durable-cf6adc3a (временный запуск Jenkins с -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS = true может прояснить проблему) [Pipeline]}

  4. Он удаляет контейнер.

Пожалуйста, помогите определить ошибку в конвейере, которая блокирует мою работу. В нем теряется почти день.

Попробовали другие методы: Даже пробовал запустить docker только на машине 1, но все равно возникает та же ошибка.

...