jenkins編譯
1. java Maven打包總結(Jenkins多模塊編譯部署)
原文地址: Java Maven打包總結(Jenkins多模塊編譯部署)
依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7個階段。
完成了項目編譯、單元測試、打包功能,但沒有把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
依次執行了clean、resources、compile、testResources、testCompile、test、jar(打物液包)、install等8個階段。
完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫,但沒有布署到遠程maven私服倉庫
依次執行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9個階段。完成了項目編譯、單元測試、打包功能,同時把打好的可執行jar包(war包或其它形式的包)布署到本地maven倉庫和遠程maven私服倉庫
可以看森和到主要區別在把生成的jar包最終存放的位置, package只管打包; install把打好的包放到了本地maven倉庫;deploy是同時放到本地倉庫和遠程maven私服
這里本地倉庫默認是 /root/.m2/repository/ ,具體配置在 ${M2_HOME}/conf/settings 的 localRepository 配置項決定。遠程私服倉庫一般是nexus,具體地址在項目的pom.xml中配置。比如
一般是進入父級目錄之後執行
如果是多級目錄罩春物的話,有時候並不一定是按照 具體的項目來 編譯,比如
這個時候如果一個項目一個項目來編譯會超級多,很繁瑣,這里是按照 subparentproject 來編譯,命令如下
有個注意的地方:
subparentproject 目錄下的pom.xml文件中一定有類型如下的配置
1、需要安裝插件 Extended Choice Parameter Plug-In 可以支持參數單選、多選
2、項目選擇"自由風格",而不是maven編譯
3、在「構建」 -> "執行shell" 中編寫 子模塊編譯腳本及其後續處理
具體配置如下圖
「構建」 -> "執行shell" 中的處理腳本
附加:
Linux Bash下字元串操作總結
2. 自動化部署工具jenkins,從此擺脫重復單調的工作
它是基於Java開發的一種持續集成工具,用於監控持續重復的工作,旨在提供一個開放易用的軟體平台,使軟體的持續集成變成可能。
有了它你可以免除手工編譯,發布代碼,上線更容易。節省的時間你可以喝杯咖啡,放鬆一下 ^_^
道路千萬條,熟悉第一條,我這里使用 Red Hat 家族衍生的 centos 上安裝Jenkins。
這里可以下載rpm包: http://pkg.jenkins-ci.org/redhat/
也可以如下操作:
安裝
將Jenkins存儲庫添加到yum repos,並從此處安裝Jenkins。
安裝穩定版
還有一個LTS YUM資源庫的LTS版本線
安裝Java
Jenkins需要Java才能運行,但默認情況下某些發行版不包含此內容。要安裝Open Java Development Kit(OpenJDK),請運行以下命令:
安裝完成後Jenkins 啟動之前的注意事項
默認情況是Jenkins是使用Jenkins用戶啟動的,但這個用戶目前系統並沒有賦予許可權,這里我們將啟動用戶修改為root;另外Jenkins默認埠是8080,這個跟tomcat的默認埠沖突,我們也修改一下默認埠。
找到 JENKINS_USER 和JENKINS_PORT ,修改為root和你需要的埠
啟動/停止
注意:如果收到以下錯誤消息,請確保已安裝Java:
Starting jenkins (via systemctl): Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details.[FAILED]
禁用防火牆
有關CentOS Java的重要說明
Jenkins需要Java才能運行,但yum install jenkins不強制已經安裝了java。檢查以確保您已通過運行安裝了hava java java -version。為了進一步使CentOS用戶感到困難,默認的CentOS版本的Java與Jenkins不兼容。Jenkins通常最適合使用Java的Sun實現,由於許可原因,它不包含在CentOS中。
如果您獲得類似於以下內容的輸出,則表示您使用的是Java的默認(GCJ)版本,該版本不適用於Jenkins:
要解決此問題,您可能需要刪除GC的GCJ版本並安裝Sun兼容版本。
如果收到上面的輸出,請卸載默認的java:
然後在卸載Java之後(或者如果你根本沒有安裝Java那麼開始)。您需要安裝與Sun兼容的Java版本。最簡單的方法是使用OpenJDK,它可以通過EPEL存儲庫獲得(或者您可以直接從Oracle安裝官方 RPM)。要安裝OpenJDK,請運行以下命令:
根據您的CentOS版本,OpenJDK的軟體包名稱可能有所不同。使用yum search openjdk來檢查包的名稱。如果通過yum找不到OpenJDK,則可能需要安裝EPEL yum存儲庫。安裝後,您應該能夠獲得以下java -version輸出:
Ok,到此jenkins安裝完成。
接下來你可以在瀏覽器地址中輸入Jenkins網址,如:IP:埠,將顯示如下內容:
拷貝指定文件密碼,進入用戶自定義插件界面,建議選擇安裝官方推薦插件:
接下來是進入插件安裝進度界面:
等待一段時間之後,插件安裝完成,配置用戶名密碼:
OK,你可以使用jenkins來編譯、發布你的代碼了。oh,它支持從代碼庫中直接拉取代碼,git、svn都支持。趕快使用你的Spring boot、go試試吧。
3. jenkins 重新設置構建號之前很多編譯失敗的,很難看
在 jenkins manage----script console 中執行如下腳本:
item = Jenkins.instance.getItemByFullName("job_name")
item.builds.each(){build->build.delete()}
Jenkins.instance.getItemByFullName("job_name").updateNextBuildNumber(想設置的起始號 如 1)
4. 請問Jenkins如何配置自動或定時編譯
打開job的配置界面,在構建觸發器欄下有Poll SCM(定時檢查源碼變更並構建)和Build periodically(周期進行項目構建,不關心源碼是否變更)選擇,打開它們後面的問號,有很明確的介紹和實例
5. jenkins git+maven 編譯怎麼知道編譯成功
1.通過Jenkins web頁面添加Git plugin
Manage Jenkins->Manage Plugins->Available中選擇Git Plugin安裝,
注意要填寫user name和 email地址,否則日後會碰到git tag的錯誤
2.在Jenkins使用的機器上創建Git用戶所需要的公鑰
具體步驟參考前面Git server文章
但是注意,要將最後生成的.ssh目錄下的公鑰和私鑰文件復制到/var/lib/jenkins/.ssh目錄下,否則git clone命令會報錯
3.修改jenkins目錄許可權
chmod -R 777 /var/lib/jenkins
4.現在可以通過web頁面創建一個項目Test,然後設置該項目使用Git作為版本管理。
並且設置repository路徑,比如我的:git@S1:cml.git
5.在build選項的pom文件指定你需要執行的pom.xml路徑
比如我的一個測試工程名叫client,是個maven工程,我設置為client/pom.xml
6.現在可以點擊左側的Build now進行測試
一切OK,則沒有錯誤日誌。在Build History中可以看到測試結果,有沒有錯誤。
7.Email發送設置
在Manage Jenkins->Configure System->Email Notification中,設置SMTP發送的基本信息,點擊Advanced,可以填寫用戶名和密碼。還有一個測試按鈕可以用來發送測試設置是否正確。
同時在Test項目中的Building Settings打勾選中E-mail
Notification,點擊右邊的問號,會出現幫助文檔,說明在四種情況下會發送email,填寫接受email的地址,然後故意將client代碼
修改到不能編譯通過。然後點擊Build now按鈕測試一下。果然收到email.
8.檢查代碼更新並編譯
可以通過Poll SCM來設置定時檢查編譯功能
比如*/5 * * * * 就是每隔5分鍾檢查一次,如果git倉庫中有更新,則執行build操作。
9.使用Maven加快下載速度
如我這篇文章所述,用可以避免下載過慢問題,也可以繞過公司內部外網限制問題。
Jenkins的.m2目錄路徑在:/var/lib/jenkins/.m2/
首先清空裡面所有的jar包,然後創建settings.xml文件,並編輯內容如下:
源碼列印?
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url></url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url></url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url></url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
現在點擊build now測試一下,打開console output,看看命令行輸出結果,如果發現從S1下載jar包,就正確。和不用的比較了一下,節省了1分多鍾.