专题篇三:Linux企业级 CICD 持续集成交付发布(jenkins的介绍,实战环境的部署,用户权限管理,用户权限划分,创建用户和项目并设置权限,普通用户登录测试查看)

企业级CI/CD 持续集成/交付/发布

一,CI/CD方法简介
持续集成(Continuous Integration, CI): 代码合并,构建,部署,测试都在
一起,不断地执行这个过程,并对结果反馈。
持续交付(Continuous Deployment, CD): 部署到测试环境、预生产环境。 
持续部署(Continuous Delivery, CD): 将最终产品发布到生成环境、给用户使用。
二,持续集成、持续交付、持续部署介绍
1,持续集成
持续集成(英语:Continuous integration,缩写为 CI),一种软件工程流程,
将所有工程师对于软件的工作复本,每天集成数次到共用主线(mainline)上。

持续集成主要是强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。
根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。简单来
讲就是:频繁地(一天多次)将代码集成到主干。
2,持续交付
持续交付(英语:Continuous delivery,缩写为 CD),是一种软件工程手法,
让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持
在随时可以释出的状况。

它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减
少软件开发的成本与时间,减少风险。

持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的
「类生产环境」(production-like environments)中。比如,我们完成单元
测试后,可以把代码部署到连接数据库的Staging 环境中更多的测试。如果代
码没有问题,可以继续手动部署到生产环境中。
3,持续部署
持续部署(英语:Continuous Deployment,缩写为 CD),是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

有时候,持续部署也与持续交付混淆。持续部署意味着所有的变更都会被自动部
署到生产环境中。持续交付意味着所有的变更都可以被部署到测试环境中,但是
出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。

持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。

注意:
CI/CD(持续集成/持续交付和持续部署)
等同
CI/CD(持续集成/持续发布)
三,jenkins CI/CD 流程
image-20220513232412541
说明:上线之前先把代码git到版本仓库,然后通过Jenkins 如Java项目通过
maven去构建,这是在非容器之前,典型的自动化的一个版本上线流程.(存在
环境依赖问题)
image-20220513232526179
说明:这里有一个docker harbor 的镜像仓库,通常会把你的环境打包为一个镜像,
通过镜像的方式来部署(解决环境依赖问题)。
1,jenkins介绍
image-20220513232630490
Jenkins 是一个用Java编写的开源的持续集成工具。在与Oracle发生争执后,项目
从Hudson项目独立。

Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是
什么平台。这是一个免费的开源项目,可以处理任何类型的构建或持续集成。集
成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。

Jenkins 提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache 
Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、
Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和
Apache Maven(软件包管理工具)的项目,以及任意的Shell脚本和Windows批处
理命令。Jenkins的主要开发者是川口耕介。Jenkins是在MIT许可证下发布的自由
软件。
2,jenkins的功能
持续的软件版本发布/测试项目。
监控外部调用执行的工作。

持续、自动地构建/测试软件项目。
监控软件开放流程,快速问题定位及处理,提提高开发效率。
3,jenkins特性
开源的java语言开发持续集成工具,支持CI,CD。

易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现
安装部署,可方便web界面配置管理。

消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通
过e-mail通知,生成JUnit/TestNG测试报告。

分布式构建:支持Jenkins能够让多台计算机一起构建/测试。

文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的
jar等。
4,产品发布流程
产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线

持续集成(Continuous integration,简称CI)

持续交付(Continuous delivery)

持续部署(continuous deployment) 
四,jenkins实验环境安装使用

操作系统:CentOS7

主机名ip服务
cicd-jenkins10.0.1.86jenkins
cicd-gitlab/github10.0.1.87gitlab/github
cicd-web10.0.1.88web
1,下载并解压安装jdk(tomcat,maven运行需要借助jak)
官方文档下载地址:https://www.oracle.com/java/technologies/javase/
jdk17-archive-downloads.html

[root@192 ~]#wget  https://download.oracle.com/java/17/archive/jdk-17.0.3.1_linux-aarch64_bin.tar.gz

[root@192 ~]#tar xf  jdk-17.0.3.1_linux-aarch64_bin.tar.gz  -C /usr/local

[root@192 ~]#mv  /usr/local/jdk-17.0.3.1   /usr/local/java
2,下载并解压tomcat
官方文档下载地址:(https://tomcat.apache.org/download-80.cgi)

[root@192 ~]#wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.78/bin/apache-tomcat-8.5.78.tar.gz

[root@192 ~]#tar xzf apache-tomcat-8.5.78.tar.gz -C /usr/local/

[root@192 ~]#mv  /usr/local/apache-tomcat-8.5.78   /usr/local/tomcat
3,下载并解压安装maven
下载maven并解压安装
官方文档下载地址https://archive.apache.org/dist/maven/binaries/
[root@192 ~]#wget  https://archive.apache.org/dist/maven/binaries/apache-maven-3.0.3-bin.tar.gz

[root@192 ~]#tar  xfz  apache-maven-3.0.3-bin.tar.gz  -C  /usr/local

[root@192 ~]#cd  /usr/local

[root@192 ~]#mv  apache-maven-3.0.3    maven
4,设置环境变量
[root@192 ~]#vim /etc/profile
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/maven
PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
export JAVA_HOME  MAVEN_HOME PATH

[root@192 ~]#source /etc/profile
5,验证java和maven安装
[root@192 ~]# java -version
java version "17.0.3.1"
...
[root@192 ~]#mvn  -version
...
version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
6,下载并解压jenkins安装包(注意是一个war包)
官方文档下载地址:https://www.jenkins.io/zh/download/

[root@192 ~]#wget  http://mirrors.jenkins.io/war-stable/2.332.3/jenkins.war

[root@192 ~]#rm  -rf    /usr/local/tomcat/webapps/*

[root@192 ~]# cp  jenkins.war   /usr/local/tomcat/webapps/    #网站目录更换jenkins.war
7,打开tomcat8009通信端口
[root@192 ~]#vim  /usr/local/tomcat/conf/server.xml

117<Connector protocol="AJP/1.3"
118                address="::1"
119                port="8009"
120                redirectPort="8443" />

[root@192 ~]#/usr/local/tomcat/bin/starup.sh   启动tomcat

[root@192 ~]#ss -lntp |grep 80
LISTEN     0      100         :::8080                    :::*                   users:(("java",pid=112454,fd=52))
LISTEN     0      1         ::ffff:127.0.0.1:8005                    :::*                   users:(("java",pid=112454,fd=154))
LISTEN     0      100        ::1:8009                    :::*                   users:(("java",pid=112454,fd=57))

注意:三个端口都出现,表示服务已经完成启动
8,登录jenkins web管理界面(192.168.222.129:8080)
[root@192 ~]#cat /var/lib/jenkins/secrets/initialAdminPassword
5d3f57bea6e546139fc48ea28f9d5ae5
image-20220514005122618

接下来就是设置admin账户和密码,以及邮箱账号,然后就直接登录了

image-20220514005448467
五,jenkins用户权限管理
1,用户管理背景
针对开发、运维、测试针对不同角色进行不同权限划分,

基于插件: 
Role-based Authorization Strategy 

Authorize Project 
2, 安装用户管理插件
安装该插件:
系统管理->管理插件-可选插件->搜索该插件选中直接安装即可。
image-20220516100324595
系统管理-配置全局安全性-安全域(选择第二个)
系统管理-配置全局安全性-授权策略(选择第四个)
image-20220516103558859
系统管理-配置全局安全性-管理分配角色
image-20220516103816114 image-20220516103906992
3,配置全局安全性
系统管理-配置全局安全性-安全域(选择第二个)
image-20220516100628856
系统管理-配置全局安全性-授权策略(每一个策略代表的权限都有所差异,根据需求选择)

在这里插入图片描述

4,注册一个新用户
系统管理-配置全局安全性-安全域(选择第二个不变)
系统管理-配置全局安全性-授权策略(选择第三个)
image-20220516101318373
系统管理-用户列表-新建用户
image-20220516101616595 image-20220516101636578
重新打开一个网页登录授权的普通用户账号密码
image-20220516101814472
5,开启 Role-Based Strategy
image-20220516143448685
6,重新用 test1 用户登录显示已经没有任何权限
image-20220516143601771
六,用户权限划分
安装 Role-Based Strategy 插件后,系统管理 中多了如图下所示的一个功能,
用户权限的划分就是靠它来做的。
image-20220516143706549 image-20220516143811427
1,Manage Roles(管理角色)
Manage Roles:管理角色,相当于针对角色赋予不同权限,然后在将该角色分配给用户。
角色就相当于一个组。其里面又有Global roles(全局)、item roles(项目)、node roles(),来进行不同划分。
Global roles (全局角色):管理员等高级用户可以创建基于全局的角色
Item roles(项目角色):针对某个或者某些项目的角色
node roles(节点角色):节点相关的权限
2,Global roles
默认是有一个admin用户的,是所有权限都有的,所有权限都是勾选了的。
接下来我们来添加一个角色:baseRole
baseRole :该角色为全局角色。这个角色需要绑定Overall下面的Read权限,
是为了给所有用户绑定最基本的Jenkins访问权限。
注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing 
the Overall/Read permission
3,Project roles
roles to add:表示项目角色
Pattern:是用来做正则匹配的(匹配的内容是Job(项目名)),比如说根据正则
匹配到的项目项目角色就都有权限;
接下来新建项目角色,改项目角色一般给其构建、取消、读取、读取空间权限,
一般配置这4个即可
demo :该角色为项目角色。使用正则表达式绑定 “demo.",意思是只能操作 
demo 开头的项目。
web :该角色也为项目角色。绑定 "web.”,意思是只能操作 web 开头的项目。
4,node roles
node roles(节点角色):节点相关的权限
roles to add:表示项目角色
Pattern:是用来做正则匹配的(匹配的内容是节点(slave节点)),比如说根据
正则匹配到的项目项目角色就都有权限;

在jenkins创建中创建两个用户:user1 user2 
在jenkins创建2个空白项目: menu-1 app-1
user1用户上面只能看到menu-1项目,user2用户上只能看到app-1项目
image-20220516144213299

温馨提示: 针对以上的勾选的全局权限和项目权限都可以多尝试进行操作熟悉,便可观察到它对应的功能模块

5,创建可以登录的用户

在jenkins创建中创建两个用户:user1 user2 
在jenkins创建2个空白项目: menu-1 app-1
user1用户上面只能看到menu-1项目,user2用户上只能看到app-1项目
image-20220516172834004

6,给用户分配角色

在jenkins创建中创建两个用户:user1 user2 
在jenkins创建2个空白项目: menu-1 app-1
user1用户上面只能看到menu-1项目,user2用户上只能看到app-1项目
image-20220516173229374
7,user1用户登录,只能看到menu-1项目
image-20220516173633759
8,user2用户登录,只能看到app-1项目
image-20220516173828718
七:Jenkins 参数化构建
1,参数化构建背景
如果只是简单的构建,jenkins自己默认的插件可以做,但是如果我们想要在构建
过程中有更多功能,比如说:选择性构建、传参、项目指定变量等等其他功能,
基础的参数化构建可以实现一些简单功能,但是要想使用更多功能这时候我们就
需要借助参数化构建来实现交互的功能。此处我们来借助以下插件来进行实现:
Extended Choice Parameter(更丰富的参数化构建插件)
Git Parameter
2,安装插件
1,首先还是安装该插件,去管理插件里面进行安装 
Extended Choice Parameter
image-20220516174428860
2,选择安装过的插件
image-20220516175154693 image-20220516174755075
参数化配置,这里这个branch 就相当于给其当做一个变量,然后来为其进行传参
image-20220516175300777 image-20220516175333487
构建选择执行shell进行测试
image-20220516175407956 image-20220516175419727
参数配置已经生效

在这里插入图片描述

image-20220516175813159
构建app-1,发现控制台输出是成功的
image-20220516180054909 image-20220516180222780
八,数据来源选择文件
在jenkins所在服务器进行如下操作:
[root@jenkins ~]# vim /opt/jenkins.property  # 建立一个文件
abc=t1,t2,t3,t4
web 端配置:
image-20220516180446415 image-20220516180512000
进行测试:
构建前:(可以发现也是生效的)
image-20220516180530644
构建后查看结果:(也是成功的)
image-20220516180549198
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenshuai199533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值