Я искал в Интернете целых 2 дня без какого-либо прогресса. Может быть так, что ответ находится всего в одном клике, но я не могу его найти. Я ослеп. Кстати, я работаю на Windows 10...
Проблема в том, что я хочу создать простой файл Dockerfile, который может создать образ Docker с мастером Jenkins со всем, что я хочу, чтобы он содержал. Например:
- общая конфигурация Дженкинса
- пользователи
- плагины
- рабочие места
- рабы
так далее...
Теперь у меня по крайней мере некоторые части работают... Я могу избавиться от первоначального «привет, добро пожаловать в jenkins» и определить моего первого пользователя + установить плагины, которые я записал в текстовом файле.
НО, когда дело доходит до чертовой работы Дженкинса, все становится немного сложнее.
Поскольку мой Dockerfile берет «базовый образ» из jenkins/jenkins:lts-alpine, он создает том для /var/jenkins_home/, в котором, похоже, хранятся задания. И как-то проблематично копировать файлы в эту папку. Я попытался добавить инструкцию COPY в свой Dockerfile для копирования папки и файлов, которые создаются, когда я вручную создаю задание в Jenkins, но похоже, что Jenkins по какой-то причине не читает их, даже после перезапуска/перезагрузки с диска. Дело в том, что он действительно работает при копировании заданий после «установки». Как docker cp jobs-on-my-machine container:/var/jenkins_home/jobs, но мне не нужно много лишнего, кроме моего Dockerfile. Я хочу, чтобы это было как можно проще. С этим решением я, скорее всего, даже не смогу зафиксировать это изменение, поскольку diff docker показывает этот вывод:
C:\Dev>docker diff 3
C /tmp
A /tmp/hsperfdata_jenkins
A /tmp/hsperfdata_jenkins/6
A /tmp/jetty-0.0.0.0-8080-war-_-any-6459623464825334329.dir
A /tmp/jna--1712433994
A /tmp/winstone4948624124562796293.jar
видите ли... В каталоге /var/jenkins_home/jobs/ ничего не изменилось... Вообще ничего не отслеживается :(
Взгляните на мой контент Dockerfile ниже:
# Pull the latest Jenkins docker image from Docker Hub.
# Currently Alpine is used because the Internet says its safer :)
from jenkins/jenkins:lts-alpine
# Disable Jenkins setup wizard normally showing up during initial startup
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"
# Copy the groovy script creating the first user into the
# run-on-startup-directory into the docker image
COPY **security.groovy** /usr/share/jenkins/ref/init.groovy.d/security.groovy
# Copy the plugins text file into the docker image
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
# Run the Jenkins default install-plugins script to install
# plugins defined in the plugins text file
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
# Add the predefined Jenkins jobs _inside_ folder 'jenkins-jobs' into Jenkins
COPY jenkins-jobs /var/jenkins_home/jobs/
Содержание security.groovy:
#!groovy
import jenkins.model.*
import hudson.security.*
import jenkins.security.s2m.AdminWhitelistRule
def instance = Jenkins.getInstance()
def hudsonRealm = new HudsonPrivateSecurityRealm(false)
hudsonRealm.createAccount("admin", "admin")
instance.setSecurityRealm(hudsonRealm)
def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
instance.setAuthorizationStrategy(strategy)
instance.save()
Jenkins.instance.getInjector().getInstance(AdminWhitelistRule.class).setMasterKillSwitch(false)
плагины.txt:
cloudbees-folder
bouncycastle-api
structs
script-security
workflow-step-api
scm-api
workflow-api
junit
antisamy-markup-formatter
workflow-support
workflow-job
token-macro
build-timeout
credentials
ssh-credentials
plain-credentials
credentials-binding
timestamper
durable-task
workflow-durable-task-step
matrix-project
resource-disposer
ws-cleanup
ant
gradle
pipeline-milestone-step
jquery-detached
jackson2-api
ace-editor
workflow-scm-step
workflow-cps
pipeline-input-step
pipeline-stage-step
pipeline-graph-analysis
pipeline-rest-api
handlebars
momentjs
pipeline-stage-view
pipeline-build-step
pipeline-model-api
pipeline-model-extensions
apache-httpcomponents-client-4-api
jsch
git-client
git-server
workflow-cps-global-lib
display-url-api
mailer
branch-api
workflow-multibranch
authentication-tokens
docker-commons
docker-workflow
pipeline-stage-tags-metadata
pipeline-model-declarative-agent
workflow-basic-steps
pipeline-model-definition
workflow-aggregator
github-api
git
github
github-branch-source
pipeline-github-lib
mapdb-api
subversion
ssh-slaves
matrix-auth
pam-auth
ldap
email-ext
mercurial
plugins.txt
, скопированное в/usr/share/jenkins/ref/plugins.txt
- person Stefan Crain   schedule 28.03.2018