docker+gitlab+jenkins+harbor实现CI/CD

首先确保如下工具已经安装完成:

① docker-ce

② gitlab

③ jenkins

④ harbor

这样,就可以开始了!


首先,需要有一个java的项目,本次采用solo,从github上很容易就下载下来,本次采用solo 2.7版本!将该项目添加到gitlab中去,如下:



然后是配置jenkins:

在jenkins中,创建一个自由风格的项目,起名为:blog-solo。配置如下:


配置gitlab中项目的连接信息:


maven构建:



通过Dockerfile构建image,并推送至harbor中:


此步骤需要注意,由于solo是java项目,需要搭载到tomcat中运行,所以需要先创建一个tomcat的镜像(tomcat:v1),在此基础上,将maven构建出的solo.war包COPY到容器中,最终启动容器。通过Dockerfile构建出的image,需要push到远端的harbor中,所以这里还需要先连接harbor,然后build image,最后push到harbor。


补充一下tomcat:v1的构建过程,Dockerfile-tomcat:


FROM centos:7

MAINTAINER zhaojian


ENV VERSION=8.0.53


RUN yum installjava-1.8.0-openjdk wget curl unzip iproute net-tools -y && \

    yum clean all && \

    rm -rf /var/cache/yum/*


RUN wgethttp://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz&& \

    tar zxf apache-tomcat-${VERSION}.tar.gz&& \

    mv apache-tomcat-${VERSION} /usr/local/tomcat&& \

    rm -rf apache-tomcat-${VERSION}.tar.gz/usr/local/tomcat/webapps/* && \

    mkdir /usr/local/tomcat/webapps/test&& \

    echo "ok" >/usr/local/tomcat/webapps/test/status.html && \

    sed -i '1aJAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"'/usr/local/tomcat/bin/catalina.sh && \

    ln -sf /usr/share/zoneinfo/Asia/Shanghai/etc/localtime


ENV PATH$PATH:/usr/local/tomcat/bin


WORKDIR /usr/local/tomcat


EXPOSE 8080

CMD["catalina.sh", "run"]



通过以上Dockerfile就可以构建出tomcat的image,是基于centos:7镜像的,所以一个tomcat镜像,包含centos:7镜像中的内容,所以可以在tomcat镜像中使用centos:7的命令;而solo项目,又是基于tomcat:v1,所以solo项目也包含centos:7镜像中的内容!


记住一句:基于基础镜像,构建项目镜像

即将solo.war包从宿主机COPY到tomcat容器中,而tomcat镜像又是通过基础镜像centos:7构建出来的!

 

因为是通过jenkins做的CI,所以还需要jenkins制作镜像,最后再通过jenkins实现CD,整个过程都是通过jenkins来完成的,所以编写Dockerfile和build image就都需要jenkins来做,因此,上面就需要在shell中实现所有功能,而非在宿主机上单独执行。


在远程服务器上执行docker run,生成容器:



正常情况下,jenkins是没有“Execute shell script on remote host using ssh”的,需要添加插件:


然后在jenkins的“系统管理”--“系统设置”中,配置如下内容,完成ssh:

这样,就可以在具体项目的配置中,找到“Execute shell script on remote host using ssh”了。

选定ssh服务器后,填写command,完成docker容器构建即可!



通过以上配置,就完成了docker+gitlab+jenkins+harbor实现CI/CD过程!

还需要补充一下,就是关于webhook实现gitlab+jenkins 的联动,即gitlab中修改了内容后,jenkins可以实现自动构建,无需手动执行:

在gitlab具体项目中,找到:


该信息是由jenkins中生成的:


gitlab添加webhook可能会报错:

原因:

大致意思 gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录,登录之后,点击Configure Gitlab,进行如下修改。

解决办法:

在Admin area中,在settings标签下面,找到OutBound Request,勾选上Allow

requests to the local network from hooks and services ,保存更改即可解决问题


成功配置后,就可以切换回普通的gitlab账号,到具体的项目中,重新配置一遍webhook就可以了!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容