官網首頁(https://jenkins-ci.org/)就提供了windows版本的Jenkins安裝包。能夠本身下載一個用於學習。安裝後自動打開http://localhost:8080,就能夠看見Jenkins的界面。
http://mirrors.jenkins-ci.org/java
要運行Jenkins的其它配置:node
1,Jenkins是java程序,所以須要安裝JDK。git
2,同時運行job須要提供repository,也就是存放Jenkins按期poll源代碼的地方。能夠去github免費註冊一個。github
3,若是想在Jenkins中使用ant,maven等,則還須要單獨安裝。但不是必須的。web
啓動Jenkinswindows
Jenkins天生支持unix-like system。服務器
好吧,Jenkins是一個java程序,因此要運行它,只須要:app
$ java -jar jenkins.warssh
咱們也可使用nohup命令,讓Jenkins在後臺運行。webapp
以後打開URL http://myServer:8080 就能夠方便的操做Jenkins了
官網給了一個sh的例子,用於啓動Jenkins。能夠參考一下。
Alternatively, if you have a servlet container that supports Servlet 2.4/JSP 2.0, such as Glassfish v2, Tomcat 5 (or any later versions), then you can run them as services, and deployjenkins.war as you would any other war file.
For example,
you could simply place the jenkins.war file in Tomcat’s webapps directory. 此時使用的URL默認就變成:
http://localhost:8080/jenkins
同時Jenkins提供一些默認不會啓動的特殊的功能,參考下面的link來enable它們。
https://wiki.jenkins-ci.org/display/JENKINS/Features+controlled+by+system+properties
Jenkins的目錄結構
和CruiseControler同樣,Jenkins須要一個目錄來存儲相關文件:JENKINS_HOME。默認爲 ~/.jenkins。即爲user的home目錄下的一個隱藏目錄。咱們也能夠更改JENKINS_HOME,指向咱們但願的地方。
(注意由於是隱藏目錄,因此須要使用ls -al 才能看到)
JENKINS_HOME
+- config.xml (jenkins root configuration)
+- *.xml (other site-wide configuration files)
+- userContent (files in this directory will be served under your http://server/userContent/)
+- fingerprints (stores fingerprint records)
+- plugins (stores plugins)
+- jobs
+- [JOBNAME] (sub directory for each job)
+- config.xml (job configuration file)
+- workspace (working directory for the version control system)
+- latest (symbolic link to the last successful build)
+- builds
+- [BUILD_ID] (for each build)
+- build.xml (build result summary)
+- log (log file)
+- changelog.xml (change log)
若是有權限管理,則在HOME目錄下還會有users目錄。
從目錄結構來看,和CruiseController很是類似。其中config.xml是Jenkins重要的配置文件。咱們都知道Jenkins用於monitor多個build,而jobs這個目錄無疑就是存儲每一個build相關信息的地方。
總的來講,Jenkins目錄結構很是直白,簡潔。
備份和恢復
備份和恢復很是簡單,就是簡單的copy Jenkins的目錄就行了:
All the settings, build logs, artifact archives are stored under the JENKINS_HOME directory. Simply archive this directory to make a back up. Similarly, restoring the data is just replacing the contents of the JENKINS_HOME directory from a back up.
移動/拷貝/重命名 job
因爲每一個jobs都有本身單獨的目錄,咱們能夠很容易的:
1,move a job from one installation of Jenkins to another by simply copying the corresponding job directory.
,2,make a copy of an existing job by making a clone of a job directory by a different name.
3,rename an existing job by renaming a directory.
修改後執行下面的命令刷新:
http://[jenkins-server]/[command]
在這裏[command]能夠是:exit 退出,restart 重啓, reload 重載。
建立一個Project
由於Jenkins能夠用於運行各類CI,測試,批處理任務等等,因此在Jenkins中將這些任務統稱爲「free-style software project」.
Jenkins也提供了其餘類型的jobs,例如:
1,若是項目是Maven,Jenkins還提供了一種僅用於Maven Project的job。但其實free-style software projec仍然能夠用於建立Maven項目,只不過這種更適合Maven項目,結合的更好而已。
2,也能夠建立一個"Monitor an external job「用於監控外部進程。
3,或者一個Matrix project,也就是multi-configuration project。
我不肯定是否僅有這4種job,也許使用插件能夠建立更多類型的job,你們本身看資料吧。
下面是如何建立一個最多見的「free-style software project"的過程:
ok肯定
這以前有不少描述性的工做能夠本身選擇,配置svn要Subersion,在Repository URL中輸入svn地址,點擊enter credential
這裏輸入svn用戶名和密碼便可,在已建項目中能夠點擊Configure
自動運行Build
觸發一個build有三種方式:
能夠設置Jenkins定時檢查SVN是否發生了變化,也能夠手動檢查:http://YOURHOST/jenkins/job/PROJECTNAME/pollong。也能夠設置Jenkins爲post-commit,這個方式尤爲適用於那些檢查是否代碼改變會花費很長時間的狀況。
http://YOURHOST/jenkins/job/PROJECTNAME/build
Distributed builds
Jenkins supports the "master/slave" mode, where the workload of building projects are delegated to multiple "slave" nodes, allowing single Jenkins installation to host a large number of projects, or provide different environments needed for builds/tests.
在現實中須要使用distributed builds狀況不少,例如:一個web application的build,須要分別驗證firefox和IE的行爲,那麼就須要到windows機器上運行IE。
或由於性能問題,將build分佈到多個slave節點去。
到Jenkins的管理界面,就能夠方便的添加節點。配置節點時,須要提供節點所在的機器,登錄用戶名密碼,使用的目錄等。
可是slave並不須要再安裝Jenkins。jenkins會自動啓用slave agent,將build須要tools考到遠程機器上。
須要注意的是:the build results and artifacts will always end up on the master server. 所以不須要跑到各個節點去查看build產生的文件,log等。
其實在slave節點,會建立一個本地的workspace,並在運行時使用這個workspace。由於畢竟build運行在slave節點上,因此這個節點確定要有運行build須要的全部因素。
總之添加節點並遠程運行build真是太方便了~
添加節點後,在master Jenkins home目錄下會出現關於該節點的配置文件。
Jenkins將自動決定在哪一個節點上運行build,根據下列策略:
Some slaves are faster, while others are slow. Some slaves are closer (network wise) to a master, others are far away. So doing a good build distribution is a challenge. Currently, Jenkins employs the following strategy:
Jenkins經過運行slave agents來完成分佈式build。最多見的狀況是:slave agent運行在各個slave 節點。master經過SSH遠程啓動/中止slave agent,進而控制各個節點的行爲。
一共有下列4種方式啓動slave agent:
•The master starts the slave agents via ssh
• Starting the slave agent manually using Java Web Start
• Installing the slave agent as a Window service
• Starting the slave agent directly from the command line on the slave machine from the command line
須要注意的是這4種方式適用於不一樣的狀況,例如slave節點在防火牆後,致使master沒法經過SSH啓停slave agent。此時只能用後三種方式,可是每每有一些弊端,好比master沒法自動中止/重啓 slave agent.
一旦添加node成功,你就能夠在job中指定這個job在哪一個node運行:
Restrict where this project can be run (若是不指定則由Jenkins自行決定,便可以在slave節點運行,也能夠在master節點運行,甚至在一次build中就能夠自行來回切換)。
配置Jenkins,讓它收集更多的log
https://wiki.jenkins-ci.org/display/JENKINS/Logging
在流行持續集成的今天,在各個環境:alpha,beta和production 都部署了惟一的Jenkins服務器。
Jenkins服務器統一負責該環境內全部組件的持續集成。也就是說,一個Jenkins服務器會有不少個build。因此有時會用到上面提到的」Monitor an external job「。
但不是Distributed Builds。
同時因爲Jenkins會進入每一個環境,包括production,所以會使用auto deployment的方式,自動完成Jenkins在各個環境的部署。
用戶管理
毫無疑問Jenkins中須要有用戶管理的功能,由於除開發人員外,有多種角色的人須要查看build的結果。
在Jenkins中的系統管理中,能夠設置「任何用戶能夠作任何事」 或 「登陸用戶能夠作任何事」。
所以前一個選項意味着,任何瀏覽JenkinsURL的用戶均可以修改Jenkins。或只有登陸用戶才能作修改。
Jenkins中的用戶劃分爲兩類:可登陸用戶和不可登陸用戶。
1,只要是修改過repository,即對build產生過影響的用戶,都會被Jenkins記錄在本地的database中。這類用戶能夠在Jenkins界面->查看用戶中瀏覽。
但這類用戶不是正式的Jenkins用戶,也不能登陸Jenkins。這類用戶的權限由上面說的系統管理中的配置決定。一般只有查看build的權限,沒有修改權限。
2,只有在Jenkins中明確註冊的用戶,纔可以登陸Jenkins,而且有權限控制。同時註冊過的用戶,在JENKINS_HOME目錄下的users目錄下,都有一個單獨的目錄來存儲相關信息。
Jenkins Script Console
Jenkins提供了一個script console Groovy script which allows to run arbitrary scripts on the Jenkins server or on slave nodes. This feature can be accessed from the "manage Jenkins" link。
也能夠經過URL直接訪問:http://myserver:8080/hudson/script
http://blog.csdn.net/tiangwan2011/article/details/7597080