使用cargo實現jenkins自動部署遠程tomcat

來源:互聯網
上載者:User

標籤:cargo   jenkins   tomcat   maven   遠程部署   

轉載請標明出處:
http://blog.csdn.net/ouyida3/article/details/48089141
本文出自:【ouyida3的部落格】

tomcat-users.xml配置
<role rolename="manager"/><role rolename="manager-script"/> <role rolename="manager-gui"/> <role rolename="manager-jmx"/><role rolename="manager-status"/>  <user username="admin" password="admin" roles="manager,manager-gui,manager-script,manager-jmx,manager-status"/>
pom.xml配置
<plugin>    <groupId>org.codehaus.cargo</groupId>    <artifactId>cargo-maven2-plugin</artifactId>    <version>1.4.15</version>    <configuration>        <container>            <containerId>tomcat8x</containerId>            <type>remote</type>        </container>        <configuration>            <type>runtime</type>            <properties>                <cargo.tomcat.manager.url>http://32.20.115.125:8080/manager</cargo.tomcat.manager.url>                <cargo.remote.username>admin</cargo.remote.username>                <cargo.remote.password>admin</cargo.remote.password>                <cargo.servlet.port>8080</cargo.servlet.port>                <cargo.hostname>32.20.115.125</cargo.hostname>                <cargo.tomcat.ajp.port>8009</cargo.tomcat.ajp.port>            </properties>        </configuration>    </configuration></plugin>
測試命令

mvn cargo:redeploy

成功:

F:\code\bss_gd-trunk\mapp\zsale\zsale-web>mvn cargo:redeploy[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building zsale-web 0.0.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- cargo-maven2-plugin:1.4.15:redeploy (default-cli) @ zsale-web ---[INFO] [DeployerRedeployMojo] Resolved container artifact org.codehaus.cargo:cargo-core-container-tomcat:jar:1.4.15 for container tomcat8x[INFO] [mcat8xRemoteDeployer] Redeploying [F:\code\bss_gd-trunk\mapp\zsale\zsale-web\target\zsale-web-0.0.1-SNAPSHOT.war][INFO] [mcat8xRemoteDeployer] Undeploying [F:\code\bss_gd-trunk\mapp\zsale\zsale-web\target\zsale-web-0.0.1-SNAPSHOT.war][INFO] [mcat8xRemoteDeployer] Deploying [F:\code\bss_gd-trunk\mapp\zsale\zsale-web\target\zsale-web-0.0.1-SNAPSHOT.war][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 38.813 s[INFO] Finished at: 2015-08-29T17:23:50+08:00[INFO] Final Memory: 6M/17M[INFO] ------------------------------------------------------------------------

ps:第一次運行會下載cargo相關的jar

報錯解決方案

運行mvn cargo:redeploy報錯

Caused by: java.net.ConnectException: Connection refused: connect
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:534)

如果tomcat沒啟動,也會報這個錯。如果啟動了也報這個錯,首先先通過瀏覽器訪問,看看行不行。因為代碼裡就是使用HttpConnection來connect的。

查看原始碼的方法請看下面

如果瀏覽器可以訪問,就是配置錯了。
注意:cargo.hostname是必須配置的,如果不配置預設是localhost!也就是說cargo.tomcat.manager.url裡配置了什麼都是不起作用的。連接埠也一樣,要配置。

原始碼代碼查看方法

假設使用的是cargo-core-container-tomcat-1.4.9.jar這個版本,則在pom.xml裡依賴一下這個jar,然後執行命令mvn dependency:sources即可。這條命令會把pom.xml裡依賴的jar都下載原始碼,當然,如果本身這個jar是不提供原始碼的就不會下載,執行命令的最後會提示哪些下載了哪些沒下載。

吐槽一下

許曉斌的《Maven實戰》這本書確實非常好。但是,關於cargo遠程部署這一章節就有點敷衍了事了!只列舉了一個localhost的配置例子,明明是遠程部署,怎能用localhost作例子呢?搞得我因為這個導致connection refused錯誤弄了半天才搞定。

使用者名稱密碼錯誤

Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException:
The username and password you provided are not correct (error 401)

如果使用者名稱密碼錯誤,則報這個錯。

關於版本

我嘗試了1.4.9和最新的1.4.15都沒有問題。
tomcat我使用的是tomcat8,containerId嘗試了tomcat7x和tomcat8x都可以(tomcat9x當然不行的)。證明tomcat7x的配置也是相容tomcat8的。

參考

jenkins部署tomcat
http://wxynxyo.iteye.com/blog/1909110 有jenkins的圖
http://my.oschina.net/congqian/blog/112782
http://blog.sina.com.cn/s/blog_b5fe6b270102v7xi.html 沒試過,好像挺方便

cargo
http://zhouhaitao.iteye.com/blog/1997135
http://blog.csdn.net/steveguoshao/article/details/38469713 較詳細
http://www.codeweblog.com/use-maven-cargo-plugin-manager-deployment-tomcat6/ 更詳細,但是英文(就是這個文章解決了我的大難題)

cargo官網:
https://codehaus-cargo.github.io/cargo/Home.html
http://cargo.codehaus.org/(以前的官網,現已自動跳轉)

擴充-Capitomcat

Capitomcat 是jenkins的外掛程式,據說也可以部署tomcat。但是被牆了!我沒試。

Ruby Runtime Plugin 等待
Capitomcat Plugin 等待
重啟 Jenkins 等待
Failed to connect to http://www.google.com/. Perhaps you need to

另外,cargo部署分為遠程部署和本地部署。本文只講述前者,因為後者在生產環境意義不大。本地部署比較簡單,看看許曉斌的書《Maven實戰》或者網上的例子就可。

轉載請標明出處:
本文出自:【ouyida3的部落格】
2015.8.29

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

使用cargo實現jenkins自動部署遠程tomcat

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.