Jenkins+maven+git的可持續整合實踐
概述
相關資料
實踐操作
說明:JDK、SSHD已經預設安裝了,這裡就不復述了。
安裝Tomcat
安裝maven
- 到maven官網下載maven最新的安裝包apache-maven-3.0.4-bin.tar.gz,並解壓至/usr/local/目錄,或可選地修改maven的使用使用者:sudo chown -R user:group apache-maven-3.0.4 或者 chmod 777 apache-maven-4.0.4 -R
- 新增M2_HOME環境變數:在/etc/environment或~/.bashrc檔案中新增
export M2_HOME=/usr/local/apache-maven-3.0 .4
export PATH=$PATH:$M2_HOME/bin
#optional
export MAVEN_OPTS="-Xms256m -Xmx512m"
安裝git
ubuntu下直接apt-get install git -y
即可安裝。
安裝完後,執行git --version
看看版本資訊:
[email protected]36ab2c1af70e:~# git --version
git version 1.9.1
安裝Jenkins
在Jenkins官網下載最新版本的war包。然後放入到tomcat的webapps目錄下:
這裡使用Jenkins預設的工作空間。
啟動tomcat,然後訪問:
但是卻看到如下的錯誤資訊:
AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava.awt.headless=true"? See also: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+got+java.awt.headless+problem
java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXrender.so.1 : cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at java.awt.Toolkit$3.run(Toolkit.java:1636)
at java.awt.Toolkit$3.run(Toolkit.java:1634)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Toolkit.java:1633)
at java.awt.Toolkit.<clinit>(Toolkit.java:1668)
at java.awt.Font.<clinit>(Font.java:246)
at hudson.util.ChartUtil.<clinit>(ChartUtil.java:255)
at hudson.WebAppMain.contextInitialized(WebAppMain.java:186)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
根據上面的提示,發現是少了libxrender
,於是執行命令
sudo apt-get install libxrender-dev
完成後重啟tomcat,發現又有新的錯誤:
java.lang.UnsatisfiedLinkError: /mnt/jdk1.8/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
於是執行命令:
apt-get install libxtst-dev
繼續重啟tomcat。
重新整理頁面,可以看到正常啟動了
啟動完後,需要輸入管理員密碼:
去伺服器的/root/.jenkins/secrets/initialAdminPassword
檢視密碼,輸入密碼然後繼續。
然後選擇需要安裝的plugin,接著等待外掛安裝完成
這個過程很慢(看個人網路),可能有些外掛安裝不了(應該是被牆了),但是隻要git安裝也就行。安裝完後,設定管理員賬號跟密碼,就能開始使用Jenkins了,如圖
後來發現Git plugin 並沒有安裝成功。因為Git plugin 依賴於其他的外掛(Credentials Plugin、SSH Credentials Plugin、Git Client Plugin),然後人工去下載了最新版本的依賴外掛,最後才把git plugin安裝上去。
使用Jenkins
新建任務
點選主介面左上角的“新建”按鈕,彈出如下介面
配置Git倉庫
如圖所示
輸入git地址,如果需要授權登入的話,就新增相應的授權。
配置maven命令
我們希望在git pull完成後,編譯程式碼成jar,然後執行。
如圖所示
- Maven Vesion 要選擇正確(可以在配置中修改),不然找不到mvn命令
- 先執行mvn clean package -Dmaven.skip.test=true命令,進行編譯,這個根據實際情況來修改
- 編譯完後,就要執行jar檔案。此時我們要判斷一下這個jar是否已經執行過了,如果執行中就先kill掉
- 最後用nohup後臺執行我們的jar,同時儲存pid到jenkins.pid,方便下次kill掉程序。
這樣的話就能構建專案了。
同時可以配置一個定時器去判斷git上面的程式碼有沒有更新,如果更新了,就自動構建,真是太方便了。