從零開始搭建JENKINS+GITHUB持續(xù)集成環(huán)境【多圖】

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)。我自己配置如圖:

image

在上傳資源之后傻铣,這時(shí)你打開阿里云上相關(guān)的ip地址章贞,如果你沒有看到期望的頁面,請檢查一下安全組的設(shè)置非洲。

準(zhǔn)備一款終端

為什么要準(zhǔn)備呢鸭限?

我們不可能總是登錄自己的阿里云賬號,然后切換到自己的服務(wù)器那里連接它两踏,然后再屁顛屁顛地操作程序吧~

如果你喜歡败京,那你就保留那種操作習(xí)慣吧。只能說你時(shí)間真多~

這里梦染,自己在mac prodell電腦上都安裝了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è)置:

image

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 wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo 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)下面的問題:

image

圖上表明是你java的引入路徑有問題了~

上圖意思是:啟動程序找不到java

那么剑肯,你需要執(zhí)行vim /etc/init.d/jenkins命令進(jìn)入文件捧毛,修改其路徑就行了,如下:

image

備注: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)入文件修改端口號等泞辐。

image

同上笔横,如果網(wǎng)頁不能打開,請查看下自己在阿里云那里有沒有設(shè)置好安全組了~

嗯咐吼,接下來就是一步步解鎖Jenkins了吹缔。

Jenkins的使用

我們能在自己的服務(wù)上面成功安裝并運(yùn)行了jenkins,下面我們來升級打怪汽烦,使用下jenkins涛菠。

解鎖

image

根據(jù)提示,我們執(zhí)行cat /var/lib/jenkins/secrets/initialAdminPassword命令得到Administrator password撇吞,然后點(diǎn)擊繼續(xù)按鈕俗冻,往下走。

image

我們選擇安裝推薦的插件牍颈,等待安裝完畢迄薄。如果有安裝失敗的插件可以跳過,之后可以根據(jù)需求安裝煮岁〖ケ危【安裝過程請保持網(wǎng)絡(luò)的順暢】

image

初始化賬號和密碼

你可以創(chuàng)建自己的管理員用戶信息,當(dāng)然也可以點(diǎn)擊使用admin賬號繼續(xù)鏈接跳過画机。

image

設(shè)置完成之后冶伞,進(jìn)入界面:

image

關(guān)聯(lián) github

我們的目的是要將github和jenkins結(jié)合起來,進(jìn)行自動化發(fā)布〔绞希現(xiàn)在來關(guān)聯(lián)下github响禽。以我自己的github賬號為例,進(jìn)行配置荚醒。

生成 secret text

secret textgithub上被稱為token芋类。

進(jìn)入github --> Settings --> Developer settings --> Personal access tokens -> Generate new token

image

之后生成一個(gè)新的token:

image

填寫好toke的名稱,勾選完上面的兩個(gè)選項(xiàng)界阁,之后按Generate token按鈕進(jìn)行確認(rèn):

image

自己先保存此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

image

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ù)器

如下圖所示:

image

API URL 輸入 https://api.github.com弓颈,憑證Credentials點(diǎn)擊添加帽芽,類型選擇Secret Text,具體如下圖所示:

image

點(diǎn)擊添加按鈕后,下拉選擇憑證翔冀,選擇你新增的那個(gè)憑證导街,然后點(diǎn)擊連接測試按鈕,提示Credentials verified for user xxx, rate limit: xxx信息纤子,則表明有效搬瑰。

image

創(chuàng)建一個(gè)freestyle任務(wù)

進(jìn)入主頁 --> 新建任務(wù)

image

General設(shè)置

填寫GitHub project URL,也就是你的主頁https://github.com/your_name/your_repo_name控硼,我這里使用我的博客倉庫進(jìn)行嘗試https://github.com/reng99/blogs

image

配置源碼管理

勾選Git選項(xiàng)之后泽论,就會出現(xiàn)相關(guān)的填寫項(xiàng),根據(jù)下圖的指引來填寫就行了~

image
  1. 填寫項(xiàng)目的git地址, eg: https://github.com/your_name/your_repo_name.git

  2. 添加github用戶和密碼(要是一個(gè)有寫權(quán)限的github賬號卡乾,此步驟見下圖)

  3. 選擇githubweb源碼庫瀏覽器翼悴,并填上你的項(xiàng)目URL,這樣每次構(gòu)建都會生成對應(yīng)的changes幔妨,可直接鏈到github上看變更詳情

點(diǎn)擊添加增加Credentials

image

構(gòu)建觸發(fā)器

勾選GitHub hook trigger for GITScm polling即可~

image

構(gòu)建環(huán)境配置

勾選Use secret test(s) or file(s)即可~

image

設(shè)置綁定

選擇綁定 --> 點(diǎn)擊新增按鈕 --> 選擇Secret text --> 下拉選擇你之前設(shè)置的secret token --> 之后應(yīng)用

image

設(shè)置構(gòu)建

我這里基本沒怎么操作鹦赎,你可以根據(jù)自己的需求來編寫構(gòu)建的腳本了。

image

構(gòu)建后操作

image

你可以根據(jù)需求更改構(gòu)建后的操作误堡,我這里都默認(rèn)古话。

驗(yàn)證構(gòu)建

上面的工作都完成之后,修改下我的blogs倉庫的代碼锁施,提交后煞额,刷新下自己的jenkins地址,出現(xiàn)下面的現(xiàn)象說明成功了~(ps: 第一次構(gòu)建的時(shí)候比較耗時(shí)沾谜,請耐心等待,時(shí)不時(shí)刷新下頁面了)

image
image

錯(cuò)誤處理

在進(jìn)行集成的過程中胀莹,你可能會遇到下面的這些問題~

重新安插插件

在進(jìn)行初始化的時(shí)候基跑,一些插件我們可能會安裝失敗。不過描焰,不要在意媳否,你可以進(jìn)來之后再針對需要的插件進(jìn)行安裝栅螟。

image
image
image

安裝成功之后,進(jìn)入/restart/路徑對jenkins重啟篱竭。

image

再次進(jìn)入就正常了力图,美滋滋~

image

git command錯(cuò)誤

image

進(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了。

后話

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吕喘,一起剝皮案震驚了整個(gè)濱河市赘那,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氯质,老刑警劉巖募舟,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闻察,居然都是意外死亡拱礁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門辕漂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呢灶,“玉大人,你說我怎么就攤上這事钮热√钐В” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵隧期,是天一觀的道長飒责。 經(jīng)常有香客問我,道長仆潮,這世上最難降的妖魔是什么宏蛉? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮性置,結(jié)果婚禮上拾并,老公的妹妹穿的比我還像新娘。我一直安慰自己鹏浅,他們只是感情好嗅义,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著隐砸,像睡著了一般之碗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上季希,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天褪那,我揣著相機(jī)與錄音幽纷,去河邊找鬼。 笑死博敬,一個(gè)胖子當(dāng)著我的面吹牛友浸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播偏窝,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼收恢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了囚枪?” 一聲冷哼從身側(cè)響起派诬,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎链沼,沒想到半個(gè)月后默赂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡括勺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年缆八,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疾捍。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奈辰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乱豆,到底是詐尸還是另有隱情奖恰,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布宛裕,位于F島的核電站瑟啃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏揩尸。R本人自食惡果不足惜蛹屿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岩榆。 院中可真熱鬧错负,春花似錦、人聲如沸勇边。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粒褒。三九已至识颊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怀浆,已是汗流浹背谊囚。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留执赡,地道東北人镰踏。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像沙合,于是被迫代替她去往敵國和親奠伪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容