從零開始搭建JENKINS+GITHUB持續集成環境【多圖】
- 2019 年 11 月 14 日
- 筆記
POST
這篇文章是講解從無到有的JENKINS+GITHUB
持續集成環境的搭建。JENKINS
和其他平台的結合搭建,比如碼雲
啥的配合,操作過程大同小異。下面,我們STEP BY STEP
地講解一下,如有不合理的地方,還請指出☞
購買一個伺服器
為什麼要購買伺服器呢?
因為如果你本地搭建jenkins
環境之後,跟github
聯通不了–需要ip來設置githubwebhooks
的。當然,有什麼其他操作可以聯通github
的,還望指出:)
注意:如果你在本地運行jenkins,那麼你的
webhooks
可能是https://localhost:8080/github-webhook/
,這不會起作用的,因為webhooks
只在網路中起作用。你可以參考文章Adding a GitHub Webhook in Your Jenkins Pipeline來了解一下。
這裡,我購買了阿里雲的低配伺服器,作業系統是centos7
。購買好伺服器之後,我簡單通過NGINX
來代理,展示一個簡單的靜態頁面。當然,這裡並不是我們的重點,所以就不展開來說了。
需要注意的是,你要配置安全組,才能看到靜態的站點。我自己配置如圖:

在上傳資源之後,這時你打開阿里雲上相關的ip地址,如果你沒有看到期望的頁面,請檢查一下安全組的設置。
準備一款終端
為什麼要準備呢?
我們不可能總是登錄自己的阿里雲帳號,然後切換到自己的伺服器那裡連接它,然後再屁顛屁顛地操作程式吧~
如果你喜歡,那你就保留那種操作習慣吧。只能說你時間真多~
這裡,自己在mac pro
和dell
電腦上都安裝了SecureCRT【一款支援SSH(SSH1和SSH2)的終端模擬程式】,遠程控制自己的伺服器。我覺得挺好用的,喜歡!❤
搭建JENKINS環境
伺服器和遠程控制的模擬程式都已經準備完成了,接下來,我們在伺服器上面搭建所需的環境。
安裝java環境
先在伺服器上安裝java
環境,可參考這篇文章操作。安裝好java sdk
後,配置好環境。
之後,你可以通過java -version
等命令查看或驗證,下面是自己伺服器上java
的安裝資訊和相關路徑的設置:

1、路徑/usr/lib/java
是本機下載好jdk-8u231-linux-x64.tar.gz
壓縮文件上傳到伺服器的存放文件路徑,解壓後可以將其壓縮包刪除。
2、/usr/java/java8
是自己在伺服器上解壓文件路徑。
安裝jenkins
按照下面的命令行進行操作:
$ 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 複製程式碼
安裝完畢後,你就可以啟動jenkins
了:
sudo service jenkins start 複製程式碼
當然,啟動之後,它可能出現下面的問題:

圖上表明是你java
的引入路徑有問題了~
上圖意思是:啟動程式找不到java
。
那麼,你需要執行vim /etc/init.d/jenkins
命令進入文件,修改其路徑就行了,如下:

備註:linux 使用
find .|xargs grep -ri "要查找的字元串"
命令查找包含某字元串的文件
順利啟動後,控制台有個success
的提醒。這時,你在瀏覽器上輸入http://your server ip:8080
就可以打開了,呈現資訊如下圖。jenkins
的默認埠號是8080
,當然,你可以執行vim /etc/sysconfig/jenkins
進入文件修改埠號等。

同上,如果網頁不能打開,請查看下自己在阿里雲那裡有沒有設置好安全組了~
嗯,接下來就是一步步解鎖Jenkins
了。
Jenkins的使用
我們能在自己的服務上面成功安裝並運行了jenkins
,下面我們來升級打怪,使用下jenkins
。
解鎖

根據提示,我們執行cat /var/lib/jenkins/secrets/initialAdminPassword
命令得到Administrator password
,然後點擊繼續按鈕,往下走。

我們選擇安裝推薦的插件
,等待安裝完畢。如果有安裝失敗的插件可以跳過,之後可以根據需求安裝。【安裝過程請保持網路的順暢】

初始化帳號和密碼
你可以創建自己的管理員用戶資訊,當然也可以點擊使用admin帳號繼續
鏈接跳過。

設置完成之後,進入介面:

關聯 github
我們的目的是要將github和jenkins結合起來,進行自動化發布。現在來關聯下github
。以我自己的github
帳號為例,進行配置。
生成 secret text
secret text
在github
上被稱為token
。
進入github –> Settings –> Developer settings –> Personal access tokens -> Generate new token

之後生成一個新的token
:

填寫好toke
的名稱,勾選完上面的兩個選項,之後按Generate token
按鈕進行確認:

自己先保存此token
,如果丟失,之後再也無法找到這個token
了。
設置 github webhooks
接著,選擇自己的一個github
項目,這裡我拿自己的部落格倉庫https://github.com/reng99/blogs
作為例子:
進入github上指定的項目 –> Settings –> Webhooks –> Add Webhook –> 輸入剛剛部署jenkins的伺服器的IP

Payload URL
的內容就是http://your ip:8080/github-webhook/
。
jenkins的github配置
正確安裝之後,接著,我們來配置Github Plugin,如果你還沒安裝github plugin
,那就進入系統管理 --> 插件管理 --> 可選插件
進行安裝。(新版本的Jenkins)中已經幫你做了這一步。
這裡默認已經安裝了github plugin
,下面來配置~
配置GitHub Plugin
系統管理 –> 系統設置 –> GitHub –> 添加Github伺服器
如下圖所示:

API URL
輸入 https://api.github.com
,憑證Credentials點擊添加,類型選擇Secret Text
,具體如下圖所示:

點擊添加
按鈕後,下拉選擇憑證,選擇你新增的那個憑證,然後點擊連接測試
按鈕,提示Credentials verified for user xxx, rate limit: xxx
資訊,則表明有效。

創建一個freestyle任務
進入主頁 –> 新建任務

General設置
填寫GitHub project URL
,也就是你的主頁https://github.com/your_name/your_repo_name
,我這裡使用我的部落格倉庫進行嘗試https://github.com/reng99/blogs

配置源碼管理
勾選Git
選項之後,就會出現相關的填寫項,根據下圖的指引來填寫就行了~

- 填寫項目的git地址, eg:
https://github.com/your_name/your_repo_name.git
- 添加github用戶和密碼(要是一個有寫許可權的github帳號,此步驟見下圖)
- 選擇githubweb源碼庫瀏覽器,並填上你的項目URL,這樣每次構建都會生成對應的changes,可直接鏈到github上看變更詳情
點擊添加
增加Credentials
:

構建觸發器
勾選GitHub hook trigger for GITScm polling
即可~

構建環境配置
勾選Use secret test(s) or file(s)
即可~

設置綁定
選擇綁定 –> 點擊新增按鈕 –> 選擇Secret text –> 下拉選擇你之前設置的secret token –> 之後應用

設置構建
我這裡基本沒怎麼操作,你可以根據自己的需求來編寫構建的腳本了。

構建後操作

你可以根據需求更改構建後的操作,我這裡都默認。
驗證構建
上面的工作都完成之後,修改下我的blogs倉庫的程式碼,提交後,刷新下自己的jenkins地址
,出現下面的現象說明成功了~(ps: 第一次構建的時候比較耗時,請耐心等待,時不時刷新下頁面了)


錯誤處理
在進行集成的過程中,你可能會遇到下面的這些問題~
重新安插插件
在進行初始化的時候,一些插件我們可能會安裝失敗。不過,不要在意,你可以進來之後再針對需要的插件進行安裝。



安裝成功之後,進入/restart/
路徑對jenkins
重啟。

再次進入就正常了,美滋滋~

git command錯誤

進入伺服器查看是否安裝了git
# git version 複製程式碼
沒有git,此時需要安裝git。
# yum install git 複製程式碼
構建觸發器找不到github選項
在構建觸發器的時候,找不到選項Build when a change is pushed to Github
那是因為新版的jenkins
將其修改為GitHub hook trigger for GITScm polling
了。