溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Jenkins鏡像

發(fā)布時(shí)間:2021-12-22 16:30:34 來源:億速云 閱讀:244 作者:小新 欄目:云計(jì)算

這篇文章主要介紹如何使用Jenkins鏡像,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

如何使用鏡像

$ docker run -p 8080:8080 index.csphere.cn/microimages/jenkins

這樣啟動(dòng)將會(huì)把所有workspace存儲(chǔ)到/var/jenkins_home目錄,包括所有數(shù)據(jù)、插件以及配置,你也許希望運(yùn)行在一個(gè)持久化的數(shù)據(jù)卷里:

$ docker run --name myjenkins -p 8080:8080 -v /var/jenkins_home index.csphere.cn/microimages/jenkins

myjenkins這個(gè)容器里的卷將會(huì)得到持久化,你也可以映射一個(gè)主機(jī)目錄:

$ sudo chown 999 /your/home
$ docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home index.csphere.cn/microimages/jenkins

jenkins管理員用戶

jenkins鏡像啟動(dòng)后,打開瀏覽器http://your-ip:8080, 會(huì)提示輸入用戶名密碼,這里默認(rèn)用戶名admin,密碼admin。進(jìn)入后在用戶菜單里修改密碼。

如何和docker結(jié)合

docker最大的優(yōu)勢(shì)在于部署,jenkins最強(qiáng)大的在于作業(yè)調(diào)度和插件系統(tǒng),如何結(jié)合兩者?

jenkins鏡像里內(nèi)置了docker client命令行工具,/usr/bin/docker,因此我們只需要傳遞DOCKER_HOST環(huán)境變量 或者映射docker.sock文件給jenkins容器,就可以讓jenkins容器里面擁有docker的操作能力,進(jìn)而將兩者結(jié)合起來。

比如:

docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock index.csphere.cn/microimages/jenkins

然后我們就可以在自己的jenkins項(xiàng)目中,添加一個(gè)執(zhí)行shell腳本,示例如下:

TAG=$(echo $GIT_COMMIT | awk  '{ string=substr($0, 1, 7); print string; }' )
docker build -t demo:$TAG .
docker run --rm demo:$TAG run_test
docker tag -f demo:$TAG your_registry/demo:$TAG
docker push your_registry/demo:$TAG

備份數(shù)據(jù)

如果你掛載了主機(jī)目錄到容器內(nèi),那么備份該目錄即可。這也是我們推薦的方法。將/var/jenkins_home目錄看作數(shù)據(jù)庫目錄。

如果你的卷在容器里面,那么可以通過docker cp $ID:/var/jenkins_home命令拷貝出數(shù)據(jù)。

如果對(duì)docker數(shù)據(jù)管理有興趣,可以閱讀 Managing data in containers

設(shè)置執(zhí)行器的數(shù)量

你可以通過groovy腳本來指定jenkins master執(zhí)行器的數(shù)量。默認(rèn)是2個(gè),但你可以擴(kuò)展鏡像:

# executors.groovy
Jenkins.instance.setNumExecutors(5)

和Dockerfile

FROM index.csphere.cn/microimages/jenkins
COPY executors.groovy /usr/share/jenkins/ref/init.groovy.d/executors.groovy

構(gòu)建executors

你可以在master上構(gòu)建,但如果想在slave上構(gòu)建的話,必須做好50000端口映射,這是用來連接slave agent的。

傳遞JVM參數(shù)

你也許想修改JVM的運(yùn)行參數(shù),比如heap memory:

$ docker run --name myjenkins -p 8080:8080 -p 50000:50000 --env JAVA_OPTS=-Dhudson.footerURL=http://mycompany.com index.csphere.cn/microimages/jenkins

配置日志

Jenkins的日志可以通過java.util.logging.config.fileJava property來配置

$ 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">

傳遞Jenkins的啟動(dòng)參數(shù)

你也可以傳遞jenkins的運(yùn)行參數(shù):

docker run jenkins --version

你還可以在環(huán)境變量JENKINS_OPTS中定義jenkins的運(yùn)行參數(shù),比如:

FROM index.csphere.cn/microimages/jenkins

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

你還可以通過定義環(huán)境變量JENKINS_SLAVE_AGENT_PORT來改變默認(rèn)的slave端口

FROM index.csphere.cn/microimages/jenkins
ENV JENKINS_SLAVE_AGENT_PORT 50001

或者直接通過-e環(huán)境變量提供:

docker run --name myjenkins -p 8080:8080 -p 50001:50001 -e JENKINS_SLAVE_AGENT_PORT=50001 index.csphere.cn/microimages/jenkins

安裝更多工具

我們可以繼承此鏡像,來定義我們自己的jenkins的hook腳本或插件。比如我們希望加入更多的插件:

具體的插件可以通過Jenkins插件 搜索。

plugins.txt文件的內(nèi)容如下:

pluginID:version
anotherPluginID:version

Dockerfile編寫如下:

FROM index.csphere.cn/microimages/jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

以上是“如何使用Jenkins鏡像”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI