Не могу построить Дженкинс последним в Докере - PullRequest
0 голосов
/ 03 декабря 2018

******** ОБНОВЛЕНИЕ *********

В Bash-скрипте нет ошибок, проверено с помощью https://www.shellcheck.net/

Добавление в Dockerfileстрока

RUN tty | sed -e "s:/dev/::"

Выходы:

No tty

Следующая строка на Dockerfile всегда дает сбой:

ENTRYPOINT ["/usr/local/bin/jenkins.sh"]

enter image description here

Я оставляю изображение, чтобы уточнить.Короче говоря, я думаю, что мне нужно каким-то образом прикрепить tty к пакетному сценарию, но не знаю, как это сделать.

Спасибо

------------------- СТАРЫЙ СОДЕРЖАНИЕ -------------------

Мне нужно обновить образ Jenkins до 2.138.2.Вот отрывок оригинального Dockerfile:

FROM openjdk:8-jdk

RUN apt-get update && apt-get install -y git curl && rm -rf /var/lib/apt/lists/*

# ...

# Use tini as subreaper in Docker container to adopt zombie processes
COPY tini_pub.gpg ${JENKINS_HOME}/tini_pub.gpg
RUN curl -fsSL https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-$(dpkg --print-architecture) -o /sbin/tini \
    && curl -fsSL https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-$(dpkg --print-architecture).asc -o /sbin/tini.asc \
    && gpg --import ${JENKINS_HOME}/tini_pub.gpg \
    && gpg --verify /sbin/tini.asc \
    && rm -rf /sbin/tini.asc /root/.gnupg \

# ...

ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/jenkins.sh"]

Использование этого Dockerfile FAILS из-за оператора gpg --import теперь необходимо исправить с помощью опции --no-tty.Таким образом, эта строка остается следующей:

&& gpg --no-tty --import ${JENKINS_HOME}/tini_pub.gpg \

Это не нормально, поскольку выполнение jenkins.sh теперь не выполняется несколькими способами.Код сценария начинается следующим образом:

#! /bin/bash -e

: "${JENKINS_WAR:="/usr/share/jenkins/jenkins.sh

Этот сценарий вызывается из файла Docker в этой строке:

ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/jenkins.sh"]

Но теперь происходит сбой с несколькими ошибками, и кажется, что это невозможнообработайте файл, не удаляя строку shebang и не удаляя опцию '-' или '-e'.Остальная часть файла не обрабатывается нормально, если мы изменим bash на другую оболочку (не странную) и не удалим параметр -e (если я это сделаю, точка входа не найдет сценарий jenkins.sh).

Подводя итог, мне нужно было удалить tty из gpg, но после этого я потерял доступ к сценариям bash.

Я проверил применяемый обходной путь, здесь описан обходной путь ((еслиЯ прав, дело № 8, gpg может написать в tty в какой-то момент ): https://lists.gnupg.org/pipermail/gnupg-users/2017-April/058162.html

Есть ли способ прикрепить tty к entrypoint или иметь какие-либо настройки в скрипте, чтобы эта работа работала нормально?

Спасибо.

1 Ответ

0 голосов
/ 05 декабря 2018

Наконец-то запущен на виртуальной машине Linux и никаких проблем.Проблема с его запуском в Windows.

...