?
?
Jenkins
Jenkins是基于Java開發的一種持續集成工具,用于監控持續重復的工作,功能包括:?
1、持續的軟件版本發布/測試項目。?
2、監控外部調用執行的工作。?
跟其他持續集成相比,它的主要優點有:?
開源,即免費。?
支持多種平臺(windows、linux、os x都支持)。?
安裝、配置簡單。?
Web可視化管理界面,并且有豐富的tips幫助信息。
svn
Subversion(SVN) 是一個開源的版本控制系統, 也就是說 Subversion 管理著隨時間改變的數據。 這些數據放置在一個中央資料檔案庫 (repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變動。 這樣你就可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。
ant
是一個將軟件編譯、測試、部署等步驟聯系在一起加以自動化的一個工具,大多用于Java環境中的軟件開發。?
Ant的構建文件:?
當開始一個新的項目時,首先應該編寫Ant構建文件。構建文件定義了構建過程,并被團隊開發中每個人使用。Ant構建文件默認名為build.xml,也可以取其他的名字。只不過在運行的時候把這個命名當作參數傳給Ant。構建文件可以放在任何的位置。一般做法是放在項目頂層目錄中。這樣可以保持項目的簡潔和清晰。下面是一個典型的項目層次結構。
(1) src存放文件。
(2) class存放編譯后的文件。
(3) lib存放第三方JAR包。
(4) dist存放打包,發布以后的代碼。
Ant構建文件是XML文件。每個構建文件定義一個唯一的項目(Project元素)。每個項目下可以定義很多目標(target元素),這些目標之間可以有依賴關系。當執行這類目標時,需要執行他們所依賴的目標。每個目標中可以定義多個任務,目標中還定義了所要執行的任務序列。Ant在構建目標時必須調用所定義的任務。任務定義了Ant實際執行的命令。Ant中的任務可以為3類。
(1)核心任務。核心任務是Ant自帶的任務。
(2)可選任務。可選任務是來自第三方的任務,因此需要一個附加的JAR文件。
(3)用戶自定義的任務。用戶自定義的任務是用戶自己開發的任務。
Jenkins 的安裝:?
進入https://jenkins.io/?
直接下載war包即可。?
將war直接放到tomcat下的webapps。?
直接在瀏覽器輸入 192.168.0.219:8080/Jenkins?
就可以進入Jenkins界面。?
在進入jenkins界面時,會自動下載插件。
ant 的安裝:?
下載地址:http://ant.apache.org/?
配置環境變量?
vim /etc/profile
export ANT_HOME=/usr/local/ant
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin:$PATH
查看
#使生效
source /etc/profile
#查看版本
ant -version
svn的安裝
#安裝yum install -y subversion#驗證安裝版本svnserve --version
#創建SVN 版本庫mkdir /opt/svndatasvnadmin create /opt/svndata/test #test為版本庫名稱#創建版本庫后,在這個test目錄下會生成3個配置文件authz passwd svnserve.conf
(1)svnserve.conf: svn服務配置文件下。
(2)passwd: 用戶名口令文件。
(3)authz: 權限配置文件。
svnserve.conf 文件, #該文件配置項分為以下5項:anon-access: #控制非鑒權用戶訪問版本庫的權限。auth-access: # 控制鑒權用戶訪問版本庫的權限。password-db: #指定用戶名口令文件名。authz-db:#指定權限配置文件名,通過該文件可以實現以路徑為基礎的訪問控制。realm:#指定版本庫的認證域,即在登錄時提示的認證域名稱。若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文件Passwd 文件 :我們在svnserve.conf文件里啟用這個文件。然后配置如下:cat passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.[users]
# harry = harryssecret
# sally = sallyssecret
test = test #新建用戶
test1 = test1```
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
authz 文件
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
--這里把不同用戶放到不同的組里面,下面在設置目錄訪問權限的時候,用目錄來操作就可以了。
[/] --對應我測試里的:/opt/svndata 目錄
* = r
@admin = rw
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
[/trunk/doc]
@docs = rw
[TrainingRepos:/]
@training = rw```
下面我們來配置我們的authz文件:cat authz
[groups]
admin = test
dev=test1
[davesvn:/]
@admin = rw
@dev = rw
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
啟動和停止SVN服務
svnserve -d -r /opt/svndata
ps -aux |grep svn
kill -9 進程號
客戶端連接?
新建測試目錄svn,進入后右鍵,點checkout:?
填寫服務器地址?

配置Jenkins?
1, 新建一個項目,名字自己定義,?
2, 選擇構建一個自由風格的軟件項目?
源碼管理: 這里選擇Subversion
也就是什么時候開始自動構建。我這里選擇Poll SCM,該方案能定時檢代碼版本庫是否有新的提交,如果有則自動構建。我設置的日程表是“H/5 * * * *”,即5分鐘自動檢查一次代碼版本庫是否有新的提交。?
?
Schedule的配置規則是有5個空格隔開的字符組成,從左到右分別代表:分 時 天 月 年。代表所有,0 6,18?* * 表示“在任何年任何月任何天的6和18點0分”進行構建。?
構建:?

構建后操作:?
首先Jenkins提供了一個發布的插件deploy plugin,來幫助我們實現遠程部署,這個插件默認是不安裝的,所以需要我們自己手動的來安裝。?
手動安裝deploy plugin 插件,我們可以在線安裝,也可以通過官方下載相關插件,下載地址:https://updates.jenkins-ci.org/download/plugins,
-
系統管理->管理插件->可選插件->搜索“Deploy to container Plugin”,勾選插件直接安裝,等著Jenkins自動安裝完成。此時我們打開我們之前新建的項目選擇“增加構建后的操作”中增加了一項“Deploy war/ear to a Container”,將我們的war和ear工程部署到容器。
-
我們添加一個deploywar/ear to a container選擇,Jenkins中構建后操作多出一個發布選項?
?
記住這里要把應用服務器的防火墻關閉。?
tomcat默認的登錄是注釋的,我們需要打開。在tomcat/conf/tomcat-users.xml下添加,
tomcat-users.xml
<role rolename="tomcat" /> <role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="tomcat" password="tomcat" roles="tomcat,admin-gui,admin,manager,manager-gui,manager-script"/>
找到Jenkins倉庫 在workspace下面會在你構建的時候生成你構建項目名稱,然后在你項目名稱下面拷入build.xml
<project name="test" default="warFile" basedir="."> <echo>開始構建</echo> <property name="warFileName" value="test.war"></property> <property name="catalina.home" value="/usr/local/tomcat/" /> <path id="project.lib"> <fileset dir="${basedir}/WebContent/WEB-INF/lib"> <include name="**/*.jar"/> </fileset> </path> <target name="clean"> <delete dir="${basedir}/build" /> <mkdir dir="${basedir}/build" /> </target> <target name="compile" depends="clean"> <javac srcdir="${basedir}/src" destdir="${basedir}/build" includeantruntime="false"> <classpath refid="project.lib"/> <compilerarg line="-encoding UTF-8" />
<compilerarg value="-XDignore.symbol.file"/> </javac> </target> <echo>定義默認任務,將class文件集合成jar包。</echo><target name="warFile" depends="compile"> <delete dir="${basedir}/${warFileName}" /> <war destfile="${basedir}/${warFileName}" webxml="${basedir}/WebContent/WEB-INF/web.xml"> <fileset dir="${basedir}/WebContent"> <include name="**/**.*" /> <exclude name="**/*.jar"/> <exclude name="**/*.class"/> </fileset> <lib dir="${basedir}/WebContent/WEB-INF/lib" /> <classes dir="${basedir}/build" /> </war> </target> </project>
-------------------------------------------------------------------------