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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚJenkins£¬dockerʵÏÖ×Ô¶¯»¯²¿Ê𣨳ÖÐø½»»¥£©
 
  1974  次浏览      29
 2018-12-14
 

±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬±¾ÎÄÖ÷ÒªÌṩÁ˼òµ¥µÄÒ»ÖÖ·½Ê½,½éÉÜÏ»ùÓÚJenkins+docker ʵÏÖ×Ô¶¯»¯²¿Êð,Ï£Íû¶Ô´ó¼ÒµÄѧϰÓÐËù°ïÖú¡£

ǰÑÔ

Ëæ×ÅÒµÎñµÄÔö³¤£¬ÐèÇóÒ²¿ªÊ¼Ôö¶à£¬Ã¿¸öÐèÇóµÄ´óС£¬¿ª·¢ÖÜÆÚ£¬·¢²¼Ê±¼ä¶¼²»Ò»Ö¡£»ùÓÚ΢·þÎñµÄϵͳ¼Ü¹¹£¬¹¦Äܵĵþ¼Ó£¬¶ÔÓ¦µÄ·þÎñµÄÊýÁ¿Ò²ÔÚÔö¼Ó£¬´óС¹¦ÄܵĿìËÙµü´ú£¬¸ü¼ÓÒªÇó²¿ÊðµÄ¿ìËÙ»¯£¬ÖÇÄÜ»¯¡£Òò´Ë£¬´«Í³µÄÈ˹¤²¿ÊðÒѾ­ÐÄÓÐÓà¶øÁ¦²»×ã¡£

³ÖÐø¼¯³É£¬³ÖÐø²¿Ê𣬳ÖÐø½»»¥¶ÔÓÚ΢·þÎñ¿ª·¢À´Ëµ£¬ÊÇÌá¸ßÍŶÓÕûÌåЧÂʲ»¿É»òȱµÄÒ»»·¡£ºÏÀíµÄʹÓÃCI,CDÄܹ»¼«´óµÄÌá¸ßÁËÉú²úЧÂÊ£¬Ò²Ìá¸ßÁ˲úÆ·µÄ½»»¥ÖÊÁ¿¡£

Jenkins + Docker

ÏÂͼÊǹ¹ÏëµÄÍøÂç½á¹¹Í¼

´óÌå½á¹¹

1.¿ª·¢ÈËÔ±ÔÚgitLabÉÏ´òÁËÒ»¸ötag

2.gitLab°ÑtagʼþÍÆË͵½Jenkins

3.Jenkins »ñÈ¡tagÔ´Â룬±àÒ룬´ò°ü£¬¹¹½¨¾µÏñ

4.Jenkins push ¾µÏñµ½°¢ÀïÔÆ²Ö¿â

5.Jenkins Ö´ÐÐÔ¶³Ì½Å±¾

5-1. Ô¶³Ì·þÎñÆ÷ pull Ö¸¶¨¾µÏñ

5-2. Í£Ö¹Àϰ汾ÈÝÆ÷£¬Æô¶¯Ð°汾ÈÝÆ÷

6.֪ͨ²âÊÔÈËÔ±²¿Êð½á¹û

»ùÓÚmaven¹¹½¨¾µÏñ£¬ÉÏ´«°¢ÀïÔÆdocker²Ö¿â

maven ¹¹½¨¾µÏñÅäÖÃ

pom.xml ÎļþÌí¼Ódocker²å¼þ

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

1.${docker.image.prefix} ÊǾµÏñµÄǰ׺

2.${project.artifactId} ÊǾµÏñÃû×Ö

3.${project.version} °æ±¾ºÅ£¬´Ë´¦Ò²ÓÃÀ´µ±×ö¾µÏñµÄ°æ±¾ºÅ

docker-maven-plugin ʹÓÿÉÒÔ×ÔÐаٶȡ£

src/main/docker Ŀ¼ÏÂÐÂÔöÎļþ Dockerfile£¬ÄÚÈÝÈçÏ£º

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD demo-service-ver-0.0.1.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

ÒÔÉϵÄÅäÖÿÉÒÔ°ÑÒ»¸ö·þÎñ´ò°ü³É¾µÏñ£¬Ö»ÐèÒªÖ´ÐÐ

$ sudo mvn package docker:build

°¢ÀïÔÆdocker²Ö¿âʹÓÃ

×¢²á»òÕ߯ôÓð¢ÀïÔÆdocker²Ö¿â¾Í²»×¸Êö¡£ÏÂÃæ¼òµ¥½éÉÜÉÏ´«À­È¡docker¾µÏñ

怬

$ sudo docker login --username=Óû§Ãû --password=ÃÜÂë registry-internal.cn-hangzhou.aliyuncs.com

push ֮ǰÉú³ÉµÄ¾µÏñ

$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xxx/demo-service:[¾µÏñ°æ±¾ºÅ]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/xxx/demo-service:[¾µÏñ°æ±¾ºÅ]

xxx : ÊÇÄã¾µÏñ²Ö¿âµÄnamespace

Ò»¶Ñpushºó£¬Äã¾Í¿ÉÒÔÔÚ°¢ÀïÔÆµÄDocker¾µÏñ²Ö¿âÀïÃæ¿´µ½Äã¶ÔÓ¦µÄ¾µÏñÁË¡£ÏÂͼÊÇÎÒÃǹ«Ë¾µÄ²¿·Ö¾µÏñÁбí

¾µÏñÁбí

pull ¾µÏñ

µÇ¼²Ù×÷ͬÉÏ

$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/xxx/demo-service:[¾µÏñ°æ±¾ºÅ]

jenkins ²¿ÊðÅäÖÃ

¹¹½¨Jenkins¾µÏñ

FROM jenkins
USER root
RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
USER jenkins

Ò»¿ªÊ¼Ê¹Óùٷ½µÄ¾µÏñÖ±½ÓÆôÓã¬Ò»Ð©²å¼þºÍÅäÖöàÉÙ¶¼ÓеãÎÊÌ⣬±ÈÈç²»ÄÜʹÓÃsudo£¬µÈµÈ¡£Òò´Ë»ùÓÚ¹Ù·½¾µÏñ¹¹½¨Ò»¸ö¸ü·ûºÏÎÒÃÇÐèÒªµÄ¾µÏñ¡£

¹¹½¨ÃüÁ

$ sudo docker build -t buxiaoxia/jenkins:1.0

Æô¶¯JenkinsÈÝÆ÷

sudo docker run --memory 1.5G --name buxiaoxia-jenkins \
-p 18181:8080 -p 50000:50000 -u root -d \
--env JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxNewSize=256m" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /home/buxiaoxia/software/jenkins:/var/jenkins_home \
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 \
buxiaoxia/jenkins:1.0

¼òµ¥½âÊÍÏ£º

-v/var/run/docke r.sock:/var/run/docker.sock Óë -v / usr/bin/docker:/usr/bin/docker ÊǰÑËÞÖ÷»údocker Ó³Éäµ½ÈÝÆ÷ÄÚ¡£
-v/home/buxiaoxia/software/jenkins:/var/jenkins _ home Ö¸¶¨JenkinsµÄËÞÖ÷»ú´æ´¢Â·¾¶
-v/usr/lib64/libltdl.so.7 :/usr/lib/x86_64 - linux - gnu/libltdl.so .

7 ÔÚcentos7 ϵͳÏ»á³öÏÖ¸ö±ðµÄ°ü¶ªÊ§£¬¶ÔÓ¦µÄÒýÏÂËÞÖ÷»úµÄ°ü¾Í¿ÉÒÔ¡£

dockerÔÚÈÝÆ÷ÄÚ¹¹½¨µÄʱºò£¬Èç¹û³öÏÖȨÏÞ²»¹»Ê²Ã´µÄ¡£¿ÉÒÔÔÚËÞÖ÷»úÖÐʹÓÃÒÔÏÂÁ½ÖÖ·½Ê½£º

$ sudo chmod 777 /var/run/docker.sock

»òÕß

$ usermod -a -G docker jenkin

jenkins Æô¶¯ºó£¬·ÃÎʶÔÓ¦µÄJenkinsÒ³Ãæ£¬³õʼ»¯Ö»ÒªÒ»²½²½¸ú×Å×߾ͿÉÒÔÁË¡£

JenkinsÅäÖÃ

²å¼þÏÂÔØ

ËùÐèÒªµÄ²å¼þ£º

1.Maven Integration plugin

2.docker-build-step

3.Docker plugin

4.Gitlab Hook Plugin

5.GitLab Plugin

ÒòΪʹÓõÄÊÇgitlab£¬¶ÔÓ¦µÄ²å¼þÒ²ÊDZØÐëµÄ¡£ÏÂÔØÍê²å¼þºó£¬mavenµÈÏà¹Ø²å¼þÅäÖú㨴˴¦Ê¡ÂÔ...£©

maven ¾µÏñµØÖ·ÅäÖÃ

¿ÉÒÔÖ±½ÓÔÚËÞÖ÷»úÐ޸ģ¬Â·¾¶ÔÚ:/home/buxiaoxia / software / jenkins / tools / hudson .tasks .Maven_MavenInstallation / maven3-1 / conf Ï嵀 settings . xml

setting.xml ¾µÏñ¸Ä³É°¢ÀïÔÆµÄ¾ÍOK£¬·ÉÆð¡£¡£¡£

н¨Ò»¸ömaven job

Ô´ÂëÅäÖÃ

¹¹½¨

¹¹½¨ºóÖ´ÐÐÌØ¶¨½Å±¾

½Å±¾ÄÚÈÝÈçÏ£º

echo '================¿ªÊ¼ÍÆË;µÏñ================'
sudo docker login --username=Óû§Ãû --password=ÃÜÂë registry-internal.cn-hangzhou.aliyuncs.com
sudo docker push registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service
echo '================½áÊøÍÆË;µÏñ================'
echo '================¿ªÊ¼Ô¶³ÌÆô¶¯================'
ssh buxiaoxia@192.168.100.2 -tt << remotessh ###Ê×ÏÈÒªsshÉÏÈ¥×¢ÒâÕâÀïµÄ<< remotessh£¬ÐèÒª×ö¹«Ô¿ÃÜÔ¿

####´ÓÕâÀ↑ʼ¶¼ÊÇÔÚÔ¶³Ì»úÆ÷ÉÏÖ´ÐÐÃüÁî
cd /home/buxiaoxia/xiaw
./jenkins.sh registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service
sudo docker login --username=Óû§Ãû --password=ÃÜÂë registry-internal.cn-hangzhou.aliyuncs.com
sudo docker pull registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service

sudo docker run -d -m 300m --name=demo-service-`date +%Y-%m-%d` --restart=always registry-internal.cn-hangzhou.aliyuncs.com/xxx/demo-service
echo "finished!"

#####Ö´ÐÐÍê±Ï

exit ###Í˳öÔ¶³Ì»úÆ÷
remotessh ###½áβŶ
echo '================½áÊøÔ¶³ÌÆô¶¯================'

jenkins.sh ½Å±¾ÄÚÈÝ£º

#!/bin/sh
sudo docker stop $(sudo docker ps | grep $1|awk '{print $1}'|sed 's/%//g')

ÒÔÉϾÍÍê³ÉÁËÒ»¸ö¼òµ¥µÄ×Ô¶¯»¯¹¹½¨

gitlabÅäÖÃwebhook

Jenkins°²×°Íê¶ÔÓ¦µÄgitlab²å¼þ£¬ÅäÖÃÖеĹ¹½¨´¥·¢Ñ¡ÔñÈçÏÂ

¸´Öƺì¿òÖеÄurl

ÔÙÔÚgitlabµÄ¶ÔÓ¦ÏîÄ¿ÖÐwebhooksÒ³ÃæÖеÄurlÌîÈëÇ°Ãæ¸´ÖƵÄurl

±£´æ¼´¿É£¬ÓÒϽǿÉÒÔµã»÷²âÊÔŶ¡£

ÅäÖÃÍê³Éºó£¬Ã¿´Î¸ÃÏîÄ¿Óиötag push event £¬¶¼»á´¥·¢JenkinsµÄ×Ô¶¯¹¹½¨¡£½Ó×Å£¬Jenkins¾ÍÖ´ÐÐ À­È¡Ô´Âë -> ±àÒë -> ¹¹½¨¾µÏñ -> ÍÆË;µÏñ -> Ö´ÐÐÔ¶³ÌÆô¶¯½Å±¾Íê³É²¿Êð¡£

×ܽá

Ò»²½²½µÄÅäÖ㬻ù±¾¾ÍÅÜͨÁËÎÒÃÇ»ùÓÚJenkins£¬dockerʵÏÖ×Ô¶¯»¯²¿ÊðµÄ³õʼ°æ±¾¡£¿ª·¢ÈËÔ±Íê³É¹¦ÄÜ¿ª·¢ºó£¬ÐèÒª½»»¥Ò»¸ö²âÊÔ°æ±¾£¬Ö»ÐèÒªÍÆËÍÒ»¸ötagµ½git²Ö¿â£¬¾ÍÄܹ»½«´úÂë×Ô¶¯²¿Êðµ½Ìض¨µÄ·þÎñÆ÷ÉÏ¡£¿Éϲ¿ÉºØ~ ¿ÉÒÔʡȥһ¶ÑµÄ´ÓÒ»¸ö·þÎñÆ÷Åܵ½ÁíÒ»¸ö·þÎñÆ÷£¬È»ºóÖ´Ðи÷ÖÖÃüÁîµÄËöËé²Ù×÷¡£¡£¡£

¹ØÓÚÅäÖÃ

ĿǰÎÒÊÇʹÓÃÁËconsulµÄÅäÖù²Ïí£¬°Ñ²»Í¬»·¾³µÄÅäÖ÷ÅÔÚÁËconsulÉÏ£¬¾µÏñÖÐûÓб£Áô¿É±äµÄÅäÖ㬶øÊǸù¾ÝÆô¶¯µÄ²ÎÊý¾Í¿ÉÒÔ×ÔÓÉÇл»»·¾³ÅäÖá£

µ±È»£¬consulµÄÅäÖù²Ïí¿ÉÒÔ¿´¿´ÎÒgitÉϹØÓÚconsulµÄÏîÄ¿£ºhttp://git.oschina.net/buxiaoxia/spring-demo

´æÔÚÎÊÌâ

1.dockerδʹÓñàÅÅ£¬½ÏΪ¶ÀÁ¢£¬ÐèÒªÖªµÀÌØ¶¨µÄ·þÎñÆ÷ÍøÂçλÖÃ

2.docker¾µÏñµÄpushÓëpull£¬¶¼ÐèÒªÃ÷ÎÄÖ´Ðа¢ÀïÔÆÕ˺ÅÃÜÂ룬¿É½øÒ»²½¸Ä½ø

3.δ¹¹½¨°æ±¾»ØÍËÁ÷³Ì

4.shell½Å±¾½¡×³ÐÔ²»¹»£¬Ò쳣δ´¦Àí

ÓÅ»¯

¿ÉÒÔÕë¶ÔÒÔÉÏÎÊÌâ×öÏàÓ¦µÄÓÅ»¯£¬ÍêÉÆ³õʼ»¯°æ±¾µÄCDÁ÷³Ì¡£ÀýÈ磬docker ʹÓÃswarm£¬ÈÃswarm¹ÜÀídocker ÈÝÆ÷µÈµÈ¡£

   
1974 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤