什么是CI/CD: 1): CI 全称:Continuous Integration (持续集成) 目的:
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。(百度百科回答~)
个人认知:可以不间断集成,持续嘛… 就是持久啊,长时间的不间断的,集成嘛…就是聚合而成,集合多家。(还有百度百科的…自动化测试来验证问题,尽早发现问题我是有点不太认可的… 因为目前来说我很少见到有公司的jenkins bd完之后去跟一个自动化回归的bd的。也可以从另外一个角度来看,持续集成时会发现代码上的问题了例如:编译不过,发布不过,或者分支合并问题,这些是可以发现的。)
2): CD 全称:Continuous delivery (持续交付)/Continuous deployment(持续部署)
目的:Continuous delivery (持续交付):是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况。它的目标在于让软件的构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。(百度百科回答~)
Continuous deployment(持续部署):抱歉没找到百度百科…
Continuous delivery (持续交付):可以不间断交付,持续嘛… 就是持久啊,长时间的不间断的,交付嘛… 就是交给啊,支付啊。既然都能持续集成了,那测试完成没问题就交付给产品大大了啊。持续集成没问题,那就持续交付给产品或者xxx部门来使用嘛,交给嘛~~ 给测试测试通过,给产品验收通过,给老板上了生产赚了钱钱,老板才能持续发工资噻~~
Continuous deployment(持续部署):可以不间断部署,持续嘛… 就是持久啊,长时间的不间断的,部署嘛…就是安排嘛,布置啊。既然都持续集成和持续交付了,那持续部署是不是也该提上日程了啊。前面都持续起来了,那部署持续一下,自动化一下,应该可以的吧~~ 降低手动部署的出现的问题啥的嘛~~ ,比如之前手动拉包在放上去服务器,但是久包没有back 但是新包有问题…好家伙,折腾了一天一夜啊。
Jenkins
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
Jenkins通常作为一个独立的应用程序在其自己的流程中运行, 内置Java servlet 容器/应用程序服务器(Jetty)。
Jenkins也可以运行在不同的Java servlet容器((如Apache Tomcat 或 GlassFish))中作为servlet运行.但是设置这些类型的安装的说明超出了本页的范围
(以上为官方解释,个人认知也是这样的。我就用它来ci/cd)
256MB可用内存
1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB)
软件配置:所在服务器必须有:Java 8 (此乃硬性要求)
当然如果把Jenkins作为Docker 容器运行,那就不用了~~
硬件不管,自己看~~
软件检查:
在命令行运行命令:java -version 如下图,则表示该服务器满足jenkins的软件环境要求
[root@ecs-149556 ~]# java -version openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
运行命令后没有出现如上信息,而是出现了
[root@VM-0-2-centos ~]# java -version -bash: java: 未找到命令
所以执行命令: yum -y list java*
[root@VM-0-2-centos ~]# yum -y list java* 已加载插件:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Loading mirror speeds from cached hostfile 可安装的软件包 java-1.6.0-openjdk.x86_64 1:1.6.0.41-1.13.13.1.el7_3 os java-1.6.0-openjdk-demo.x86_64 1:1.6.0.41-1.13.13.1.el7_3 os java-1.6.0-openjdk-devel.x86_64 1:1.6.0.41-1.13.13.1.el7_3 os
(以上内容没有放全…太多了,选择了前三条~~)
找一个8的
java-1.8.0-openjdk
然后安装~执行命令:yum -y install java-1.8.0-openjdk-src.x86_64
yum -y install java-1.8.0-openjdk-src.x86_64 xxxxx这里代表一大堆 已安装: java-1.8.0-openjdk-src.x86_64 1:1.6.0.41-1.13.13.1.el7_3 作为依赖被安装: dejavu-fonts-common.noarch 0:2.33-6.el7 dejavu-sans-fonts.noarch 0:2.33-6.el7 flac-libs.x86_64 0:1.3.0-5.el7_1 fontconfig.x86_64 0:2.13.0-4.3.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 giflib.x86_64 0:4.1.6-9.el7 gsm.x86_64 0:1.0.13-11.el7 java-1.6.0-openjdk.x86_64 1:1.6.0.41-1.13.13.1.el7_3 javapackages-tools.noarch 0:3.4.1-11.el7 libICE.x86_64 0:1.0.9-9.el7 libSM.x86_64 0:1.2.2-2.el7 libX11.x86_64 0:1.6.7-4.el7_9 libX11-common.noarch 0:1.6.7-4.el7_9 libXau.x86_64 0:1.0.8-2.1.el7 libXcomposite.x86_64 0:0.4.4-4.1.el7 libXext.x86_64 0:1.3.3-3.el7 libXi.x86_64 0:1.7.9-1.el7 libXrender.x86_64 0:0.9.10-1.el7 libXtst.x86_64 0:1.2.3-1.el7 libasyncns.x86_64 0:0.8-7.el7 libogg.x86_64 2:1.3.0-7.el7 libsndfile.x86_64 0:1.0.25-12.el7_9.1 libvorbis.x86_64 1:1.3.3-8.el7.1 libxcb.x86_64 0:1.13-1.el7 libxslt.x86_64 0:1.1.28-6.el7 mailcap.noarch 0:2.1.41-2.el7 pulseaudio-libs.x86_64 0:10.0-6.el7_9 python-javapackages.noarch 0:3.4.1-11.el7 python-lxml.x86_64 0:3.2.1-4.el7 tzdata-java.noarch 0:2021e-1.el7 完毕!
出现了上图所示,那说明安装成功了。那么验证一下:java -version
[root@VM-0-2-centos ~]# java -version openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
ok,这就成功了。接下来安装jenkins
运行命令:wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@VM-0-2-centos ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
这里可能会提示:
[root@VM-0-2-centos ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --2022-03-16 11:46:57-- https://pkg.jenkins.io/redhat-stable/jenkins.repo 正在解析主机 pkg.jenkins.io (pkg.jenkins.io)... 151.101.74.133, 2a04:4e42:1a::645 正在连接 pkg.jenkins.io (pkg.jenkins.io)|151.101.74.133|:443... 已连接。 错误: 无法验证 pkg.jenkins.io 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书: 颁发的证书已经过期。 要以不安全的方式连接至 pkg.jenkins.io,使用“--no-check-certificate”。
此时先运行以下命令:yum install -y ca-certificates
[root@VM-0-2-centos ~]# yum install -y ca-certificates 已加载插件:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Loading mirror speeds from cached hostfile xxxxxx 这里一大堆更新就不搞过来了。 更新完毕: ca-certificates.noarch 0:2021.2.50-72.el7_9 完毕!
再去执行: wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@VM-0-2-centos ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --2022-03-16 11:52:31-- https://pkg.jenkins.io/redhat-stable/jenkins.repo 正在解析主机 pkg.jenkins.io (pkg.jenkins.io)... 151.101.74.133, 2a04:4e42:11::645 正在连接 pkg.jenkins.io (pkg.jenkins.io)|151.101.74.133|:443... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:85 正在保存至: “/etc/yum.repos.d/jenkins.repo” 100%[==================================================================================================================================================================================================================================================================================================================================>] 85 --.-K/s 用时 0s 2022-03-16 11:52:32 (5.13 MB/s) - 已保存 “/etc/yum.repos.d/jenkins.repo” [85/85])
然后执行: rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@VM-0-2-centos ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
这条命令不会有任何反应,因为看一下key嘛~~ 添加一个key进来,如果有反应告诉你key是啥了…那你人傻不傻? 要是都给别人看到了。
千万要执行这条命令,别问我为啥
接下来,安装。执行一下命令:yum -y install jenkins
[root@VM-0-2-centos ~]# yum -y install jenkins 已加载插件:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Loading mirror speeds from cached hostfile jenkins | 2.9 kB 00:00:00 jenkins/primary_db | 40 kB 00:00:01 正在解决依赖关系 --> 正在检查事务 ---> 软件包 jenkins.noarch.0.2.332.1-1.1 将被 安装 xxxxxx 一大堆安装内容 安装 1 软件包 总下载量:90 M 安装大小:91 M Downloading packages: jenkins-2.332.1-1.1.noarch.rpm | 90 MB 00:00:30 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : jenkins-2.332.1-1.1.noarch 1/1 验证中 : jenkins-2.332.1-1.1.noarch 1/1 已安装: jenkins.noarch 0:2.332.1-1.1 完毕!
至此,jenkins在服务器上安装完毕,接下来看一下jenkins在服务器上的一些东西。
[root@VM-0-2-centos sysconfig]# cd /etc/sysconfig/ [root@VM-0-2-centos sysconfig]# cat jenkins
配置文件所属目录:/etc/sysconfig
可以修改一些启动端口啊,启动参数之类的东西。
[root@VM-0-2-centos etc]# cd /var/log/jenkins/
jenkins启动后日志所在路径:var/log/jenkins/
[root@VM-0-2-centos jenkins]# service jenkins start Starting jenkins (via systemctl): [ OK ]
jenkins启动命令,初次执行有点慢。建议先执行一下stop停止命令
[root@VM-0-2-centos jenkins]# service jenkins stop Stopping jenkins (via systemctl): [ OK ]
jenkins启动后浏览器打开:http://ip:8080
如图复制该地址到服务器上运行命令:cat /var/lib/jenkins/secrets/initialAdminPassword
[root@VM-0-2-centos ~]# cat /var/lib/jenkins/secrets/initialAdminPassword ab426165752843e29512910f38928672
进入准备页面后,我的推荐是选择推荐插件安装(没错就是这么绕口)
然后创建属于自己的用户,开始新准备构建咯



