POST
這篇文章是講解從無到有的JENKINS+GITHUB
持續(xù)集成環(huán)境的搭建盏筐。JENKINS
和其他平臺的結(jié)合搭建琢融,比如碼云
啥的配合漾抬,操作過程大同小異纳令。下面圈匆,我們STEP BY STEP
地講解一下性湿,如有不合理的地方叹括,還請指出?
購買一個(gè)服務(wù)器
為什么要購買服務(wù)器呢领猾?
因?yàn)槿绻惚镜卮罱?code>jenkins環(huán)境之后摔竿,跟github
聯(lián)通不了--需要ip來設(shè)置githubwebhooks
的。當(dāng)然继低,有什么其他操作可以聯(lián)通github
的,還望指出:)
注意:如果你在本地運(yùn)行jenkins柴底,那么你的
webhooks
可能是https://localhost:8080/github-webhook/
,這不會起作用的粱胜,因?yàn)?code>webhooks只在網(wǎng)絡(luò)中起作用。你可以參考文章Adding a GitHub Webhook in Your Jenkins Pipeline來了解一下焙压。
這里野哭,我購買了阿里云的低配服務(wù)器,操作系統(tǒng)是centos7
篱蝇。購買好服務(wù)器之后态兴,我簡單通過NGINX
來代理,展示一個(gè)簡單的靜態(tài)頁面疟位。當(dāng)然瞻润,這里并不是我們的重點(diǎn),所以就不展開來說了。
需要注意的是绍撞,你要配置安全組正勒,才能看到靜態(tài)的站點(diǎn)。我自己配置如圖:
在上傳資源之后傻铣,這時(shí)你打開阿里云上相關(guān)的ip地址章贞,如果你沒有看到期望的頁面,請檢查一下安全組的設(shè)置非洲。
準(zhǔn)備一款終端
為什么要準(zhǔn)備呢鸭限?
我們不可能總是登錄自己的阿里云賬號,然后切換到自己的服務(wù)器那里連接它两踏,然后再屁顛屁顛地操作程序吧~
如果你喜歡败京,那你就保留那種操作習(xí)慣吧。只能說你時(shí)間真多~
這里梦染,自己在mac pro
和dell
電腦上都安裝了SecureCRT【一款支持SSH(SSH1和SSH2)的終端仿真程序】赡麦,遠(yuǎn)程控制自己的服務(wù)器。我覺得挺好用的帕识,喜歡泛粹!?
搭建JENKINS環(huán)境
服務(wù)器和遠(yuǎn)程控制的仿真程序都已經(jīng)準(zhǔn)備完成了,接下來肮疗,我們在服務(wù)器上面搭建所需的環(huán)境晶姊。
安裝java環(huán)境
先在服務(wù)器上安裝java
環(huán)境,可參考這篇文章操作伪货。安裝好java sdk
后帽借,配置好環(huán)境。
之后超歌,你可以通過java -version
等命令查看或驗(yàn)證,下面是自己服務(wù)器上java
的安裝信息和相關(guān)路徑的設(shè)置:
1蒂教、路徑/usr/lib/java
是本機(jī)下載好jdk-8u231-linux-x64.tar.gz
壓縮文件上傳到服務(wù)器的存放文件路徑巍举,解壓后可以將其壓縮包刪除。
2凝垛、/usr/java/java8
是自己在服務(wù)器上解壓文件路徑懊悯。
安裝jenkins
按照下面的命令行進(jìn)行操作:
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="bash" cid="n27" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">$ yum install yum-fastestmirror -y #安裝自動選擇最快源的插件
添加Jenkins源:
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
$ yum install jenkins #安裝jenkins</pre>
安裝完畢后,你就可以啟動jenkins
了:
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="bash" cid="n29" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">sudo service jenkins start</pre>
當(dāng)然梦皮,啟動之后炭分,它可能出現(xiàn)下面的問題:
圖上表明是你java
的引入路徑有問題了~
上圖意思是:啟動程序找不到java
。
那么剑肯,你需要執(zhí)行vim /etc/init.d/jenkins
命令進(jìn)入文件捧毛,修改其路徑就行了,如下:
備注:linux 使用
find .|xargs grep -ri "要查找的字符串"
命令查找包含某字符串的文件
順利啟動后,控制臺有個(gè)success
的提醒呀忧。這時(shí)师痕,你在瀏覽器上輸入http://your server ip:8080
就可以打開了,呈現(xiàn)信息如下圖而账。jenkins
的默認(rèn)端口號是8080
胰坟,當(dāng)然,你可以執(zhí)行vim /etc/sysconfig/jenkins
進(jìn)入文件修改端口號等泞辐。
同上笔横,如果網(wǎng)頁不能打開,請查看下自己在阿里云那里有沒有設(shè)置好安全組了~
嗯咐吼,接下來就是一步步解鎖Jenkins
了吹缔。
Jenkins的使用
我們能在自己的服務(wù)上面成功安裝并運(yùn)行了jenkins
,下面我們來升級打怪汽烦,使用下jenkins
涛菠。
解鎖
根據(jù)提示,我們執(zhí)行cat /var/lib/jenkins/secrets/initialAdminPassword
命令得到Administrator password
撇吞,然后點(diǎn)擊繼續(xù)按鈕俗冻,往下走。
我們選擇安裝推薦的插件
牍颈,等待安裝完畢迄薄。如果有安裝失敗的插件可以跳過,之后可以根據(jù)需求安裝煮岁〖ケ危【安裝過程請保持網(wǎng)絡(luò)的順暢】
初始化賬號和密碼
你可以創(chuàng)建自己的管理員用戶信息,當(dāng)然也可以點(diǎn)擊使用admin賬號繼續(xù)
鏈接跳過画机。
設(shè)置完成之后冶伞,進(jìn)入界面:
關(guān)聯(lián) github
我們的目的是要將github和jenkins結(jié)合起來,進(jìn)行自動化發(fā)布〔绞希現(xiàn)在來關(guān)聯(lián)下github
响禽。以我自己的github
賬號為例,進(jìn)行配置荚醒。
生成 secret text
secret text
在github
上被稱為token
芋类。
進(jìn)入github --> Settings --> Developer settings --> Personal access tokens -> Generate new token
之后生成一個(gè)新的token
:
填寫好toke
的名稱,勾選完上面的兩個(gè)選項(xiàng)界阁,之后按Generate token
按鈕進(jìn)行確認(rèn):
自己先保存此token
侯繁,如果丟失,之后再也無法找到這個(gè)token
了泡躯。
設(shè)置 github webhooks
接著贮竟,選擇自己的一個(gè)github
項(xiàng)目丽焊,這里我拿自己的博客倉庫https://github.com/reng99/blogs
作為例子:
進(jìn)入github上指定的項(xiàng)目 --> Settings --> Webhooks --> Add Webhook --> 輸入剛剛部署jenkins的服務(wù)器的IP
Payload URL
的內(nèi)容就是http://your ip:8080/github-webhook/
。
jenkins的github配置
正確安裝之后坝锰,接著粹懒,我們來配置Github Plugin,如果你還沒安裝github plugin
,那就進(jìn)入系統(tǒng)管理 --> 插件管理 --> 可選插件
進(jìn)行安裝顷级。(新版本的Jenkins)中已經(jīng)幫你做了這一步凫乖。
這里默認(rèn)已經(jīng)安裝了github plugin
,下面來配置~
配置GitHub Plugin
系統(tǒng)管理 --> 系統(tǒng)設(shè)置 --> GitHub --> 添加Github服務(wù)器
如下圖所示:
API URL
輸入 https://api.github.com
弓颈,憑證Credentials點(diǎn)擊添加帽芽,類型選擇Secret Text
,具體如下圖所示:
點(diǎn)擊添加
按鈕后,下拉選擇憑證翔冀,選擇你新增的那個(gè)憑證导街,然后點(diǎn)擊連接測試
按鈕,提示Credentials verified for user xxx, rate limit: xxx
信息纤子,則表明有效搬瑰。
創(chuàng)建一個(gè)freestyle任務(wù)
進(jìn)入主頁 --> 新建任務(wù)
General設(shè)置
填寫GitHub project URL
,也就是你的主頁https://github.com/your_name/your_repo_name
控硼,我這里使用我的博客倉庫進(jìn)行嘗試https://github.com/reng99/blogs
配置源碼管理
勾選Git
選項(xiàng)之后泽论,就會出現(xiàn)相關(guān)的填寫項(xiàng),根據(jù)下圖的指引來填寫就行了~
填寫項(xiàng)目的git地址, eg:
https://github.com/your_name/your_repo_name.git
添加github用戶和密碼(要是一個(gè)有寫權(quán)限的github賬號卡乾,此步驟見下圖)
選擇githubweb源碼庫瀏覽器翼悴,并填上你的項(xiàng)目URL,這樣每次構(gòu)建都會生成對應(yīng)的changes幔妨,可直接鏈到github上看變更詳情
點(diǎn)擊添加
增加Credentials
:
構(gòu)建觸發(fā)器
勾選GitHub hook trigger for GITScm polling
即可~
構(gòu)建環(huán)境配置
勾選Use secret test(s) or file(s)
即可~
設(shè)置綁定
選擇綁定 --> 點(diǎn)擊新增按鈕 --> 選擇Secret text --> 下拉選擇你之前設(shè)置的secret token --> 之后應(yīng)用
設(shè)置構(gòu)建
我這里基本沒怎么操作鹦赎,你可以根據(jù)自己的需求來編寫構(gòu)建的腳本了。
構(gòu)建后操作
你可以根據(jù)需求更改構(gòu)建后的操作误堡,我這里都默認(rèn)古话。
驗(yàn)證構(gòu)建
上面的工作都完成之后,修改下我的blogs倉庫的代碼锁施,提交后煞额,刷新下自己的jenkins地址
,出現(xiàn)下面的現(xiàn)象說明成功了~(ps: 第一次構(gòu)建的時(shí)候比較耗時(shí)沾谜,請耐心等待,時(shí)不時(shí)刷新下頁面了)
錯(cuò)誤處理
在進(jìn)行集成的過程中胀莹,你可能會遇到下面的這些問題~
重新安插插件
在進(jìn)行初始化的時(shí)候基跑,一些插件我們可能會安裝失敗。不過描焰,不要在意媳否,你可以進(jìn)來之后再針對需要的插件進(jìn)行安裝栅螟。
安裝成功之后,進(jìn)入/restart/
路徑對jenkins
重啟篱竭。
再次進(jìn)入就正常了力图,美滋滋~
git command錯(cuò)誤
進(jìn)入服務(wù)器查看是否安裝了git
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="bash" cid="n143" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"># git version</pre>
沒有g(shù)it,此時(shí)需要安裝git掺逼。
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="bash" cid="n145" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"># yum install git</pre>
構(gòu)建觸發(fā)器找不到github選項(xiàng)
在構(gòu)建觸發(fā)器的時(shí)候吃媒,找不到選項(xiàng)Build when a change is pushed to Github
那是因?yàn)樾掳娴?code>jenkins將其修改為GitHub hook trigger for GITScm polling
了。
后話
更多內(nèi)容:https://github.com/reng99/blogs