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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ʹÓÃJenkins¶Ô½ÓGithub½øÐÐ×Ô¶¯»¯CI
 
  3826  次浏览      27
 2019-1-8  
 
±à¼­ÍƼö:

±¾ÎÄÀ´×Ôyq.aliyun.com£¬JenkinsÊÇÒ»¸ö¿ªÔ´Èí¼þÏîÄ¿£¬ÊÇ»ùÓÚJava¿ª·¢µÄÒ»ÖÖ³ÖÐø¼¯³É¹¤¾ß£¬ÓÃÓÚ¼à¿Ø³ÖÐøÖØ¸´µÄ¹¤×÷£¬Ö¼ÔÚÌṩһ¸ö¿ª·ÅÒ×ÓõÄÈí¼þƽ̨£¬Ê¹Èí¼þµÄ³ÖÐø¼¯³É±ä³É¿ÉÄÜ¡£

Jenkins

JenkinsÔÚ Docker hub ÉÏÓйٷ½¾µÏñºÍÉçÇø¾µÏñ, ¸ù¾Ý¹Ù·½ÃèÊö£¬JenkinsµÄ¾µÏñÒѾ­ÓÉÉçÇø½Ó¹Üά»¤£¬¾µÏñΪjenkinsci/jenkins,ËùÒÔÕâ´ÎµÄ¼¯³É¾ÍÓÃÕâ¸öÉçÇø°æµÄJenkins¡£

Docker ÐÅÏ¢

~ docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:20:16 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:23:58 2018
OS/Arch: linux/amd64
Experimental: false

ÅäÖÃJenkinsµÄcompose.ymlÎļþ

ÒòΪÎÒµÄdockerÒѾ­½øÐÐÁËswarm¼¯Èº´¦Àí,ËùÒÔ¿ÉÒÔÓÃdocker composeдÅäÖã¬È»ºóÒ»¼üÔËÐС£

docker-compose.yml

version: '3'

services:
jenkinsContainer:
image: jenkins/jenkins:lts
ports:
- 8080:8080
- 3000:5000
volumes:
- "./jenkins_home:/var/jenkins_home"
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
update_config:
parallelism: 1
delay: 10s
placement:
constraints:
- node.role == manager

˵Ã÷

image: jenkins/jenkins:lts, ʹÓÃ×îеÄÉçÇø°æ±¾µÄjenkins£»

ports£º 8080:8080ÊÇä¯ÀÀÆ÷¶Ë¿ØÖÆjenkins¶ÔÓ¦µÄ¶Ë¿Ú£¬Ê¹ÓÃʱ£¬ÓÃip:port¼´¿É£¬3000:5000ÊÇÄãҪͨ¹ýJNLP½øÐдӽڵ㹹½¨µÄʱºòÓõģ¬ÔÚ±¾´ÎÅäÖÃÖв¢Ã»ÓÐÓõ½£»

volumes: "./jenkins_home:/var/jenkins_home",½«jenkinsµÄÅäÖôæ·ÅÔÚ±¾µØ£¬·ÀÖ¹ÖØÆôºóÖØÐ³õʼ»¯jenkins,¸ÃÎļþ¿ÉÒÔ×Ô¼º´´½¨£¬Ò²¿ÉÓÉDockerÔÚÔËÐÐʱ´´½¨¡£

deploy: ÕâÊǺÍswarm¼¯Èº²¿ÊðÏà¹ØµÄ£¬¾Í²»Ï¸Ï¸½²ÁË¡£

ÒòΪ²¿ÊðÐèÒªÖ´ÐÐÈçÏÂÒ»ÐдúÂë

docker stack deploy --compose-file= docker-compose.yml jenkins

·Àֹÿ´ÎÖØÆô¶¼Òª¼üÈë£¬ÌØµØµÄ£¬ÎÒÃÇ´´½¨Ò»¸ödeploy½Å±¾£¬¼ÓÈë¿ÉÖ´ÐÐȨÏÞ£¬Ã¿´ÎÖ´ÐÐÕâ¸ö½Å±¾¼´¿É

echo "docker stack deploy --compose-file =docker-compose.yml jenkins" > deploy
chmod +x ./deploy

Ö´ÐкóµÄĿ¼ÈçÏÂ

Jenkins tree -L 1
.
©À©¤©¤ deploy
©À©¤©¤ docker-compose.yml
©¸©¤©¤ jenkins_home

1 directory, 2 files

²¿Êð

Ö´ÐÐÈçÏÂÃüÁî¼´¿É

./deploy
Creating network jenkins_default
Creating service jenkins_jenkinsContainer

°²×°Jenkins

ä¯ÀÀÆ÷¶Ë´ò¿ªip:8080,ÔÚÕâÎҵĵØÖ·Îª47.95.247.xxx:8080£¬¶Ë¿ÚºóÃæÇмDz»Òª¼Ó/jenkins, ÕâÊÇJenkinsµÄbug,²»È»ÄãµÄÒ³ÃæÔڵǼºó¾Í»á³ö´í¡£

µÇ¼ÃÜÂë»ñÈ¡

½øÈëÔËÐеÄÈÝÆ÷ÖÐ,´òÓ¡

docker container ls
CONTAINER ID    IMAGE     COMMAND    CREATED S    TATUS    PORTS    NAMES
c12c47c804ba    jenkins/jenkins:lts "    /sbin/tini -- /usr/¡­"    3 minutes ago    Up 3 minutes     8080/tcp, 50000/tcp    jenkins_jenkinsContainer.1.ntkjvt6u4kxjyvprc0rdrif05
docker exec -it c12c47c804ba /bin/bash
cat /var/lib/jenkins/secrets/initialAdminPassword

XXXXXXXXXXXXXXXXXXXXXX # Õâ¾ÍÊÇÃÜÂë

docker logs£¬Ê¹ÓÃdocker logs ²é¿´°²×°ÈÕÖ¾£¬ÃÜÂëÒ²ÊÇÔÚ°²×°ÈÕÖ¾ÖеÄ

docker container ls
CONTAINER ID    IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES
c12c47c804ba     jenkins/jenkins:lts "/sbin/tini -- /usr/¡­"     3 minutes ago     Up 3 minutes 8080/tcp, 50000/tcp    jenkins_jenkinsContainer.1.ntkjvt6u4kxjyvprc0rdrif05
docker logs -f c12c47c804ba
XXXXXXXXXXXXXXXXXXXXXX # Õâ¾ÍÊÇÃÜÂë

 

ÊäÈëÃÜÂëºó£¬Ñ¡ÔñÍÆ¼öµÄ°²×°£¬°²×°Ê±¼ä±È½Ï³¤£¬¿ÉÒÔºÈÒ»±­²è»òÕß¿§·ÈÈ¥¡£

°²×°ºÃ×Ô¶¯½øÈëÖ÷Ò³¡£

ÅäÖÃJenkins ʹ֮ºÍGitHub½øÐн»»¥µÄ»ù´¡»·¾³

È«¾Ö¹¤¾ßÅäÖÃ

git£ºÖ÷ÒªÌṩgit²Ù×÷£¬ÈçÀ­È¥´úÂë¡£

node£º ΪÎÒÃǵÄǰ¶ËÏîÄ¿´ò°üÌṩ»ù´¡ÔËÐл·¾³¡£

ÀïÃæµÄÄÚÈݶ¼¿ÉÒÔÑ¡ÔñÅäÖã¬ÎÒÃÇÑ¡Ôñnodejs 11Õâ¸ö°æ±¾¡£ÅäÖÃÍê±ÏÑ¡ÔñÓ¦Óü´¿É¡£

ϵͳÉèÖÃ

ϵͳÉèÖÃÖ÷ÒªÉèÖÃjenkinsµÄµØÖ·ºÍϵͳ¹ÜÀíÔ±µÄÓÊÏ䵨ַ£¬»¹ÓÐÓëgithubÖ®¼äµÄͨÐÅ£¬ÒªÈÃgithub½ÓÊܵ½pushµÈÃüÁî´¥·¢CI/CD£¬¾ÍÉæ¼°µ½Õâ¿é¡£

Jenkins Location

GitHub

1.Ìí¼ÓGitHub Server ²¢ÌîдÃû³Æ

 

2.ÔÚhttps://github.com/settings/tokens/newÉÏÉú³Étoken,ÐèÒªµÄȨÏÞ¾ÍÈý¸ö£¬¶øÇÒrepo:statusÔÚrepoÖУ¬ËùÒÔ¿ÉÒÔ²»Ñ¡,ÏÂͼÊÇËùÐèÒªÇó£¬

3.ÔÚGitHubÉÏÉú³ÉTokenÖ®ºó£¬copy¸ÃToken, ÔÚJenkins ƾ¾ÝÌṩÕß: JenkinsÒ³ÃæÖеÄÀàÐÍÖÐÑ¡ÔñSecret text, SecretÖÐÕ³ÌùGitHubÉú³ÉµÄToken£¬idºÍÃèÊö¿ÉÒÔËæ±ãÌîд¡£

4.µã»÷Ìí¼Óºó£¬»Øµ½Ö÷Ò³Ãæ£¬ÔÚÆ¾¾ÝÖÐÑ¡Ôñ¸Õ²Å´´½¨µÄƾ¾Ý£¬µã»÷Á¬½Ó²âÊÔ£¬Èô²»³É¹¦£¬·µ»ØÖØÐ²Ù×÷ÒÔÉϲ½Ö裬µã»÷ÏÂÃæµÄÓ¦Óûò±£´æÍê³ÉÅäÖá£

ÖÁ´Ë£¬»ù´¡ÅäÖÃÍê³É¡£

Ìí¼Ó²âÊÔÏîÄ¿

1.ÔÚÊ×Ò³Ìí¼ÓÐÂÈÎÎñ£¬Ñ¡Ôñ×ÔÓÉ·ç¸ñµÄÏîÄ¿

2.Ñ¡ÔñGitHub£¬¼üÈëÒª¹¹½¨ÏîÄ¿µØÖ·µÄÖ÷Ò³µØÖ·£¬×¢Òâ²»ÊÇgit×ÊÔ´µØÖ·

3.Ô´Âë¹ÜÀíÅäÖÃ

4.¹¹½¨´¥·¢Æ÷

5.¹¹½¨»·¾³

6.¹¹½¨£¬Ñ¡ÔñÖ´ÐÐshell,¼üÈëÈçͼÖеÄshell

µã»÷Ó¦Ó㬱£´æ£¬ÖÁ´Ë£¬Íê³ÉGitHubÏîÄ¿ÔÚJenkinsµÄÉèÖá£

ÅäÖÃwebhook

Ö»ÓÐJenkinsºÍGitHubÅäÖÃÁËÏàͬµÄwebhook£¬²ÅÄÜͨÐÅ£¬²ÅÄÜ´ïµ½¿ª·¢ÕßÏòGitHub push´úÂëµÄʱºòJenkins ²ÅÄÜÊÕµ½ton֪ͨ½øÐкóÃæµÄCI/CD¡£

1.½øÈëϵͳ¹ÜÀí/ϵͳÅäÖ㬶¨Î»µ½GitHubÅäÖÃÏµã»÷µ×²¿µÄ¸ß¼¶°´Å¥£¬¼üÈëЭÒé://JenkinsµØÖ·(IP:Port)/×Ô¶¨ÒåÃû³Æ¡£

2.ÔÚGitHubÉÏ´ò¿ªÄãÏîÄ¿µÄsettingÒ³Ãæ£¬½øÈëwebHooksÒ³Ãæ£¬µã»÷ÓÒÉÏ½ÇµÄ Add webhook,½øÈëÒ³ÃæÖ´ÐÐÈçÏÂ

ÔËÐÐ

ÔÚ±¾µØ»òÕßgithubÉÏÐÞ¸ÄÎļþ£¬¶ÔÆä½øÐÐpush, Jenkins»áÊÕµ½Í¨Öª£¬È»ºóÔËÐгÌÐò½øÐдò°ü¡£

1.´ò¿ª¸Õ²Å´´½¨µÄÈÎÎñ£¬½øÈëÏêÇ飬¿ÉÒÔ¿´µ½ÊÕµ½µÄGitHub pushµÄÏûÏ¢¡£

2.Jenkins¿ªÊ¼¹¹½¨

3.¹¹½¨³É¹¦µÄЧ¹û

×ܽá

Óöµ½ÎÊÌ⻹ÊÇÒªÂýÂý½â¾öµÎ¡£ÔÚ´Ë×ö¸ö×ܽᡣ

   
3826 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÿÈÕ¹¹½¨½â¾ö·½°¸
ÈçºÎÖÆ¶¨ÓÐЧµÄÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀíÖ÷Òª»î¶¯¼°ÊµÏÖ·½·¨
¹¹½¨¹ÜÀíÈëÃÅ
Ïà¹ØÎĵµ

ÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀí°×ƤÊé
CM09_CÅäÖùÜÀí±ê×¼
ʹÓÃSVN½øÐа汾¿ØÖÆ
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀíʵ¼ù
ÅäÖùÜÀí·½·¨¡¢¹¤¾ßÓëÓ¦ÓÃ
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
²úÆ··¢²¼¹ÜÀí