Docker Blueocean Jenkins setup, with Configuration as Code plugin
1.6K
Repo: https://github.com/jenkinsci/docker
# cleanup local jenkins data
rm -rf data
mkdir data
# deploy configs
cp -rv cfg/* data
# building image
docker build --tag myjenkins:1.0 .
# running image
docker run --name jenkins \
--detach \
-p 8080:8080 \
-p 50000:50000 \
--env JAVA_OPTS="-Dcasc.jenkins.config=/var/jenkins_home/casc/ -Dhudson.footerURL=https://svensporer.net -Djenkins.install.runSetupWizard=false -Dhudson.model.UpdateCenter.never=true" \
-v `pwd`/data:/var/jenkins_home myjenkins:1.0
# update
# create backup of data/ volume
# docker image rm myjenkins:1.0 # optional
# building image
docker build --tag myjenkins:1.1 .
docker run ...
Todo:
jenkins_home on docker hostNotes:
/var/jenkins_home (plugins, config, ...)
Possible system props: https://www.jenkins.io/doc/book/managing/system-properties/
to check:
# <property> # <default>
# -------------------------------------------------------------------
hudson.model.UpdateCenter.never=true # false
hudson.consoleTailKB=500 # 150
jenkins.security.ApiTokenProperty.showTokenToAdmins=true # false
# jenkins.security.FrameOptionsPageDecorator.enabled=false # true
jenkins.ui.refresh=true # false
# usage
--env JAVA_OPTS=-Dhudson.footerURL=http://mycompany.com
mkdir data
cat > data/log.properties <<EOF
handlers=java.util.logging.ConsoleHandler
jenkins.level=FINEST
java.util.logging.ConsoleHandler.level=FINEST
EOF
docker run --name myjenkins -p 8080:8080 -p 50000:50000 --env JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties" -v `pwd`/data:/var/jenkins_home jenkins/jenkins:lts
JENKINS_OPTS="--prefix=/jenkins"
nginx reverse proxy: https://wiki.jenkins.io/display/JENKINS/Jenkins+behind+an+NGinX+reverse+proxy
force https with cert included in image:
FROM jenkins/jenkins:lts
COPY https.pem /var/lib/jenkins/cert
COPY https.key /var/lib/jenkins/pk
ENV JENKINS_OPTS --httpPort=-1 --httpsPort=8083 --httpsCertificate=/var/lib/jenkins/cert --httpsPrivateKey=/var/lib/jenkins/pk
EXPOSE 8083
# slave agent port:
ENV JENKINS_SLAVE_AGENT_PORT 50001
# or as docker parameter:
# docker run --name myjenkins -p 8080:8080 -p 50001:50001 --env JENKINS_SLAVE_AGENT_PORT=50001 jenkins/jenkins:lts
#=> adds jenkins.model.Jenkins.slaveAgentPort to JAVA_OPTS
FROM jenkins/jenkins:lts
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
https://github.com/jenkinsci/slack-plugin
https://github.com/jenkinsci/configuration-as-code-plugin
def notifySlack(String buildStatus = 'STARTED') {
// Build status of null means success.
buildStatus = buildStatus ?: 'SUCCESS'
def color
if (buildStatus == 'STARTED') {
color = '#D4DADF'
} else if (buildStatus == 'SUCCESS') {
color = '#BDFFC3'
} else if (buildStatus == 'UNSTABLE') {
color = '#FFFE89'
} else {
color = '#FF9FA1'
}
def msg = "${buildStatus}: `${env.JOB_NAME}` #${env.BUILD_NUMBER}:\n${env.BUILD_URL}"
slackSend(color: color, message: msg)
}
node {
try {
notifySlack()
sh 'runbuild'
} catch (e) {
currentBuild.result = 'FAILURE'
throw e
} finally {
notifySlack(currentBuild.result)
}
}
// colorize the whole output of pipeline
pipeline {
agent any
options {
ansiColor('xterm')
}
stages {
stage('Build') {
steps {
echo '\033[34mHello\033[0m \033[33mcolorful\033[0m \033[35mworld!\033[0m'
}
}
}
}
configure:
# plugins
greenballs
configuration-as-code
slack
global-slack-notifier
periodicbackup
thinBackup
greenballs
console-column-plugin
display-url-api
built-on-column
mask-passwords
Custom Jenkins backup job?
Content type
Image
Digest
Size
402.4 MB
Last updated
about 5 years ago
docker pull sohooo/jenkins