部署Jenkins

百度百科裏給Jenkins的定義是,“持續集成軟件平臺+工具“,沒用Jenkins之前看不懂,用了之後還是看不到看不懂這個說法。

找到了Jenkins官網的解釋“The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.“——提供上百款插件實現服務器的自動化工作(這裏的自動化指運維),包括構造應用(項目、服務、軟件工程),部署應用,和任何服務器相關功能實現的自動化,Jenkins是開源軟件,而且在這方面是走在領先地位的哦。

目前我用到Jenkins的功能是,集成maven、git,經過一些github、tomcat的配置,一鍵操作一鍵完成項目從github發佈到阿里雲服務器。Jenkins調用git的命令,拉github的項目,項目經過maven打包war文件,用tomcat的manager發佈到服務器。

Jenkins的優點
1. 省時間,每次發佈系統基本都是差不多的操作,對於急着看上線效果的你來說,簡直就是心急吃熱豆腐;
2. 發佈系統是個細緻活,容易出問題,就算你牛逼你仔細可以不出問題,這些精力用在別的地方豈不是更好;
3. Jenkins把構造、部署系統的流程抽象化,做每件事只需要關注當前的工作不必考慮上下游的東西,比如你的項目是從github拉下來的,只要考慮配置github的東西,不用考慮項目構建發佈;
4. Jenkins提供的插件有爲我們做了很多事,比如對接github,使用svn的命令完成項目拉取。我們沒辦法精通所有的構造、部署方法,更沒辦法知道所有冷知識,只需要我們提供一些參數,Jenkins就能爲我們做好應對那些應用(git、maven…)的工作,Jenkins簡直就是服務器界的瑞士軍刀啊。

安裝Jenkins

從Jenkins官網下載Jenkins的war包。
https://jenkins.io/download/
用終端登錄,可以用wget http://mirrors.jenkins.io/war/latest/jenkins.war下載war包。

把jenkins.war放到tomcat根目錄下的/webapps。啓動tomcat,jenkins項目就算部署成功了,瀏覽器訪問 http://{ip}:{port}/jenkins 就能進入jenkins的初始化界面(初始的時候有個密碼,密碼寫在日誌,很容易找到的),初始化界面可以創建第一個用戶,安裝插件,。
文章的重點不是jenkins的部署,而且這個也挺簡單,就不貼圖了。

Github+Maven+Tomcat的發佈流程配置

Jenkins可以做很多事,下面說的是配置從Github拉去代碼,發佈到服務器的自動化過程。
這裏寫圖片描述

首先,我們要把“硬件”層面的東西配好,Git、Maven和Tomcat的Manger,然後要準備好Github和Manger的賬戶信息,最後就可以配置整個流程了。

Git & Maven

安裝Jenkins的電腦或服務器上面要裝上Git和Maven,藉助他們可以用來拉Github、Gitlab的代碼,和構建war項目(不僅限於war)。如果是在Centos服務器上,安裝這兩個的工作就很簡單了

yum install git
yum install maven

yum是用來下載rpm文件的,rpm纔是真正Centos的安裝工具,rpm安裝的默認路徑如下

/etc    一些設置文件放置的目錄如/etc/crontab
/usr/bin    一些可執行文件
/usr/lib /usr/lib64 一些程序使用的動態函數庫
/usr/share/doc  一些基本的軟件使用手冊與幫助文檔
/usr/share/man  一些man page文件
查看所有安裝的軟件
[root@iZbp1aiejzadfq9do06acaZ bin]# rpm -qa
iwl6050-firmware-41.28.5.1-49.el7.noarch
iwl2030-firmware-18.168.6.1-49.el7.noarch
iwl105-firmware-18.168.6.1-49.el7.noarch
.......
查看軟件信息
[root@iZbp1aiejzadfq9do06acaZ bin]# rpm -qi yum-metadata-parser-1.1.4-10.el7.x86_64
Name        : yum-metadata-parser
Version     : 1.1.4
Release     : 10.el7
.......
查看軟件安裝路徑
[root@iZbp1aiejzadfq9do06acaZ bin]# rpm -ql yum-metadata-parser-1.1.4-10.el7.x86_64
/usr/lib64/python2.7/site-packages/_sqlitecache.so
/usr/lib64/python2.7/site-packages/sqlitecachec.py
/usr/lib64/python2.7/site-packages/sqlitecachec.pyc
/usr/lib64/python2.7/site-packages/sqlitecachec.pyo
Tomcat Manager

tomcat也是有管理界面和接口的喲!!
通過管理界面和API,可以查看系統狀態信息和項目部署情況,還能發佈項目、刪除項目。
開啓這項功能很簡單,做兩個事就行。首先,開放manager的外網訪問權限,然後解鎖具有這些權限的role和user。

manager默認是開啓的,也有基本的賬號能登錄進去,但是部署在服務器上的tomcat就不能訪問了,在tomcat根目錄conf/Catalina/localhost文件下創建文件manager.xml,allow是允許訪問的IP。

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"  docBase="${catalina.home}/webapps/manager">  
     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />  
</Context>

manager默認的roler和user都被關閉了,修改tomcat根目錄下conf/tomcat-user.xml文件,如下:

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="111" roles="tomcat"/>
  <user username="both" password="111" roles="tomcat,role1"/>
  <user username="role1" password="111" roles="role1"/>
  <user username="deploy" password="111" roles="manager-status,manager-gui,manager-script"/>

deploy用戶擁有管理部署項目的界面操作、api操作權限。

Github的Personal Access Token

通過Personal Access Token授權就可以訪問Github的接口。創建一個擁有repo和admin:repo_hook權限的token,Jenkins通過該token,調用Github的接口創建Webhooks。
這裏寫圖片描述
上面的Token是屬於賬戶級的東西,Webhooks是項目級別的,當項目發生了某個事件,Github會給一個指定的url發Post請求。有了Webhoks,就不需要定時去拉Github的代碼,而讓Github主動通知。GitLab也有類似的機制。
這裏寫圖片描述

萬事俱備,開始要配置Jenkins了!!!
Git和Maven,要在Global Tool Configuration全局工具配置好。
這裏貼出Git,Maven,JDK的配置,涉及到的name都只是名稱可以隨便填。
一般Home是安裝路徑的根目錄,而執行文件路徑只要該路徑下能訪問執行文件就行
這裏寫圖片描述
這裏寫圖片描述

系統管理->系統設置,可以配置一些Jenkins的基礎設置
這裏寫圖片描述

下面的這個配置就是設置Github接口調用地址和認證方式的地方,
這裏寫圖片描述

Credentials用secret test,雖然也可以用賬號密碼驗證,secrest test可以只授權部分功能開發,而且更不容易被盜取。secrest test創建如下,只需要把Github的Personal Access Token填入Secret就可以了。
這裏寫圖片描述

Override Hook URL是Github回調Jenkins的接口配置。
Shared secret上面的Credentials是Github給Jenkins的驗證Token,shared secret是Jenkins給Github提供的驗證Token,在Github的Personal Access Token創建那的secret就是填這個。原理差不多,整一個長一點的字符串就行。
這裏寫圖片描述

上面做的是全局配置,接下來可以開始創建Jenkins工程了!!!
這裏我們創建的是Maven項目,關於其他項目還沒探索過,後續可能會有文章喲。
如果你沒看到下面的界面,那應該是搞錯項目類型了。
這裏寫圖片描述
maven項目的配置如下:
1. 設置git從哪拉代碼,和拉去的分支(工作區可以查看代碼)
這裏寫圖片描述
2. “GitHub hook trigger for GITScm polling”以前叫做“Build when a change is pushed to GitHub”,Github Plugin插件改了這個設置的名稱。這Webhooks的設置雖然是在這開啓,但是賬號卻是全局維護的,雖然有點摸不着頭腦,大概設計者考慮到不同項目用的是同一個Github賬號,這樣可以避免Webhooks重複設置。
這裏寫圖片描述
3. Maven的構建語句
這裏寫圖片描述
這裏需要額外提下pom.xml文件,即使Maven可以正常跑起來,pom.xml沒配好,還是會出問題的。下面是筆者可以正常發佈的pom.xml。

<project>
    <properties>
        <tomcat.version>8.5.9</tomcat.version>
        <java.version>1.8</java.version>
        .....
    </properties>
    <dependencies>
        .....
    </dependencies>
    <build>
        <!-- 生成war文件的文件名 -->
        <finalName>unitools</finalName>

        <plugins>
            <!-- 生成war文件的插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <!-- 忽視單元測試錯誤異常 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>

            <!-- 生成war過程需要整合項目依賴的包 -->
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.8</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 打war包是個java文件編譯的過程,當然是要指定jdk信息的-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
        <!-- 有些項目用eclipse生成war可以運行,用maven確不可以。eclipse記錄了所有文件的發佈路徑,maven單獨用的時候,需要配置好資源文件的發佈路徑喲 -->
        <resources>
            <resource>
                <directory>src/main/resourse</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>
  1. 配置tomcat發佈信息
    這裏的賬號信息來自Tomcat manager。這裏說兩個要注意的點:WAR/EAR files的路徑是相對路徑,相對的是Jenkins的工作區,maven默認會打在target文件下,如果pom.xml沒配<finalName></finalName>,要小心哦!;Context path是項目發佈的名稱,也就是url訪問的名稱。
    這裏寫圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章