范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

从0到1体验JenkinsDockerGitRegistry实现CI自动化发布

  阅读目录: 一、前言 二、发布流程 三、环境准备 四、部署思路梳理 五、三台机器上操作 六、Git机器上操作 七、Docker机器上操作 八、Jenkins机器上操作 九、上传JAVA项目代码到Git仓库 十、Jenkins发布测试 十一、后面总结再废话两句
  正文: 一、前言
  Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
  Jenkins是一个广泛用于持续构建的可视化Web工具,持续构建就是将项目自动化编译、打包、部署。通过规范化来完成,简单,繁琐,浪费时间的重复工作。
  Jenkins名言: 构建伟大,无所不能!
  Jenkins用户手册传送门:https://jenkins.io/zh/doc/ 二、发布流程
  工作详细流程:
  三、环境准备
  服务器角色IP地址主机名运行服务系统版本
  Jenkins/Docker 192.168.115.21 jenkins安装Docker、Tomcat运行Jenkins、Git客户端、JDK、MavenCentOS 7.4
  Git/Registry 192.168.115.22 git 安装Docker、Git服务、Registry私有仓库容器 CentOS 7.4
  Docker 192.168.115.23 docker 安装Docker、拉取Tomcat镜像运行Java项目 CentOS 7.4
  本文有点长,理论较少、属于实践型的,请大概看一下文章的整体,准备用三台虚拟机来跟着一起实践,否则可能会坚持不下去哦,就算坚持看完了也收获不大,主要在于实践。  四、部署思路梳理
  五、三台机器上操作
  i. 配置好yum源安装必要的一些系统工具 [root@jenkins ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
  ii. 添加软件源信息 [root@jenkins ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  iii. 更新并安装 Docker-CE [root@jenkins ~]# yum makecache fast [root@jenkins ~]# yum -y install docker-ce
  iv. 开启Docker服务 [root@jenkins ~]# systemctl start docker [root@jenkins ~]# systemctl enable docker
  v. 检查docker版本
  注:以上步骤三台服务器都需要同样的操作。 六、Git机器上操作6.1、部署Git仓库,Git机器上操作
  i. 安装Git [root@git ~]# yum install git -y
  ii. 创建Git用户和设置密码 [root@git ~]# useradd git [root@git ~]# passwd git Changing password for user git. New password: ******* BAD PASSWORD: The password is shorter than 8 characters Retype new password: ******* passwd: all authentication tokens updated successfully.
  iii. 创建仓库 [root@git ~]# su - git [git@git ~]$ mkdir test-jenkins.git [git@git ~]$ cd test-jenkins.git/ [git@git test-jenkins.git]$ git --bare init Initialized empty Git repository in /home/git/test-jenkins.git/6.2、访问Git仓库测试,Jenkins机器上操作
  i. 安装Git客户端 [root@jenkins ~]# yum install git -y
  ii. 生成公钥,拷贝到Git服务器 [root@jenkins ~]# ssh-keygen -t rsa   // 三个回车 [root@jenkins ~]# ssh-copy-id git@192.168.115.22   // 注意是git用户
  iii. 拉取Git项目测试 [root@jenkins ~]# git clone git@192.168.115.22:/home/git/test-jenkins.git Cloning into "test-jenkins"... warning: You appear to have cloned an empty repository.6.3、部署Docker私有仓库,Git机器上操作
  i. 创建Registry容器 [root@git ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name rregistry registry
  ii. 检查Registry容器状态,已经成功启动了
  七、Docker机器上操作
  i. 配置私有仓库 [root@docker ~]# cat  /etc/docker/daemon.json  {"registry-mirrors": ["http://abcd1234.m.daocloud.io"],  "insecure-registries": [ "192.168.115.22:5000"]}
  注:第2行是192.168.115.22 Docker私有仓库地址。
  ii. 重启Docker服务 [root@docker ~]# systemctl restart docker
  iii. 配置JDK
  JDK1.8下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html [root@docker ~]# tar zxvf jdk-8u221-linux-x64.tar.gz [root@docker ~]# mv jdk1.8.0_221/ /usr/local/jdk
  iv. 构建Tomcat基础镜像 [root@docker ~]# cat Dockerfile # 基础镜像 FROM centos:7 # 维护者信息 MAINTAINER test-Jenkins         # Tomcat版本 ENV VERSION=8.5.45     # jdk目录     ENV JAVA_HOME /usr/local/jdk     # 安装wget命令 RUN yum install wget -y          # 下载Tomcat RUN wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz &&       # 解压tomcat tar zxf apache-tomcat-${VERSION}.tar.gz &&                      # 移动解压出来的tomcat文件 mv apache-tomcat-${VERSION} /usr/local/tomcat-jenkins &&          # 删除不需要的文件,减轻容器体积 rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat-jenkins/webapps/* &&          # 创建ROOT,tomcat默认目录 mkdir /usr/local/tomcat-jenkins/webapps/ROOT              # 映射端口 EXPOSE 8080         # 启动tomcat     CMD ["/usr/local/tomcat-jenkins/bin/catalina.sh", "run"]
  v. 构建镜像上传Registry仓库 [root@docker ~]# docker build -t 192.168.115.22:5000/tomcat-jenkins -f Dockerfile .
  vi. 推送到镜像仓库 [root@docker ~]# docker push 192.168.115.22:5000/tomcat-jenkins
  vii. 验证是否上传Registry镜像仓库 [root@docker ~]# curl -XGET http://192.168.115.22:5000/v2/_catalog {"repositories":["tomcat-jenkins"]}八、Jenkins机器上操作8.1、配置私有仓库、Git、JDK、Maven
  i. 配置私有仓库 [root@docker ~]# cat  /etc/docker/daemon.json  {"registry-mirrors": ["http://abcd1234.m.daocloud.io"],  "insecure-registries": [ "192.168.115.22:5000"]}   重启Docker服务: [root@docker ~]# systemctl restart docker
  注:第2行是192.168.115.22 Docker私有仓库地址。
  ii. 安装JDK
  JDK1.8下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html [root@jenkins ~]# tar zxvf jdk-8u221-linux-x64.tar.gz [root@jenkins ~]# mv jdk1.8.0_221/ /usr/local/jdk
  iii. 配置JDK [root@jenkins ~]# vim /etc/profile --------------------添加环境变量--------------------- JAVA_HOME=/usr/local/jdk PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH
  iv. 更新系统环境变量 [root@jenkins ~]# source /etc/profile
  v. 验证 [root@jenkins ~]# java -version
  vi. 安装Maven
  Maven下载连接:http://maven.apache.org/download.cgi [root@jenkins ~]# tar zxvf apache-maven-3.6.1-bin.tar.gz [root@jenkins ~]# mv apache-maven-3.6.1 /usr/local/maven8.2、安装Jenkins和Tomcat
  Jenkins下载链接:https://jenkins.io/zh/download/
  Tomcat下载链接:http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.45/bin/apache-tomcat-8.5.45.tar.gz
  i. 解压和拷贝Jenkins.war到Tomcat目录下 [root@jenkins ~]# tar zxvf apache-tomcat-8.5.45.tar.gz [root@jenkins ~]# mv apache-tomcat-8.5.45  /usr/local/tomcat-jenkins [root@jenkins ~]# rm -rf /usr/local/tomcat-jenkins/webapps/* [root@jenkins ~]# unzip jenkins.war -d /usr/local/tomcat-jenkins/webapps
  ii. 启动Tomcat [root@jenkins ~]# /usr/local/tomcat-jenkins/bin/startup.sh8.3、配置Jenkins
  i. 访问Jenkins(http://IP:8080)
  ii. 获取密码 [root@jenkins ~]# cat /var/jenkins_home/secrets/initialAdminPassword e3218946860a4e62b5b4808db0a7f2b6
  iii. 选择插件的安装(不熟悉的情况下推荐安装即可,省得麻烦)
  iv. 创建用户
  v. 配置Maven、jdk、git环境
  注:系统管理 —> 全局工具配置,指定JDK、Maven路径,Git保持默认
  vi. Jenkins安装必要插件
  注:系统管理 —> 管理插件(安装SSH与Git Parameter插件)
  插件说明: SSH:用于SSH远程Docker主机执行Shell命令; Git Parameter:动态获取Git仓库Branch、Tag;
  vii. 配置SSH插件
  viii. 输入Docker主机的用户名/密码
  ix. 添加SSH远程主机
  注:记得点击左下角"保存"按钮。 九、上传JAVA项目代码到Git仓库
  先下载并安装git:https://git-scm.com/download/
  9.1、使用IDEA创建测试项目
  创建新项目:
  选择Spring Initializr: 本地提前配置好JDK环境和Maven环境
  选择war:
  选择Web —> Sping Web Starter:
  随便起个项目名称:
  来个简单的"Hello World":
  代码如下: package com.example.demo;  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  @RestController @SpringBootApplication public class DemoApplication {     public static void main(String[] args) {         SpringApplication.run(DemoApplication.class, args);     }     @RequestMapping     public String hello() {         return "Hello Jenkins v1.0";     } }
  本地运行测试项目:
  本地浏览器访问测试:
  9.2、连接Git仓库上传代码
  i. 在IDEA中设置Git,在File-->Setting->Version Control-->Git-->Path to Git executable选择你的git安装后的git.exe文件,然后点击Test,测试是否设置成功。
  ii. 选择要上传的项目
  iii. 将本项目添加到本地仓库
  注:我们在项目文件名上右键选择 git,通过 add 添加到本地库的跟踪区,再comment 正式提交到本地仓库。
  iv. 添加Git仓库地址
  v. 上传代码
  vi. 在Jenkins机器上下载项目验证是否上传成功 [root@jenkins ~]# git clone git@192.168.115.22:/home/git/test-jenkins.git [root@jenkins ~]# cd test-jenkins/ [root@jenkins test-jenkins]# ls mvnw  mvnw.cmd  pom.xml  src9.3、给项目添加Tag9.3.1、IDEA测试项目连接Git添加Tag
  i. 进入Version Control-->log
  ii. 在之前版本中,右键,新建标签
  iii. Push标签
  注:由于不是在当前最新版本打入的标签,push 时需要选择 push tags (all),不然不能push。
  iv. 在Git仓库上查看Tag验证一下 [root@git ~]# su - git [git@git ~]$ cd test-jenkins.git/ [git@git test-jenkins.git]$ git tag v1.09.3.2、如果是直接上传项目到Git仓库,加Tag方法[root@git ~]# su - git [git@git ~]$ cd test-jenkins.git/ [git@git test-jenkins.git]$ git branch [git@git test-jenkins.git]$ git tag v1.0 [git@git test-jenkins.git]$ git tag v1.0
  额外补充删除Tag: [git@git test-jenkins.git]$ git tag -d v1.0十、Jenkins发布测试10.1、配置Jenkins项目
  安装Maven插件,构建一个Maven项目:
  配置项目(新建任务 -> 输入任务名称,构建一个Maven项目)
  配置Git参数化构建:
  动态获取Git仓库Tag,与用户交互选择Tag发布:
  指定项目Git仓库地址:
  注:修改*/master为$Tag,Tag是上面动态获取的变量名,表示根据用户选择打代码版本。
  设置maven构建命令选项(clean package -Dmaven.test.skip=true):
  Jenkins本机镜像构建和推送到私有镜像仓库:
  代码如下:# 定义变量 REPOSITORY=192.168.115.22:5000/tomcat-jenkins:${Tag}  # 开始构建镜像 cat > Dockerfile << EOF # 拉取私有仓库的镜像 FROM 192.168.115.22:5000/tomcat-jenkins:latest # 删除Tomcat下不需要的ROOT项目 RUN rm -rf /usr/local/tomcat-jenkins/webapps/ROOT # 将jenkins编译好的war包拷贝到Tomcat目录下 COPY target/*.war /usr/local/tomcat-jenkins/webapps/ROOT.war # 运行Tomcat CMD ["/usr/local/tomcat-jenkins/bin/catalina.sh", "run"] EOF  # 清除Jenkins主机旧的构建镜像 docker image rm 192.168.115.22:5000/tomcat-jenkins:${Tag} # 构建自定义镜像 docker build -t $REPOSITORY . # 开始上传镜像 docker push $REPOSITORY
  SSH远程在Docker主机上执行创建容器命令:
  代码如下:# 定义变量 REPOSITORY=192.168.115.22:5000/tomcat-jenkins:${Tag}  # 删除之前容器和镜像 docker rm -f tomcat-jenkins |true docker image rm $REPOSITORY |true  # 开始部署容器 docker container run -d --name tomcat-jenkins -v /usr/local/jdk:/usr/local/jdk -p 80:8080 $REPOSITORY10.2、开始构建
  点击项目名称 —> 选择版本 —> 开始构建
  查看构建过程以及信息输出:
  查看是否构建成功:
  验证项目是否可以访问:
  十一、后面总结再废话两句
  1. 到此就简单体验了Jenkins+Docker+Git+Registry实现一套CI自动化发布流程,文章有点长,但是坚持下来就有收获。
  2. 本来打算Jenkins放在容器上运行的,发现Jenkins容器里面需要Docker命令,但是比较繁琐,也感觉没必要好像,就直接采用方法一了。
  3. 感兴趣的可以通过以下方式实现:
  - 不使用任何Jenkins镜像,宿主机安装Jenkins [宿主机有Docker服务] - 不使用官方Jenkins镜像,自己构造带有Docker服务的Jenkins镜像 - Docker-  in  - Docker [DinD]  - Docker-outside-of- Docker [DooD]   - 使用Jenkins的Docker插件
  如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,
  咱们下期见。

傅亚雨听完发布会觉得阿兰要当逃兵,后来发现不是这么回事直播吧11月17日讯李铁赛后长达32分钟的发布会引起了热议。媒体人前足球周刊杂志总编辑傅亚雨表示仔细品味发布会内容,特别是有关阿兰的,真的是没法接受。听完发布会,觉得阿兰要当逃兵了秋夜盛宴第五人格感恩节活动感恩庆典开启感恩相伴,倾情回馈!网易首款1V4非对称竞技手游第五人格感恩庆典活动已于昨日正式开启,趣味任务诱人奖励丰厚馈赠,伴你欢度感恩节!还有感恩节时装返场同步开启,三位全新角色正式上线,全国足到底输在了哪里?新中国建立七十多年了,整个国家都改天换地,发生了翻天覆地的变化,而我们的国足不能简单说停步不前。凉水洗D,越洗越小,黄鼠狼生老鼠,一窝不如一窝,真令人百思不得其解,令人愤怒。本届国轰247,感谢纳什信任!阿德爆发,哈登关键三分!卢比奥255饮恨在主场吞下一场大败后,布鲁克林篮网队此役稍作休整,背靠背又迎来了残阵的骑士队的挑战。篮网队方面,尽管上一场比赛表现不佳,但米尔斯依旧得到了主教练纳什的信任,此役将继续进入先发,试图独行侠计划1月6日为诺维茨基举行球衣退役仪式据NBA记者MarcStein报道,独行侠计划在2022年1月6日主场对勇士的比赛期间,为传奇巨星德克诺维茨基举行球衣退役仪式。今年43岁的诺维茨基在NBA的21个赛季都效力于独行让运动更有活力,HakiiACTION哈氪觉醒耳机,真实使用体验经常运动的朋友都知道,合适的音乐能让运动事半功倍。特别是跑步时,伴随着音乐的节奏,可以更好的调整配速。累的时候音乐还可以缓解疲劳,重新给你带来活力。享受音乐当然少不了一款佩戴舒适的功夫藏和平山谷熊猫护智慧仙桃北京环球影城嗨现场地点北京环球影城功夫熊猫盖世之地主题景区最佳游览时间中午昨天是国庆假期第一天。6时许,北京环球度假区城市大道上已经有不少游客。监测到人流较多,早上7时40分,环球伊藤美诚疯狂叫嚣!李隼一番话真提气,国乒让日本队感到绝望北京时间11月18日,中国乒乓球队已经顺利抵达休斯顿并且完成了第一天的训练,这一次抵达休斯顿的国乒队员分成两个批次,第一个批次是在斯洛文尼亚参加WTT挑战赛的队员们,更早一些抵达休日本队出征世乒赛!石川佳纯大合影坐C位,伊藤美诚全程闷闷不乐近日,国乒为了备战休斯顿世乒赛而进行了一次热身赛,在这次热身赛当中,老将马龙依旧是表现神勇。但马龙许昕等老将已经确定不参加本次世乒赛,此次参加热身赛只是为了锻炼新人。总体而言,新一日本队出征休斯顿世乒赛,日乒协拿出单项最高约56万人名币奖金激励队员,伊藤美再发豪言我变得更加强大11月16日,日本乒乓球队出征世乒赛,从成田机场出发前,日本队召开发布会接受采访,球队一姐伊藤美诚自信能打败中国队,强调现在的自己比奥运会时更强大,而日本乒协对本届世乒赛也非常重视万有引力是怎么证明的?开普勒为宇宙天体学打开了一扇窗户,人类对行星运动规律的引力研究开始走向正轨。早在1645年,法国天文学家布里阿德就提出了引力与距离的平方成反比关系的猜想,后来人们根据开普勒第三定律
秦皇岛旅游冷知识,小岛土著都不一定了解哦!这么近那么美周末到河北河北文旅看图识景大美秦皇岛奋进新时代小岛的这些冷知识,土生土长的岛民都不一定了解,小旅这就来带大家看看秦皇岛北戴河是中国近代四大避暑别墅区之一1898年,北戴八一厂十朵金花今昔对比,有的是单亲妈妈,有的幸福一辈子喜欢老电影的朋友,肯定对曾经八一厂曾经的优秀演员们不陌生,在上世纪八十年代左右,八一厂出品了一大批经典红色影片,就比如今夜星光灿烂归心似箭南海风云等等,每一部都让观众看的热血沸腾,二字巨星丑闻揭秘探讨网友理性看待私生活,聚焦艺人作品与成就头条创作挑战赛娱乐界总是充满变数,绯闻和丑闻接踵而至。近日,一则狗仔爆料再次激起网友热议。报道称,有传闻二字功夫大腕A的另一半与三字功夫男演员B在别墅楼上私密见面,而A男星则在楼下人生之路看了原著,终于明白为什么看见黄亚萍就想快进申明此篇分析只针对剧中角色非演员本人。人生之路已大结局,对于大结局出乎意料的是众网友一致认可称赞。全员单身到底的大结局在中国电视剧里很少见,就不说爱情剧吧,悬疑片和谍战片都要凑几对3段婚姻2次离,带着二夫的孩子和一夫复合后,如今刘蓓过得如何?在阅读此文之前,麻烦您点击一下关注,既方便您进行讨论和分享,又能给您带来不一样的参与感,感谢您的支持。文筱晓编辑筱晓刘蓓曾经被称为京圈大飒蜜,行事果敢敢爱敢恨也让她的婚姻经历了三次让撒贝宁苦恋20年,发誓都想娶的女人,如今43岁选择不婚不育但凡看过琼瑶剧的人对金铭这个名字一定不陌生,在1990年,金铭主演的电视剧婉君一经播出就让全国人民都认识了这个火遍大江南北的小婉君。俊俏可爱并且流着晶莹剔透眼泪的小脸蛋让人印象深刻豆瓣7。7分,隐形战队大结局陈展鹏变丧尸,导演把他神化播出六周,开播豆瓣8。1分,第三周最高8。2分,大结局周落在了7。7分,文伟鸿导演的系列作品隐形战队收官了,这部以城寨英雄和超能使者铁拳英雄原班人马拍摄的警匪片,让TVB的电视剧又汪小菲和8亿富婆绯闻再曝惊人内幕!前任算计下的蛛丝马迹揭秘汪小菲和庄思敏的约会照片近日曝光,引起了娱乐圈内外的广泛关注。汪小菲是台湾著名主持人演员,曾与大S结婚并育有两个子女。而庄思敏则是中国光大控股前主席庄宝长女,家族身家估计逾8亿港元为什么那么多人不喜欢那英,是这个原因吗?那英1988年翻唱偶像苏芮的歌曲而进入歌坛,同年以山沟沟备受关注,从此走向娱乐圈子,渐渐有名气。她1990年凭借歌曲山不转水转获得全国电台评选冠军全国青年歌手新人奖。在1994年,迪奥品牌又又又辱华?迪丽热巴屁股都还没坐热的新晋大使何去何从迪奥这个品牌真的是太会搞事了,迪丽热巴官宣代言那几天给它带来了多少的流量名气全网一片赞誉,好好经营大陆市场一定会更上一层楼,这才几天又开始作死。迪奥涉嫌辱华已来自网络侵删经不是一次她算普女吗?纯欲风美女网红易梦玲罕见素颜被质疑好普通认不出,本人回应很开心缓解了大家的容貌焦虑4月13日,关于素颜引发的争议,纯欲风美女网红易梦玲发文回应。易梦玲晒照易梦玲发文回应她发文写道很开心缓解了大家的容貌焦虑ps请大家多多支持菊姐的爱很美味网友热评对此,粉丝们在评论