從零開始搭建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 prodell電腦上都安裝了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 textgithub上被稱為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選項之後,就會出現相關的填寫項,根據下圖的指引來填寫就行了~

  1. 填寫項目的git地址, eg: https://github.com/your_name/your_repo_name.git
  2. 添加github用戶和密碼(要是一個有寫許可權的github帳號,此步驟見下圖)
  3. 選擇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了。

後話