Docker?Compose構(gòu)建Jenkins的實(shí)現(xiàn)
Jenkins
創(chuàng)建目標(biāo)文件夾
$ cd /usr/local $ mkdir docker $ cd docker $ mkdir jenkins $ cd jenkins $ vi docker-compose.yml
創(chuàng)建docker-compose.yml
內(nèi)容如下:
version: '3.1' services: jenkins: restart: always image: jenkins/jenkins container_name: jenkins ports: # 發(fā)布端口 - 8080:8080 # 基于 JNLP 的 Jenkins 代理通過(guò) TCP 端口 50000 與 Jenkins master 進(jìn)行通信 - 50000:50000 environment: TZ: Asia/Shanghai volumes: - ./data:/var/jenkins_home
安裝過(guò)程中會(huì)出現(xiàn)數(shù)據(jù)卷目錄權(quán)限問(wèn)題,用以下命令解決:
chown -R 1000 /usr/local/docker/jenkins/data
啟動(dòng)容器
docker-compose up -d
啟動(dòng)完成后訪問(wèn):http://ip:8080
。
解鎖 Jenkins
Jenkins
第一次啟動(dòng)時(shí)需要輸入一個(gè)初始密碼用以解鎖安裝流程,使用 docker logs jenkins
即可方便的查看到初始密碼。也可以根據(jù)提示在容器中查看/var/jenkins_home/secrets/initialAdminPassword
文件。
docker logs -f jenkins
*************************************************************
*************************************************************
*************************************************************Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:67b9966bc4334a17ad7a7daef043bac8
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
插件安裝
插件是 Jenkins
的核心,其豐富的插件可以滿(mǎn)足不同人群的不同需求。
Jenkins
官網(wǎng)插件地址:https://plugins.jenkins.io/
輸入初始密碼后,選擇自選方式安裝插件。
注意:除了默認(rèn)勾選的插件外,一定要勾選 Publish over SSH
插件,這是我們實(shí)現(xiàn)持續(xù)交付的重點(diǎn)插件。
點(diǎn)擊安裝后,根據(jù)網(wǎng)絡(luò)情況,安裝時(shí)間不一樣,耐性等待即可。
出現(xiàn)部分插件安裝失敗時(shí),點(diǎn)擊重試按鈕,多次重試,如果還是無(wú)法安裝,記住這些插件的名字,稍后可以手動(dòng)安裝。
安裝成功效果圖 創(chuàng)建管理員賬號(hào)
進(jìn)入首頁(yè)
Jenkins手動(dòng)安裝插件
如下例子為安裝中文插件
Manage Jenkins
-> Manage Plugins
-> Avaliable
右上角搜索框查找想要安裝的插件,選中,點(diǎn)擊Download now and install after restart
。
下載好后,重啟Jenkins
。
docker-compose down docker-compose up -d
配置 JDK & Maven
上傳 JDK
和 Maven
的 tar
包到服務(wù)器(容器數(shù)據(jù)卷目錄),進(jìn)行解壓縮。
Manage Jenkins
-> Global Tool Configuration
(系統(tǒng)管理
->全局工具配置
)。
安裝 JDK
/var/jenkins_home/jdk1.8.0_152
安裝Maven
點(diǎn)擊保存
安裝動(dòng)態(tài)參數(shù)插件
該插件的主要目的是為了方便我們后面在做項(xiàng)目構(gòu)建時(shí)可以按照版本進(jìn)行構(gòu)建(支持一鍵回滾)
Manage Jenkins
->Manage Plugins
->Avaliable
- 搜索
Extended Choice Parameter
- 點(diǎn)擊
Download now and install after restart
。
配置 Jenkins 的 GitLab SSH 免密登錄
交互式進(jìn)入 Jenkins
容器
docker exec -it jenkins /bin/bash
生成 SSH KEY
ssh-keygen -t rsa -C "your_email@example.com"
查看公鑰
cat /var/jenkins_home/.ssh/id_rsa.pub
復(fù)制公鑰到 GitLab
手動(dòng)克隆一次項(xiàng)目,該步驟的主要作用是為了生成和服務(wù)器的驗(yàn)證信息
jenkins@730898bc8b96:~$ git clone ssh://git@192.168.50.131:2222/test/test.git Cloning into 'test'... The authenticity of host '[192.168.50.131]:2222 ([192.168.50.131]:2222)' can't be established. ECDSA key fingerprint is SHA256:x21ujjNoJ+7wXGszSI7s70szbK0/+7mTOeDP5h0saMs. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[192.168.50.131]:2222' (ECDSA) to the list of known hosts. remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. jenkins@730898bc8b96:~$
查看生成文件
jenkins@730898bc8b96:~$ cd .ssh/ jenkins@730898bc8b96:~/.ssh$ ls -al total 20 drwx------ 2 jenkins jenkins 4096 Apr 9 19:03 . drwxr-xr-x 16 jenkins root 4096 Apr 9 19:03 .. -rw------- 1 jenkins jenkins 2602 Apr 9 18:57 id_rsa -rw-r--r-- 1 jenkins jenkins 572 Apr 9 18:57 id_rsa.pub -rw-r--r-- 1 jenkins jenkins 222 Apr 9 19:03 known_hosts jenkins@730898bc8b96:~/.ssh$
配置 Publish over SSH
系統(tǒng)管理
-> 系統(tǒng)設(shè)置
-> Publish over SSH
點(diǎn)擊新增,其中 Remote Directory
是指 Jenkins
可以在目標(biāo)服務(wù)器操作的目錄,選擇 Use password
, 輸入目標(biāo)服務(wù)器密碼
測(cè)試能否正常通信
點(diǎn)擊保存
持續(xù)交付 Maven 項(xiàng)目
為項(xiàng)目創(chuàng)建標(biāo)簽
在 GitLab
中為項(xiàng)目創(chuàng)建標(biāo)簽
在 Jenkins 中創(chuàng)建 Maven Project
在 Jenkins
中創(chuàng)建一個(gè)基于 Maven
的任務(wù)
這里沒(méi)有Maven
項(xiàng)目選項(xiàng),需要安裝插件 Maven Integration
、Pipeline Maven Integration
配置第一次構(gòu)建
構(gòu)建項(xiàng)目
查看構(gòu)建日志
配置正式構(gòu)建
增加參數(shù)化構(gòu)建過(guò)程
這里使用了 Groovy 腳本來(lái)查詢(xún)最近的 tags 版本,代碼如下:
def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/myshop-dependencies;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ] ver_keys.execute().text.tokenize('\n')
關(guān)閉源碼管理
增加構(gòu)建步驟
shell
腳本代碼如下:
echo $RELEASE_VERSION cd /var/jenkins_home/workspace/myshop-dependencies git checkout $RELEASE_VERSION git pull origin $RELEASE_VERSION mvn clean package
使用參數(shù)化構(gòu)建項(xiàng)目
批準(zhǔn) groovy
腳本
再次點(diǎn)擊參數(shù)化構(gòu)建
查看構(gòu)建日志
發(fā)送文件或執(zhí)行遠(yuǎn)程命令
Source files
:需要傳輸?shù)竭h(yuǎn)程目標(biāo)服務(wù)器的文件
**/*.jar,docker/**
Remove prefix
:刪除前綴。比如傳輸 **/*.jar
,我們打包的 .jar
文件是在 target
目錄下的,傳輸時(shí)會(huì)一并創(chuàng)建 target
目錄,如果不希望創(chuàng)建 target
目錄,則可以使用該參數(shù)屏蔽掉這些前綴文件夾。
Remote directory
:在遠(yuǎn)程目標(biāo)服務(wù)器創(chuàng)建操作目錄
myapp
Exec command
:在遠(yuǎn)程目標(biāo)服務(wù)器執(zhí)行控制臺(tái)命令
cd /usr/local/jenkins/myapp cp target/myapp-1.0.0-SNAPSHOT.jar docker cd docker docker build -t 192.168.50.128:5000/myapp:v1.0.0 . docker push 192.168.50.128:5000/myapp:v1.0.0 docker-compose down docker-compose up -d docker image prune -f
到此這篇關(guān)于Docker Compose構(gòu)建Jenkins的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker Compose構(gòu)建Jenkins內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CentOS 7安裝Docker服務(wù)詳細(xì)過(guò)程
這篇文章主要為大家介紹了CentOS 7安裝Docker服務(wù)詳細(xì)過(guò)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11docker-compose啟動(dòng)docker文件掛載失敗的解決
這篇文章主要介紹了docker-compose啟動(dòng)docker文件掛載失敗的解決方案。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Docker搭建es和kibana的詳細(xì)過(guò)程
這篇文章主要介紹了Docker搭建es和kibana的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11CentOS 7下設(shè)置Docker代理(Linux下Systemd服務(wù)的環(huán)境變量配置)
本文給大家分享Linux下Systemd服務(wù)的環(huán)境變量配置方法,此示例將覆蓋默認(rèn)docker.service文件,對(duì)CentOS 7下設(shè)置Docker代理的相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2021-05-05使用dockerfile構(gòu)建nginx鏡像的方法示例
這篇文章主要介紹了使用dockerfile構(gòu)建nginx鏡像的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09docker5 全功能harbor倉(cāng)庫(kù)搭建過(guò)程
Harbor是構(gòu)建企業(yè)級(jí)私有docker鏡像的倉(cāng)庫(kù)的開(kāi)源解決方案,本文給大家分享docker5 全功能harbor倉(cāng)庫(kù)搭建過(guò)程,感興趣的朋友一起看看吧2021-06-06詳解docker容器硬盤(pán)動(dòng)態(tài)擴(kuò)容
本篇文章主要介紹了詳解docker容器硬盤(pán)動(dòng)態(tài)擴(kuò)容,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04docker安裝nginx并配置ssl證書(shū)的方法步驟
本文主要介紹了docker安裝nginx并配置ssl證書(shū)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06