±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn,ÎÄÖдӻ·¾³°²×°¡¢µ½ÏêϸÅäÖü°FAQµÈµÈ£¬Ïêϸ²½ÖèµÄ½éÉÜ£¬¿ÉÒÔ°ïÖú´ó¼ÒÔÚÅäÖõÄʱºòµÃÐÄÓ¦ÊÖ¡£ |
|
³õÊÔJenkins2.0
Pipeline³ÖÐø¼¯³É
Ŀ¼£º
Jenkins 2.0½éÉÜ
»·¾³¡¢Èí¼þ×¼±¸
°²×°¡¢Æô¶¯²¢ÅäÖÃjenkins·þÎñ
н¨Pipeline Job Demo
FAQ
1¡¢Jenkins 2.0½éÉÜ
ÏȽéÉÜÏÂʲôÊÇJenkins 2.0£¬Jenkins 2.0µÄ¾«ËèÊÇPipeline as Code£¬ÊǰïÖúJenkinsʵÏÖCIµ½CDת±äµÄÖØÒª½ÇÉ«¡£Ê²Ã´ÊÇPipeline£¬¼òµ¥À´Ëµ£¬¾ÍÊÇÒ»Ì×ÔËÐÐÓÚJenkinsÉϵŤ×÷Á÷¿ò¼Ü£¬½«Ô±¾¶ÀÁ¢ÔËÐÐÓÚµ¥¸ö»òÕß¶à¸ö½ÚµãµÄÈÎÎñÁ¬½ÓÆðÀ´£¬ÊµÏÖµ¥¸öÈÎÎñÄÑÒÔÍê³ÉµÄ¸´ÔÓ·¢²¼Á÷³Ì¡£PipelineµÄʵÏÖ·½Ê½ÊÇÒ»Ì×Groovy
DSL£¬Èκη¢²¼Á÷³Ì¶¼¿ÉÒÔ±íÊöΪһ¶ÎGroovy½Å±¾£¬²¢ÇÒJenkinsÖ§³Ö´Ó´úÂë¿âÖ±½Ó¶ÁÈ¡½Å±¾£¬´Ó¶øÊµÏÖÁËPipeline
as CodeµÄÀíÄî¡£
PipelineµÄ¼¸¸ö»ù±¾¸ÅÄ
Stage: ½×¶Î£¬Ò»¸öPipeline¿ÉÒÔ»®·ÖΪÈô¸É¸öStage£¬Ã¿¸öStage´ú±íÒ»×é²Ù×÷¡£×¢Ò⣬StageÊÇÒ»¸öÂß¼·Ö×éµÄ¸ÅÄ¿ÉÒÔ¿ç¶à¸öNode¡£
Node: ½Úµã£¬Ò»¸öNode¾ÍÊÇÒ»¸öJenkins½Úµã£¬»òÕßÊÇMaster£¬»òÕßÊÇAgent£¬ÊÇÖ´ÐÐStepµÄ¾ßÌåÔËÐÐÆÚ»·¾³¡£
Step: ²½Ö裬StepÊÇ×î»ù±¾µÄ²Ù×÷µ¥Ôª£¬Ð¡µ½´´½¨Ò»¸öĿ¼£¬´óµ½¹¹½¨Ò»¸öDocker¾µÏñ£¬Óɸ÷ÀàJenkins
PluginÌṩ¡£
2¡¢»·¾³¡¢Èí¼þ×¼±¸
±¾´ÎÑÝʾ»·¾³£¬ÎÒÊÇÔÚ±¾»úmacÉϲÙ×÷£¬ÒÔÏÂÊÇÎÒ±¾µØÈí¼þ¼°°æ±¾£º
Jenkins£ºversion 2.46.3
Tomcat£ºversion 7.0.70
Jdk£ºversion ¡°1.8.0_91¡±
Docker£º Version 17.03.0-ce-mac1 (15583)
Gitlab£º GitLab Community Edition 8.17.4
×¢Ò⣺±¾´ÎÎÒÃÇ·Ö±ðÑÝʾÁ½ÖÖ·½Ê½°²×°jenkins£¬»ùÓÚTomcatºÍJdk°²×°£¬ÎÒÃÇÐèÒªÌáǰ°²×°ºÃJdk¡¢Tomcat·þÎñ£¬»ùÓÚDocker°²×°£¬ÎÒÃÇÐèÒªÌáǰ°²×°docker»·¾³¡£ÕâÀïÎҾͺöÂÔTomcat¡¢Jdk¡¢docker¡¢gitlabµÄ°²×°¹ý³Ì£¬×ÅÖØËµÏÂJenkins°²×°ÒÔ¼°ÈçºÎÅÜPipeline
Job¡£
3¡¢°²×°¡¢Æô¶¯²¢ÅäÖÃjenkins·þÎñ
Ò»¡¢Jenkins°²×°Æô¶¯·½Ê½ÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇ»ùÓÚtomcat¡¢JdkÆô¶¯£¬Ò»ÖÖÊÇ»ùÓÚDockerÆô¶¯¡£
1£©»ùÓÚTomcat¡¢JdkÆô¶¯
Ê×ÏÈÏÂÔØJenkins×îÐµİ²×°°ü£¬¿ÉÒÔÈ¥¹ÙÍøÏÂÔØ×îа棬µã»÷ ÕâÀï ÏÂÔØ¡£
Æô¶¯Jenkins¿ÉÒÔÓÐÁ½ÖÖ·½Ê½
½øÈëwar°üËùÔÚĿ¼£¬Ö±½ÓÖ´ÐÐjava -jar jenkins.war
½«war°ü·ÅÔÚTomcat webappsĿ¼Ï£¬Æô¶¯tomcat¡£
2£©»ùÓÚDockerÆô¶¯
ÀÈ¡jenkins¹Ù·½¾µÏñ
Æô¶¯jenkins ÈÝÆ÷
docker run -p
8080:8080 -p 50000:50000 -v /Users/wanyang3/ jenkins_home:/
var/jenkins_home jenkins |
Æô¶¯Íê³ÉÖ®ºó£¬ä¯ÀÀÆ÷·ÃÎÊhttp://localhost:8080£¬µÚÒ»´ÎÆô¶¯³õʼ»¯ÉÔÂýһЩ£¬ÉÔµÈÒ»»á¾Í¿É¿ªÊ¼jenkins³õʼ»¯ÅäÖá£
¶þ¡¢Jenkins³õʼ»¯ÅäÖÃ
1£©¡¢½âËøJenkins ¡ª¡· Unlock Jenkins

˵Ã÷£º°´ÕÕµ¯¿òÌáʾ£¬ÕÒµ½¸ÃinitialAdminPasswordÎļþ£¬ÎÒÕâÀïʹÓÃDockerÆô¶¯Jenkins£¬²¢ÇÒ°Ñjenkins_homeĿ¼¹ÒÔØµ½ÎÒ´ÅÅÌÖ¸¶¨Ä¿Â¼£¬ËùÒÔÕâÀïÎÒÖ»ÐèÒª¸´ÖÆ/Users/wanyang3/jenkins_home/initialAdminPassword¼´¿É£¬Èç¹û·Ç¹ÒÔØ·½Ê½DockerÆô¶¯£¬ÔòÐèÒª½øÈëÈÝÆ÷ÄÚ¸ù¾ÝÌáʾ·¾¶ÕÒµ½¸ÃÎļþ¡£
2£©¶¨ÖÆ Jenkins Customize Jenkins


˵Ã÷£ºÕâÀïÈôÑ¡ÔñInstall suggested plugins°²×°£¬ÄÇôjenkins¾Í»á¸øÄãÍÆ¼ö°²×°Ò»Ð©ºÜÓÐÓõIJå¼þ£¬ÈôÑ¡ÔñSelect
plugins to install°²×°£¬ÄÇô¾ÍÐèÒª×Ô¼º¸ù¾ÝÒµÎñÐèҪѡÔñÐÔ°²×°Ä³Ð©²å¼þ¡£
3£©´´½¨µÚÒ»¸ö¹ÜÀíÔ±Óû§£¬Create first admin user

˵Ã÷£ºÕâÀï´´½¨µÚÒ»¸ö¹ÜÀíÔ±Óû§£¬Ò²¿ÉÒÔ²»ÉèÖã¬Ö±½Óµã»÷¡°Continue as admin¡±£¬½øÈëjenkinsÒÔºóÔÙÉèÖá£
4¡¢Ð½¨Pipeline Job Demo
1£©´´½¨Ò»¸öpipeline job

´´½¨Íê³Éºó£¬µã»÷¸Ãjob ¡ª¡·ÉèÖà ¡ª¡· Pipeline£¬ÔÚÊäÈë¿òÖÐÊäÈëscriptÓï¾ä¡£
ʾÀýscript£º
node{
stage('get clone'){
//check CODE
git credentialsId: 'f3eb1fea-42b0 -46b2-8342-a2be6a65fe73',
url: 'http://xx.xx.xx/xx/qd_api.git'
}
//¶¨Òåmvn»·¾³
def mvnHome = tool 'M3'
env.PATH = "${mvnHome}/bin:${env.PATH}"
stage('mvn test'){
//mvn ²âÊÔ
sh "mvn test"
}
stage('mvn build'){
//mvn¹¹½¨
sh "mvn clean install -Dmaven.test.skip=true"
}
stage('deploy'){
//Ö´Ðв¿Êð½Å±¾
echo "deploy ......"
}
} |
×¢Ò⣺ÕâÀïjobÖ´ÐÐpipeline¶¨Ò壬¿ÉÒÔÓÐÁ½ÖÖ·½Ê½£¬Ò»ÖÖÖ±½ÓÔÚjobÌîдpipeline scriptÀ´Ö´ÐÐ,
Ò»ÖÖÊÇʹÓÃpipeline script from SCM¡£
pipeline script£ºÖ±½ÓÔÚScriptÊäÈë¿òÀïÃæÊäÈëpipeline scriptÓï¾ä¼´¿É£¬²Î¿¼ËµÃ÷¿ÉÒÔµã»÷ÊäÈë¿òϱߵÄPipeline
Syntax£¬ÀïÃæÓкܶàʾÀý²Ù×÷˵Ã÷£¬·Ç³£ºÃÓá£
pipeline script from SCM£ºÐèÒªÅäÖÃSCM´úÂë´æ´¢GitµØÖ·»òSVNµØÖ·£¬Ö¸¶¨scriptÎļþËùÔÚ·¾¶£¬Ã¿´Î¹¹½¨job»á×Ô¶¯È¥Ö¸¶¨µÄĿ¼ִÐÐscriptÎļþ¡£
2£©ÅäÖÃÈ«¾Ö¹¤¾ßÅäÖÃMaven
ÒòΪÎÒÃǵÄÏîÄ¿ÊÇMaven¹¤³Ì£¬Õâ´ÎÖ´ÐÐbuildÐèҪʹÓÃmvnÃüÁËùÒÔÐèÒªÅäÖÃÒ»¸öÈ«¾ÖµÄMaven¡£
½øÈëµ½ ϵͳ¹ÜÀí -¡·Global Tool ¡ª¡·Maven -¡·Maven°²×°£¬Ö¸¶¨Name¡¢MAVEN_HOME¡¢Ñ¡ÔñÒª°²×°µÄMavne°æ±¾£¬×Ô¶¯°²×°¼´¿É¡£

3£©Ö´Ðй¹½¨
µã»÷¡°Á¢¼´¹¹½¨¡±£¬¼´¿É¿ªÊ¼¹¹½¨£¬ÓÒ²àStage View²é¿´¹¹¼þÁ÷³Ì£¬µã»÷ÿ¸östage£¬¿ÉÒԲ鿴ÿ¸ö½×¶ÎµÄÏêϸÈÕÖ¾Êä³ö¡£

FAQ
ʹÓòå¼þ mvn ÃüÁÔÚscriptÓï¾äÀïÃæ£¬ÎÒÃÇʹÓõÄtool¹¤¾ßÀ´»ñȡȫ¾ÖMavenÅäÖÃM3£¬ÕâÀïÎÒÃÇÒ²¿ÉÒÔʹÓÃPipeline
Maven Integration Plugin²å¼þÀ´Íê³É¡£
µã»÷²å¼þ¹ÜÀí ¡ª¡·¿ÉÑ¡²å¼þ ¡ª¡·Pipeline Maven Integration Plugin
¡ª¡·Á¢¼´°²×°£¬°²×°Íê³ÉÖ®ºó£¬¾Í¿ÉÒÔʹÓøòå¼þʹÓÃmvnÃüÁîÁË¡£

ʾÀýscript£º
node{
stage('get clone'){
//check CODE
git credentialsId: 'f3eb1fea-42b0-46b2 -8342-a2be6a65fe73',
url: 'http://xx.xx.xx/xx/qd_api.git'
}
stage('mvn test'){
withMaven(
maven: 'M3') {
sh "mvn test"
}
}
stage('mvn build'){
//mvn¹¹½¨
withMaven(
maven: 'M3',
mavenLocalRepo: '.repository') {
sh "mvn clean install -Dmaven.test.skip=true"
}
}
stage('deploy'){
//Ö´Ðв¿Êð½Å±¾
echo "deploy ......"
}
} |
ÕâÀïcheck code¼ì³ö´úÂë²Ù×÷£¬jenkinsĬÈϼ¯³Égithub£¬ÕâÀïÎÒÃÇʹÓÃ×Ô¼ºµÄgitlab£¬cloneÏîÄ¿ÐèÒªÓû§ÃûÃÜÂëµÇ¼£¬ÕâÀïÎÒÃÇ¿ÉÒÔʹÓÃjenkinsµÄcredentials´´½¨Ö¤Ê飬Éú³ÉÖ¤ÊéÒÔºó£¬ÔÚclone´úÂëʱ£¬Ö¸¶¨git
credentialsId£¬¼´¿ÉÍê³ÉÈÏÖ¤¹¤×÷¡£ Èô²»ÖªµÀÉú³ÉµÄÖ¤ÊéidÊǶàÉÙ£¬ÕâÀïÓиöºÃ°ì·¨£¬È¥Ã¿¸öÏîÄ¿µÄpipeline-syntax£¬Ä¬ÈϽøÈëµ½Snippet
Generator(´úÂë¶ÎÉú³ÉÆ÷)£¬ÎÒÃÇÑ¡Ôñgit: Git£¬È»ºóÊäÈëRepository URL¡¢Branch¡¢Ñ¡ÔñCredentials£¬µã»÷Generate
Pipeline Script£¬ÔÚÏ·½ÊäÈë¿òÀïÃæ£¬¾Í¿ÉÒÔÉú³É¶ÔÓ¦µÄÁ÷³ÌµÄ½Å±¾Óï¾ä£¬ÊDz»ÊǺܷ½±ã¡£

|