±à¼ÍƼö: |
±¾ÎÄÀ´×Ô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.¹¹½¨³É¹¦µÄЧ¹û

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