Jenkins+git+maven自動構建並部署到遠程tomcat上

linux環境配置

1 安裝Javajava

yum install java-1.8.0-openjdk.x86_64

2 安裝mavenlinux

yum install maven

3 安裝gitgit

yum install git

4 安裝tomcatgithub

下載最新的tomcat包,放到/root目錄下,運行tar zxvf tomcat- *.tgz

5 安裝運行Jenkinsweb

點擊 這裏下載Jenkins最新的war包,並放到/root/apache-tomcat-7.0.86/webapps/目錄下。
6 運行命令 cd apache-tomcat-7.0.86/webapps/ 進入war包所在目錄,運行命令nohup java -jar jenkins.war --httpPort=8080 & 啓動Jenkins。8080爲默認端口,若是和其餘服務衝突可改變爲其餘端口

7 瀏覽器訪問 服務器地址:端口號(例如192.168.0.100:8080)便可訪問Jenkinsredis

Jenkins配置

1 安裝必需的插件spring

Deploy to container Plugin; GitLab Plugin;Maven Integration

2 配置jenkins工具環境apache

  • 配置jdk

  • 配置Git

  • 配置Maven

3 新建任務,選擇構建maven項目json

4 source Code Management選擇Gitapi

須要先點擊add添加一個帳號,打開這個頁面填寫你在gitlab的帳號密碼便可

選擇剛添加的帳號,下面的分支記得改爲本身須要的

5 勾選一下構建快照

6 Build這個pom文件不用修改,下面的語句可添加也可不添加

7 配置到這一步已經能夠自動打包了,咱們構建看一下
第一次運行會下載不少jar包,等待下載完成便可,打包成功後以下圖所示

下面部分開始部署到tomcat上

tomcat準備

1 遠程鏈接tomcat須要先配置tomcat帳號
配置tomcat目錄下的/conf/tomcat_user.xml ,把下面這段代碼放進去

<tomcat-users>
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <role rolename="manager-script"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-status"/> 
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/> 
    <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
</tomcat-users>

2 默認的tomcat使用的端口號是8085,若是你須要部署多個tomcat的話要分別對應不一樣的端口號,能夠在/conf/server.xml中查看,例如我使用的其中一個tomcat的端口號爲8082

3 Jenkins運行任務前須要把tomcat先運行起來,不然會鏈接失敗

進入/root/apache-tomcat-7.0.86-1/bin/目錄下(或者你目標tomcat的bin目錄下),
運行./startup.sh啓動tomcat,
使用tail -f /root/apache-tomcat-7.0.86-1/logs/catalina.out查看運行日誌,
使用ps -ef|grep tomcat查看tomcat是否啓動成功

安裝插件

1 在Jenkins的插件管理中搜索安裝 Deploy to container Plugin

配置任務

一、新建任務,選擇構建Maven項目
二、構建後操做選擇Deploy war/ear to a container

WAR/EAR files選擇你須要部署的war包在工做空間下的**相對路徑**
Context path意爲發佈到目標tomcat的webapp後的文件夾名字,我這裏選擇和war包同名
Credentials 須要先添加一個用戶,點擊添加,用戶名和密碼分別填入tomcat(或者是你本身tomcat_user.xml中的配置)
Tomcat URL 天然就是你須要鏈接的tomcat地址和端口號了



3 保存任務,運行看一下,成果的話以下圖所示

報錯總結

1

[ERROR] Failed to execute goal on project *: Could not resolve dependencies for project * :jar:1.0-SNAPSHOT: The following artifacts could not be resolved: com.alibaba:dubbo:jar:2.8.4, com.cloopen:sms-rest-sdk:jar:2.6.3, com.taobao.pamirs.schedule:tbschedule:jar:3.3.3.2: Could not find artifact com.alibaba:dubbo:jar:2.8.4 in central (http://jcenter.bintray.com)` Failed to collect dependencies for [Pingplusplus:pingpp-java:jar:2.2.1 (compile), org.springframework:spring-core:jar:5.0.5.RELEASE (compile), org.springframework:spring-web:jar:5.0.5.RELEASE (compile), org.springframework:spring-oxm:jar:5.0.5.RELEASE (compile), org.springframework:spring-tx:jar:5.0.5.RELEASE (compile), org.springframework:spring-jdbc:jar:5.0.5.RELEASE (compile), org.springframework:spring-context:jar:5.0.5.RELEASE (compile), org.springframework:spring-context-support:jar:5.0.5.RELEASE (compile), org.springframework:spring-aop:jar:5.0.5.RELEASE (compile), org.springframework:spring-test:jar:5.0.5.RELEASE (compile), javax.validation:validation-api:jar:2.0.1.Final (compile), org.slf4j:slf4j-api:jar:1.7.18 (compile), org.slf4j:log4j-over-slf4j:jar:1.7.18 (compile), ch.qos.logback:logback-classic:jar:1.0.13 (compile), com.github.pagehelper:pagehelper:jar:5.1.4 (compile), org.aspectj:aspectjrt:jar:1.9.1 (compile), org.aspectj:aspectjweaver:jar:1.9.1 (compile), org.javassist:javassist:jar:3.18.1-GA (compile), org.jboss.netty:netty:jar:3.2.5.Final (compile), com.alibaba:dubbo:jar:2.8.4 (compile), org.apache.zookeeper:zookeeper:jar:3.4.6 (compile), com.101tec:zkclient:jar:0.10 (compile), junit:junit:jar:4.12 (test), org.apache.commons:commons-lang3:jar:3.7 (compile), commons-lang:commons-lang:jar:2.6 (compile), org.apache.commons:commons-text:jar:1.4 (compile), commons-beanutils:commons-beanutils:jar:1.9.3 (compile), redis.clients:jedis:jar:2.9.0 (compile), org.springframework.data:spring-data-redis:jar:1.7.2.RELEASE (compile), com.fasterxml.jackson.core:jackson-core:jar:2.9.5 (compile), com.fasterxml.jackson.core:jackson-databind:jar:2.9.5 (compile), com.fasterxml.jackson.core:jackson-annotations:jar:2.9.5 (compile), com.alibaba:fastjson:jar:1.2.47 (compile), com.cloopen:sms-rest-sdk:jar:2.6.3 (compile), com.aliyun:aliyun-java-sdk-core:jar:4.0.6 (compile), com.aliyun:aliyun-java-sdk-dysmsapi:jar:1.1.0 (compile), com.google.code.gson:gson:jar:2.8.2 (compile), com.taobao.pamirs.schedule:tbschedule:jar:3.3.3.2 (compile), org.apache.solr:solr-solrj:jar:4.7.2 (compile), org.apache.httpcomponents:httpcore:jar:4.4.4 (compile), commons-httpclient:commons-httpclient:jar:3.1 (compile), net.sf.json-lib:json-lib:jar:jdk15:2.4 (compile)]: Failed to read artifact descriptor for com.alibaba:dubbo:jar:2.8.4: Could not find artifact com.alibaba:dubbo-parent:pom:2.8.4 in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) -> [Help 1]
缺乏對應的jar包,能夠直接從原環境下複製過來

2

org.codehaus.cargo.container.ContainerException: Failed to redeploy [/root/.jenkins/workspace/git_1/*/target/*.war]
        at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:192)
        at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117)
        at hudson.FilePath.act(FilePath.java:1074)
        at hudson.FilePath.act(FilePath.java:1057)
        at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114)
        at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93)
        at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64)
        at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
        at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
        at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1073)
        at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
        at hudson.model.Run.execute(Run.java:1841)
        at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:429)
Caused by: java.io.FileNotFoundException: http://192.168.2.7:8082/manager/text/list
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1890)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:571)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:876)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:889)
        at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:173)
        ... 17 more
java.io.FileNotFoundException: http://192.168.2.7:8082/manager/text/list
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1890)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:571)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:876)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:889)
        at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:173)
        at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117)
        at hudson.FilePath.act(FilePath.java:1074)
        at hudson.FilePath.act(FilePath.java:1057)
        at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114)
        at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93)
        at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64)
        at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
        at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
        at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1073)
        at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
        at hudson.model.Run.execute(Run.java:1841)
        at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:429)
  • 緣由: 缺乏manager文件夾
  • 解決方案:能夠從原來項目的/root/apache-tomcat-7.0.86-1/webapps/目錄下拷貝過來

3

org.codehaus.cargo.container.ContainerException: Failed to redeploy [/root/.jenkins/workspace/git_1/*/target/*.war]
        at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:192)
        at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117)
        at hudson.FilePath.act(FilePath.java:1074)
        at hudson.FilePath.act(FilePath.java:1057)
        at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114)
        at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93)
        at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64)
        at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
        at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
        at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1073)
        at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
        at hudson.model.Run.execute(Run.java:1841)
        at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:429)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at java.net.Socket.connect(Socket.java:538)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
        at sun.net.www.http.HttpClient.New(HttpClient.java:339)
        at sun.net.www.http.HttpClient.New(HttpClient.java:357)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:561)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:876)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:889)
        at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:173)
        ... 17 more
java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at java.net.Socket.connect(Socket.java:538)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
        at sun.net.www.http.HttpClient.New(HttpClient.java:339)
        at sun.net.www.http.HttpClient.New(HttpClient.java:357)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:561)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:876)
        at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:889)
        at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:173)
        at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:77)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:147)
        at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:117)
        at hudson.FilePath.act(FilePath.java:1074)
        at hudson.FilePath.act(FilePath.java:1057)
        at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:114)
        at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeploy(PasswordProtectedAdapterCargo.java:93)
        at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:64)
        at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
        at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
        at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
        at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1073)
        at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
        at hudson.model.Run.execute(Run.java:1841)
        at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:429)
Build step 'Deploy war/ear to a container' marked build as failure
Finished: FAILURE
  • 緣由: 缺乏manager文件夾
  • 解決方案:能夠從原來項目的/root/apache-tomcat-7.0.86-1/webapps/目錄下拷貝過來
相關文章
相關標籤/搜索