Как создать образ докера для jenkins с поддержкой android и build build - PullRequest
0 голосов
/ 06 октября 2018

В настоящее время я пытаюсь создать свой собственный образ докера Jenkins с целью иметь сервер Jenkins, который может создавать проекты на основе Android gradle и образы докеров.

Из моего репозитория github (https://github.com/mikedolx/docker-jenkins-android) вот так выглядит мой файл докера:

FROM xmartlabs/android AS android

USER root
RUN apt-get update && \
        apt-get install -y apt-transport-https curl software-properties-common && \
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
        add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
        apt-get update && \
        apt-cache policy docker-ce && \
        apt-get clean && \
        apt-get install -y docker-ce

FROM jenkins/jenkins

ENV ANDROID_HOME /opt/android-sdk-linux
COPY --from=android ${ANDROID_HOME} ${ANDROID_HOME}
COPY --from=android /usr/lib/jvm/java-8-oracle /usr/lib/jvm/java-8-oracle
COPY --from=android /usr/bin/gradle /usr/bin/gradle
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools

# Unfortunately, "chown" flag seems not to be available for COPY in DockerHub.
USER root
RUN chown -R jenkins:jenkins ${ANDROID_HOME}
USER jenkins

ENV ANDROID_EMULATOR_FORCE_32BIT true

Я добавил необходимые шаги для установки докера. Я взял их из этого блога: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04.

Iмогу успешно создать образ и запустить сервер jenkins с помощью следующего docker-compose.yml

version: '2.2'

services:

  jenkins:
    image: mikedolx/jenkins-android:latest
    container_name: jenkins
    user: jenkins
    volumes:
      - jenkins-data:/var/jenkins_home
    ports:
      - 8080:8080
      - 50000:50000
volumes:
  jenkins-data:

У меня есть проект конвейерного проекта для создания этого образа (https://github.com/mikedolx/docker-nextcloud). Когда я запускаю сборкуостанавливается на втором этапе со следующим журналом:

[Nextcloud-Github] Running shell script
+ docker build -t mikedolx/nextcloud:14.0.1 --file Dockerfile.14.0 .
/var/jenkins_home/workspace/Nextcloud-Github@tmp/durable-f5e443ce/script.sh: 2: /var/jenkins_home/workspace/Nextcloud-Github@tmp/durable-f5e443ce/script.sh: docker: not found

Когда я ssh в контейнер jenkins и пытаюсь запустить "docker", я получаю ту же ошибку.

Вопросы:

  1. как мне построить образ докера jenkins, содержащий необходимые двоичные файлы для построения образа докера?
  2. Это правильный подход для создания образа докера через jenkins?

Заранее спасибо,

С уважением,

Майкл

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

После того, как я изменил порядок установки в моем Dockerfile (переместил все после «ОТ jenkins / jenkins»), у меня наконец-то появился бинарный файл докера в консоли.Теперь, когда я запускаю свою сборку в jenkins, я получаю следующую ошибку

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

, причина этого в том, что я отобразил docker.sock моего хоста как том в свой контейнер.Но, похоже, что-то не так.Нужно проверить это.

РЕДАКТИРОВАТЬ: После того, как я сменил владельца хоста /var/run/docker.sock на jenkins: jenkins, я смог выполнить необходимые действия командной строки докера в моем проекте jenkins.

0 голосов
/ 07 октября 2018

Вам нужно запустить Docker в Docker.

Итак, в двух словах, вы подключаете док-станцию ​​хоста как том в Jenkins и имеете совместимые исполняющие файлы в вашем контейнере.

Это хорошее описание

Существует гораздо больше вопросов, таких как безопасность в зависимости от других контейнеров, запущенных на вашем хосте, а также способы ее запуска при использовании агентов jenkins.

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