1. 程式人生 > >Devops學習實踐(二) Jenkins安裝、配置、任務構建

Devops學習實踐(二) Jenkins安裝、配置、任務構建

隨著工作的要求,devops作為今年工作的一個重點,由此也引發了自己對於devops相關的工具和技術的學習和實踐。基於上述背景,這個系列將逐步的介紹SVN的安裝和配置、jenkins安裝和配置、reviewboard、findbugs、checkstyle、sonar、testng、mockito等。【每個合格的程式設計師都是耐操的】

         上一節說了SVN的安裝和配置,這一節說Jenkins的持續整合

一、目標

Jenkins是一個開源軟體專案,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。它用於監控持續重複的工作,功能包括:
        1、持續的軟體版本釋出/測試專案。
        2、監控外部呼叫執行的工作
 上面這一小段化來自百度百科,那麼這是什麼意思呢?這可以從下面這樣的場景來說。我們開發一個軟體,設計、編碼、測試、整合、釋出,尤其編碼後進行測試、整合、釋出這樣的環節,隨著開發模式越來越向敏捷、迭代模式流行,也就會面對持續交付的問題越來越有壓力,需要對這些環節進行有效的、持續的管理。Jenkins就是這樣一個平臺,可以有效的納入,測試、整合、釋出這些環節,串起來,給所有參與的人,一個可以檢視和監控的平臺。
簡單的說,它是提高測試、整合、釋出效率的工具。
本次實踐的目標是:

       1、安裝jenkins

       2、通過Jenkins 來構建任務,通過Jenkins,與SVN,Maven配合起來,完成從SVN上獲取程式碼,通過Maven進行編譯打包,完成後傳送郵件,

(釋出以後再說)

二、實踐環境說明

Jenkins現在發展的很快,很多資料與自己的版本不一致,其實是因為版本的不同,所以有必要交待一下環境:

        1、windows 虛擬機器:192.168.136.100    SVN伺服器

        2、Linux Centos虛擬機器: 192.168.136.144   Jenkins服務、Maven 服務

        3、Jenkins的版本是 2.32 ,安裝包為:jenkins-2.32.1-1.1.noarch.rpm 

三、Jenkins的安裝

Jenkins的安裝非常簡單,可以下載war包,直接啟動。Jenkins的war包,用Jetty來發布Http;也可以採用rpm包來安裝,我採用的rpm包安裝。

首先從網站上下載Jenkins,官網為:https://jenkins.io/index.html

的目標機是Centos,選擇這個,

 

下載後,將安裝包上傳到Centos伺服器上,採用rpm包安裝的命令如下:

rpm -ivh  jenkins-2.32.1-1.1.noarch.rpm

這個執行後,就安裝好了,要執行或者重啟採用如下命令:

啟動命令:  service  jenkins  start

重啟命令:  service jenkins   restart


安裝完成後,jenkins實際的安裝目錄在:  /var/lib/jenkins


這裡紅色框出來的內容,需要注意一下,要不以後也是一個坑。 jenkins預設是用 jenkins使用者安裝的,這裡mark一下,以後碰到坑時,知道如何處理。

四、Jenkins的配置

      4.1 Jenkins的初次安裝和使用

在本機瀏覽器裡開啟Jenkins網址:  http://192.168.136.144:8080/

第一次安裝,會彈出輸入key的介面

根據提示,從上述目錄下,cat 一下這個檔案,複製 password 到這裡填入,繼續,如果出現下面的視窗,說明是網路問題,檢查網路。

 如果網路正常,那麼會出現下面的安裝外掛的介面,讓它自己安裝就好了。

如果一切順利,那麼會彈出如下介面:

       點選  Start  按鈕,進入Jenkins 環境

       4.2  Jenkins 環境,構建任務

Jenkins 提供了多種構建方式,本次實踐就是構建一個簡單的maven專案。下面看看如何進行的。在正式構建專案之前,需要做一下全域性的工具設定


從上圖中標註的位置,進入具體的工具配置。其中重點是 jdk 和maven的配置。 雖然jenkins裡面集成了自動下載的方法,但是在網路受到各種受限制的環境下(基於安全的考慮,很多公司有設定各種網路策略),強烈建議先從網路上下載安裝包進行安裝,然後再jenkins裡面設定HOME路徑,就可以不需要通過Jenkins來安裝了。我一開始通過jenkins安裝,構件任務失敗了3,4次,都是因為下載地址無法下載。在Tool configuration開啟的介面裡面,我們可以這樣設定:

再配置一下maven


這個配置完成後,點save。 這裡配置的內容比較,包括git,docker,以後有用到再摸索。

現在返回jenkins主選單,正式構建一個新任務。選擇新建任務,

這裡選擇構建一個自由風格的軟體專案,和很多網頁不同,這裡是沒有顯示maven 2/3 專案選項的。 在project 名字裡面,輸入自己想構建的專案名稱。這裡用的是 cwq_projecttest1

然後,進行基本的構建內容設定,主要包含如下內容:

 在general 這裡,通過開啟高階選項,這裡強烈建議使用自定義的工作空間

    

svn的設定,URL 是一個基於MAVEN建立,並上到SVN伺服器的專案,在Credentials這裡,通過add的方式,新增SVN的使用者名稱和密碼

    在構件觸發器這裡,進行如下配置,是一種每天定時的配置

        這裡要注意一下  Poll SCM, 這個是指,如果配置有變化,就會觸發自動配置,裡面可以配置檢測配置變化的時間策略。

在構件這一步,選擇 invoke top-level maven  targets

然後進行Maven工程具體的配置

然後點save,就可以儲存構建一個任務的基本資訊了。

       儲存後,可以手工進行構建動作看是否能正常工作,如果可以正常工作,以後就靠定時機制進行自動構建了。

萬事開頭難,手工構建就報錯,通過檢視日誌,可以發現建立mkdir  錯誤,這個就涉及到前面說的jenkins 預設使用者是用jenkins使用者安裝和執行的。下圖顯示瞭如何手工構建和構建日誌如何查

   通過分析,很明顯是因為jenkins使用者沒有許可權,所以需要修改jenkins啟動的使用者,本例採用設定啟動使用者為root的方式:這個設定檔案的全路徑在 /etc/sysconfig/jenkins, 修改JENKINS_UESR="root" 來進行控制啟動jenkins

 

儲存後,執行下列命令

service jenkins restart

        通過重啟後,繼續構建,每次錯誤,都是檢視日誌,一個辦法,就是可以手工將構件的內容,在命令列環境下再執行一下。

我這裡還遇到過pom.xml 檔案錯誤的問題

這個是通過修改pom.xml 來完成的,具體pom.xml 為

[[email protected] cwq_testproject1]# cat  pom.xml 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.newland</groupId>
  <artifactId>StudyKafkaMavenTest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <name>kafka-demo</name>
        <url>http://maven.apache.org</url>

        <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        </properties>

  <dependencies>
    <dependency>  
        <groupId>org.apache.kafka</groupId>  
        <artifactId>kafka_2.10</artifactId>  
        <version>0.8.2.0</version> 
    </dependency> 
  </dependencies>
<build>
    <defaultGoal>compile</defaultGoal>
</build>
</project>
最後,構件成功,狀態紅色會改變,日誌看也提示成功


、小結

通過構建任務開始,只是jenkins很小的一個功能起步,後面還會持續整合各種外掛,來豐富jenkins的平臺

       1、網路的通暢很重要

        2、許可權的控制

        3、不同版本的介面是有差異的

六、補充:

1、修改jenkins的埠
jenkins的預設埠為8080,這個埠在多應用環境下,很不合適,因此需要修改。

jenkins的配置檔案為/etc/sysconfig/jenkins, 找到JENKINS_PORT="8080" 將埠修改成自己的埠。埠不要配置為1000以下,否則需要更高的許可權。 重啟後,進入jenkins 會報告 反向代理錯誤,只要進入“系統設定”,修改url ,就可以解決反向代理錯誤的問題
2、jenkins 反應比較慢

jenkins 安裝了findbugs和checkstyle後,反應很慢,因此需要修改一下jenkins引數:

vi /etc/sysconfig/jenkins
找到JENKINS_JAVA_OPTIONS="-Djava.awt.headless"
修改成
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"

具體引數根據自己的機器實際情況調整。