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

从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连 ,点赞,转发,评论,
  咱们下期见。

山西邮政快递业基本恢复常态化运行来源央视新闻记者从山西省邮政管理局了解到,目前,山西省403个邮政快递分拨中心恢复常态化运行,正常运行率达到94。811231个邮政快递营业网点恢复常态化营业,正常营业率达到93。干货SpringBootSpringSecurityJwt权限认证认证1。整体逻辑1。SpringSecurity认证的逻辑规则启动项目时,SpringBoot自动检索所有带Configuration的注解,所以就将我们的WebSecurityCon越来越多用户选择荣耀手机,荣耀究竟有何魅力?荣耀手机颜值较高,性价比也高,值得考虑购买。我用华为荣耀note10三年了,发觉很好用赞荣耀华为原来如同一家夫妻,现在分家也是兄弟情深。华为主攻高端产品研发,荣耀选择中低端亲民路线vivo真香骁龙870手机,双芯加持OIS防抖,12256GB已跌至2049元由于一些众所周知的原因,在华为受到重创之后,华为早已经不是国内市场销量第一的品牌了,小米,OPPO和VIVO,甚至的独立后的荣耀市场份额已经超过了华为,其中vivo更是猛了,去年整亲测有效!WIN10无法连接共享打印机,提示0X0000011b解决办法最近经常碰到WIN10更新KB500。后打印机无法共享的问题,以下2种办法各位可以尝试以下一卸载更新打开设置更新和安全Windows更新查看更新历史记录卸载更新(带有KB500的更七工匠M28mmf5。6发售定位人文镜头在徕卡复活Summaron28mmf5。6镜头后,成功吸引了国内镜头制造商的注意,继铭匠光学发布同规格镜头后,今天七工匠正式发售旗下的M28mmf5。6定焦镜头。七工匠M28mmfiphone15规格被曝无孔全面屏自研基带,信号比高通还好谁能想到,iphone14系列还没发布,iphone15系列已经在近期陆续传来消息。不得不说新iPhone的挤牙膏周期实在太长了。早在上个月,网上就有iphone15的渲染图流出,VIVOx80拍照微距测评已经好几年没有换手机了,这次手机屏幕摔碎了,想着对于爱好摄影的我来说拍照功能是最看重的,对比了几款国产手机之后,最后决定买了VIVO刚上市的x80,看看它拍照效果怎么样吧?因为一直将畸变降到最小!有这五只国产镜电影镜头就够了前段日子,老蛙发布了5支M43画幅的电影镜头,这一组镜头的特点是极致轻便小巧,其中,超广角镜头的畸变控制很不错,我们当时为其做了直播,现在为大家上一道评测!这5支镜头分别是MFT6外围暴跌!A股今日还能稳住吗?外围市场美股三大指数大幅收跌,纳指跌4。99,标普500指数跌3。56,道指跌3。12。互联网零售概念股大型科技股热门中概股集体重挫。苹果收跌5。57,脸书跌6。8,亚马逊跌7。6比亚迪量变引起质变,盈利能力持续改善核心观点公司新能源车月度销量强劲,3月市占率已超20。公司销量走高带来产车净利提升空间。公司e平台3。0和DMi两大新能源车平台外延性强,新车型数业链地位质的飞跃1)公司应付账款周
百度入局百镜大战,打好内容王牌才能笑到最后中国商报(记者颉宇星祖爽)百度入局百镜大战。近日,百度推出新品添添智能健身镜。实际上,智能健身镜市场的玩家中除了众多健身器械企业,华为小米等科技企业也在布局。业内人士认为,这一赛道盘点一下国内做无人驾驶的企业无人驾驶可谓是这两年的风口行业,也涌现出一大批的优秀公司。我平时就比较喜欢关注行业动态,也对这些公司如数家珍。基于自己的了解和一些公开渠道的信息写了这篇文章,希望能给对无人驾驶感兴ASReml随机回归模型的示例代码1模拟数据来源MrodeRA,MrodeRA,ThompsonR。Linearmodelsforthepredictionofanimalbreedingvalues。MLinea5G手机销量榜单出炉!苹果第一,小米第二,三星第三各大手机厂商在去年均推出了5G智能手机,姗姗来迟的iPhone12系列也在采用骁龙5G基带的情况下完成了对5G网络的支持今年的手机市场,除了华为还在推出4G手机之外,其他手机厂商推小米12pro能超越苹果手机吗?想啥呢,小米12能超越苹果?是想超越iPhone13?小米12系列将在2021年12月28日发布,将会推出12系列大小两个版本,就是发布12系列手机大小不一样尺寸的手机,而其配置上什么为苹果华为小米OPPO的芯片,都不找三星代工众所周知,现在的众多的大名鼎鼎的芯片企业,其实只是设计企业,即自己只设计芯片,然后交给代工厂,比如台积电三星格芯等来代工。比如苹果华为高通联发科小米OPPOVIVO紫光展锐们的芯片小米要对标苹果?苹果的性价比还有优势吗在过去,苹果手机常年霸榜销售榜单,高端手机这一定位中,我们最先想到的就是苹果。但是随着更多优秀企业的崛起,苹果手机的性价比开始变得模糊不定,苹果在手机市场的霸权地位是否还能如十年前怪不得苹果不上快充,很多iPhone12用户,电池续航已崩对比安卓手机和iPhone,虽然iPhone性能不俗,iOS系统也很强大,但是同样有不少缺点,其中有一点就是没有快充。当然,也不能说没快充,苹果自己觉得自己有快充,只不过这个快充的三星概念新机,瀑布屏模块镜头2亿像素,这才叫创新最近几年,各大国产手机都有着不错的表现,不仅摆脱了模仿iPhone的局面,在各方面都实现了创新。但也有人质疑,其实这些看似先进的技术,其实都来自于三星,比如屏幕传感器和存储设备等等vivo的iQOOZ5与华为的nova9相比,哪一款手机更适合你?感谢邀请vivo的iQOOZ5与华为的nova9相比,哪一款手机更适合你?先来说结论追求性价比选择iQOOZ5就可以了,更低的价格,更强的性能表现。如果你是华为手机爱好者,亦或者是为何有人说扎克伯格是机器人?网友分析2018听证会,发现了什么?随着科学技术的不断创新,人工智能得到了蓬勃发展,关于是否应该实现人工智能的可持续发展,已经成为无数研究人员的一个热点话题。尤其是在智能化时代下,几乎所有的机器人都拥有意识,它们可以