Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʹÓÃJenkinsÅäÖÃGit+MavenµÄ×Ô¶¯»¯¹¹½¨
 
×÷ÕߣºÚûÔ½ À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-10-22
  25459  次浏览      31
 

JenkinsÊÇÒ»¸ö¿ªÔ´µÄ³ÖÐø¼¯³É¹¤¾ß£¬Ó¦ÓÃJenkins´î½¨³ÖÐø¼¯³É»·¾³£¬¿ÉÒÔ½øÐÐ×Ô¶¯¹¹½¨¡¢×Ô¶¯±àÒëºÍ²¿Ê𣬷dz£·½±ã¡£

ÔÚ·þÎñÆ÷±È½ÏÉÙµÄÇé¿öÏ£¬JenkinsµÄÓÅÊÆ²¢²»Ã÷ÏÔ£¬µ«ÊÇËæ×ÅÏîÄ¿·¢Õ¹£¬·þÎñÆ÷ÊýÁ¿µÄÔö¼Ó£¬JenkinsµÄÓÅÊÆ¾Í»á͹ÏÔ³öÀ´£¬¿ÉÒԺܺõÄÌá¸ßЧÂÊ£¬¼õÉٺܶàÈ˹¤²Ù×÷¡£

ÏÖÔںܶ๫˾µÄJavaÏîÄ¿¿ª·¢¶¼ÊÇʹÓÃGit»òÕßSVN¹ÜÀí´úÂ룬Maven¹ÜÀí¶àÄ£¿éºÍÏîÄ¿ÒÀÀµ£¬ËùÒÔ½ñÌì³¢ÊÔѧϰÈçºÎʹÓÃJenkins´î½¨GithubÓëMavenϵÄ×Ô¶¯¹¹½¨ºÍ²¿Êð¡£

1.²¿ÊðJenkins

¹ÙÍøÏÂÔØhttp://jenkins-ci.org/¡£Ä¿Ç°µÄ×îа汾ÊÇ1.629¡£

JenkinsµÄ°²×°Ê®·Ö¼òµ¥£¬ÏÂÔØºó¾ÍÊÇÒ»¸öjenkins.warµÄwar°ü£¬¿ÉÒÔÖ±½Ó²¿ÊðÔÚTomcat»òÕ߯äËûÈÝÆ÷ÖС£

Èç¹û²»Äܲ¿Ê𣬿ÉÒÔ¼ì²éTomcatµÄÅäÖÃÎļþ£¬¿ÉÒԲ鿴server.xmlÀïunpackWARsºÍautoDeployÊÇ·ñÉèÖÃΪTrue¡£

ÁíÍâ¹ÙÍø»¹ÓÐÏà¹ØµÄ.debµÈµÄ°²×°£¬±È½Ï·±Ëö£¬¾ßÌåÄÄÖÖ·½Ê½²¿Êð¿ÉÒÔ×Ô¼ºÑ¡Ôñ¡£

2.°²×°Ïà¹Ø²å¼þ

°ÑwarÎļþ¿½±´µ½TomcatµÄwebappsĿ¼£¬

Æô¶¯ºó½øÈëhttp://SERVER_PATH:8080/jenkins/£¬¿ÉÒÔ¿´µ½JenkinsÒѾ­ÔÚÔËÐУº

ÅäÖÃGit²Ö¿âÐèÒªÓõ½Git²å¼þ£¬JenkinsĬÈÏûÓÐGit²å¼þ£¬ÐèÒªÊÖ¶¯°²×°¡£

µã»÷Manage Jenkins£¬½øÈëManage Plugins£¬

ÔÚ¿ÉÓÃ(Avaliable)²å¼þÁбíÏÂÕÒµ½Source Code ManagementÒ»À¸£¬

Ñ¡ÔñGIT plugin²å¼þ£¬°²×°Ö®ºóÖØÆô¡£

ÆäËûµÄ²å¼þÈçMavenµÈ£¬JenkinsĬÈϰ²×°£¬²»ÐèÒªÊÖ¶¯ÏÂÔØ¡£

3.ÅäÖÃMavenºÍJDK·¾¶µÈ

Ñ¡ÔñConfigure System£¬¿ÉÒÔÅäÖÃMaven°²×°Â·¾¶µÈ¡£

Èç¹ûûÓÐMavenºÍGit»·¾³£¬ÐèÒªÁíÍâÉèÖá£

¼ÇµÃÅäÖÃJDK·¾¶£¬µÚÒ»´ÎÎÒ¾ÍÍü¼ÇÅäÖ㬽á¹û¹¹½¨Ê±ÏµÍ³×Ô¶¯°²×°Jdk£¬ÌرðÂý¡£

ÏÂÃæÊÇJenkins LocationÑ¡ÏjenkinsĬÈÏ»á´æ·ÅÔÚÓû§Ö÷Ŀ¼ÏµÄ.jenkinsÎļþ¼ÐÖУ¬Èç¹ûÐèÒª±ä¶¯¿ÉÒÔÔÚÕâÀï¸ü¸Ä¡£

ºóÃæµÄshellÖÐÒ²»áÓõ½Jenkins Location£¬Ä¬ÈϵķÃÎÊ·¾¶£ºhttp://SERVER_PATH:8080/jenkins/job/

4.´´½¨ÈÎÎñ£¬ÅäÖÃÏîÄ¿ÐÅÏ¢

ΪÁ˸üºÃµÄѧϰJenkins£¬ÎÒн¨ÁËÒ»¸ö·Ç³£¼òµ¥µÄSpring MVCÏîÄ¿£¬Õâ¸öÏîĿʹÓÃMaven¹ÜÀí£¬Ìá½»µ½ÁËgithubÉÏ£¬µØÖ·£ºhttps://github.com/bingyue/easy-springmvc-maven

pom.xmlµÄ²¿·ÖÄÚÈÝ£º


...

<groupId>springmvc-maven</groupId>

<artifactId>easy-springmvc-maven</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

...

<build>

<!-- Éú³ÉµÄwarÎļþÃû ±ÜÃâÌí¼Ó°æ±¾ºÅ -->

<finalName>easy-springmvc-maven</finalName>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.1</version>

<configuration>

<source>1.6</source>

<target>1.6</target>

</configuration>

</plugin>

<plugin>

<artifactId>maven-war-plugin</artifactId>

<configuration>

<version>3.0 </version>

</configuration>

</plugin>

</plugins>

</build>

...

Ê×ÏȰ´ÕÕÌáʾ´´½¨Ò»¸öÈÎÎñ£¬Ñ¡ÔñMaven Project¡£

½øÈëConfigÒ³Ãæ£¬µã»÷Source Code ManagementµÄgitÑ¡ÏÌîÈëÉÏÃæµÄgitµØÖ·£¬ÅäÖÃÓû§ÃûÃÜÂëµÈ²ÎÊý¡£

ÏÂÃæµÄBuild TriggersÊÇÒ»¸ö³ÖÐø¼¯³ÉµÄ´¥·¢Æ÷²å¼þ£¬¿ÉÒÔ¸ù¾ÝÒѾ­Íê³É¹¹½¨µÄ½á¹û£¬´¥·¢ÐÂJob»òÕß´«µÝ²ÎÊý¡£Ä¬ÈϵÄÑ¡ÏîÊÇBuild whenever a SNAPSHOT dependency is built£¬Òâ˼ÊÇÒÀÀµÓÚ¿ìÕյĹ¹½¨Òâ˼ÊÇÒÀÀµÓÚ¿ìÕյĹ¹½¨£¬µ±´úÂëÓиüÐÂʱ¾Í¹¹½¨ÏîÄ¿¡£

ÏÂÃæµÄBuild periodicallyºÍPoll SCM¿ÉÒÔÉèÖö¨Ê±×Ô¶¯¹¹½¨£¬ÕâÀïÎÒÔÝʱ²»ÉèÖá£

Pre StepsÑ¡ÏîÓÃÀ´ÅäÖù¹½¨Ç°µÄ¹¤×÷£¬ÕâÀï²»×÷¸ü¸Ä¡£

ÒòΪÊÇMavenÏîÄ¿£¬BuildÑ¡ÏîÓÐRoot POMºÍGoals and optionsµÄÉèÖã¬Ê¹ÓÃĬÈϵĴò°üÓ¦¸Ã¾Í¿ÉÒÔ¡£

5.ÅäÖù¹½¨³É¹¦ºóµÄ¶¯×÷£¬Ìí¼Óshell

Post StepsÑ¡ÏîÉèÖù¹½¨Íê³ÉºóµÄ¶¯×÷£¬ÕâÀïÎÒÉèÖÃΪ½«war°ü¿½±´µ½TomcatĿ¼£¬É¾³ýÏîĿԭÀ´µÄÄÚÈÝÎļþ¼Ð£¬²¢ÖØÆôTomcat¡£

Ñ¡ÔñRun only if build succeeds or is unstable £¬µã»÷Ìí¼ÓExecute Shell£º


#!/bin/bash

#copy file and restart tomcat

tomcat_path=/usr/local/tomcat2

project=easy-springmvc-maven

war_name=easy-springmvc-maven.war

war_path=http://192.168.106.128:8080/jenkins/job/jeekins-test/ws/target

server_port=8082

file_path=/home/bingyue/.jenkins/jobs/jeekins-test/workspace/target

now=$(date +"%Y%m%d%H%M%S")

echo "the shell execute time is ${now}"

echo `lsof -n -P -t -i :${server_port}`

tomcat_pid=`lsof -n -P -t -i :${server_port}`

echo "the tomcat_pid is ${tomcat_pid}"

if [ "${tomcat_pid}" != "" ]; then

kill -9 $tomcat_pid

echo "kill the server"

fi

echo "rm ${tomcat_path}/webapps/${war_name}"

rm ${tomcat_path}/webapps/${war_name}

echo "rm -rf ${tomcat_path}/webapps/${project}"

rm -rf ${tomcat_path}/webapps/${project}

cd $file_path

if [ -f ${war_name} ]; then

cp ${war_name} ${tomcat_path}/webapps

else

echo "${war_name} unexists"

fi

export JAVA_HOME=/data/jdk7

export CATALINA_HOME2=/usr/local/apache-tomcat-2

export CATALINA_BASE2=/usr/local/apache-tomcat-2

$tomcat_path/bin/startup.sh

echo "server restarted"

˵Ã÷¼¸µã£º

Õâ´ÎѧϰÊÇʹÓÃÁ˵¥Ì¨ÐéÄâ»úÀïµÄÁ½¸öTomcat£¬ËùÒԶ˿ںÅÓиı䣬ÎÒΪÁË·½±ã²âÊÔ£¬Ö±½Ó·ÃÎÊÁËJenkinsµÄÒþ²ØÄ¿Â¼/.jenkins/Îļþ¼Ð£¬Êµ¼ÊÓ¦ÓÃÖУ¬Jenkinsͨ³£¶¼ÊÇÓ¦ÓÃÔÚ·Ö²¼Ê½ÏµÍ³£¬Í¬Ê±²¿Êð¶ą̀·þÎñÆ÷£¬Ò»°ã¶¼ÊÇ·ÃÎÊJenkinsËùÔڵĻúÆ÷ÉÏÏÂÔØwar°üÀ´²¿Êð£¬ÎÒÃDzâÊÔµÄʱºòÒ²¿ÉÒÔÖ±½ÓÐÞ¸ÄJenkinsÖ÷Ŀ¼¡£

×îÏÂÃæµÄBuildSetting ¿ÉÒÔÉèÖÃÓʼþÊÕ¼þÈËÁбíµÈ£¬ÔÚÿ´Î¹¹½¨½áÊøºó¿ÉÒÔ½«Ïà¹ØÐÅÏ¢·¢Ë͵½ÓÊÏä¡£

6.¹¹½¨ÏîÄ¿

Íê³ÉÏàÓ¦µÄÉèÖú󣬾ͿÉÒÔ½øÐÐÏîÄ¿µÄ¹¹½¨¡£ÔÚÈÎÎñÁбíÒ³µã»÷PlayµÄ°´Å¥£¬»òÕß½øÈëÈÎÎñÈ»ºóÑ¡ÔñBuild Now¡£

Ê×Ò³×óϽǵÄÀ¸Ä¿ÏÔʾÕýÔÚ¹¹½¨µÄÏîĿ״̬£º

µã»÷¿ÉÒԲ鿴¿ØÖÆÌ¨Êä³öºÍÈÕÖ¾£º

¹¹½¨³É¹¦£¬ÏîĿ״̬ΪÀ¶É«£¬Ê§°ÜÊǺìÉ«¡£

´ò°ü³É¹¦ºó£¬¿ÉÒÔ½øÈëworkspace²é¿´Îļþ£ºhttp://SERVER_PATH:8080/jenkins/job/jeekins-test/ws/target/easy-springmvc-maven.war

ÏÖÔÚ´ò¿ª¸Õ²ÅµÄTomcat·¾¶£¬Èç¹û¿ØÖÆÌ¨Ã»ÓдíÎóÊä³ö£¬¹¹½¨µÄÏîĿӦ¸Ã¿ÉÒÔÕý³£·ÃÎÊ£º

¹¹½¨³É¹¦£¡

7.Óöµ½µÄÎÊÌâ

²¿Êðµ½TomcatʱJenkinsÆô¶¯±¨´í£¬war°üÎÞ·¨½âѹ£º

Invalid or unreadable WAR file : error in opening zip file

¼ì²é·¢ÏÖÊÇÎļþÏÂÔØ²»ÍêÈ«£¬ÖØÐÂÏÂÔØÉÏ´«ºó½â¾ö¡£jenkins.warÎļþÓÐ60¶àMB£¬Ê¹ÓÃǰ¼ÇµÃ¼ì²éÎļþÍêÕûÐÔ¡£

1.Ê״νøÈëÌáʾYour container doesn¡¯t use UTF-8 to decode URLs. If you use non-ASCII characters as a job name etc, this will cause problems.

µã»÷JenkinsÌáʾÒѾ­¸ø³öÁ˽â¾ö·½°¸:

Some versions of Tomcat (such as 5.0.28) uses iso-8859-1 to decode URLs, which is in a clear violation of the relevant RFCs. To fix this problem, add the following URIEncoding attribute to the connector definition in $TOMCAT_HOME/conf/server.xml.
<Connector port="8080" URIEncoding="UTF-8"/>

2.Sending e-mails to: name@gmail.com

ERROR: Could not connect to SMTP host: localhost, port: 25

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;

±¾µØµÄSMTP25¶Ë¿ÚûÓдò¿ª¡£

   
25459 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
ÏîÄ¿¹ÜÀí:MavenÈÃÊÂÇé±äµÃ¼òµ¥
³ÖÐø¼¯³É¹¤¾ßhudson
³ÖÐø¼¯³É
MavenȨÍþÖ¸ÄÏ
³ÌÐò¼¯(UMLÖеİü)Ö®¼äÑ­»·


²úÆ··¢²¼¹ÜÀí
ÅäÖùÜÀí·½·¨¡¢Êµ¼ù¡¢¹¤¾ß
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
ʹÓÃCCÓëCQ½øÐÐÏîĿʵ¼ù
CVSÓëÅäÖùÜÀí
Subversion¹ÜÀíÔ±


º£º½¹É·Ý ÖØ¹¹¼°³ÖÐø¼¯³É
µçÑлªÔ´ Éè¼ÆÔ­Àí¡¢½¨Ä£ÓëÖØ¹¹
Èí¼þÅäÖùÜÀíÈÕ¹¹½¨¼°³ÖÐø¼¯³É
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
ÖйúÈí¼þÑз¢ÖÐÐÄ µ¥Ôª²âÊÔÓëÖØ¹¹
µ¥Ôª²âÊÔ¡¢Öع¹ºÍ³ÖÐø¼¯³Éʵ¼ù
ÂÞ¿ËΤ¶û C++µ¥Ôª²âÊÔ+ÖØ¹¹+Gtest