Jenkins企业应用进阶详解
CI/CD,DevOps介绍
持续集成(Continuous Integration,CI)
代码合并,构建,部署,测试都在一起,不断地进行这个过程,并对结果反馈
持续交付(Continuous Delivery,CD)
部署到生成环境,给用户使用
持续部署(Continuous Deployment,CD)
部署到生产环境
部署Git版远程仓库
系统环境要求
主机名 | IP地址 | 备注 |
---|---|---|
Git | 192.168.200.70 | Git服务器 |
Jenkins | 192.168.200.91 | Jenkins服务器 |
cat /etc/redhat-release
uname -r
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
echo "`hostname -I` jj-git" >> /etc/hosts
echo "`hostname -I` jj-jenkins" >> /etc/hosts
部署Git版远程仓库
yum -y install git
which git
创建Git账户
useradd git
echo "linyaonie" | passwd --stdin git
创建Git远程仓库
cd /home/git
mkdir repos
cd repos
mkdir app.git
cd app.git
pwd
git --bare init
ls
在Jenkins服务器进行git代码远程推送测试
yum -y install git
which git
创建一个目录,尝试git clone远程Git服务器仓库的代码
mkdir /test
cd /test
git clone git@192.168.200.70:/home/git/repos/app.git
输入远程服务器git用户的密码,会提示你克隆一个空的
ls
进行代码提交测试
cd /test/app
echo "sunlin" >> test
cat test
git config --global user.email "1123400300@qq.com"
git config --global user.name "Mr.sun"
git add *
git commit -m "第一次测试提交"
git push -u origin master
输入git服务器的密码
git branch -a --->-a参数也可以看到远程仓库的主分支
在jenkins服务器进行SSH免密钥操作
ssh-keygen
一路回车即可
进行公钥分发
ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168.200.70
输入Git服务器的git普通用户密码
测试免密钥的git推送测试
cd /test/app
ls
echo "lin" >> test
cat test
git add *
git commit -m "免密钥提交测试"
git push -u origin master
Jenkins的企业应用管理
jenkins官网:https://jenkins.io
redhat版jenkins官方页面:https://pkg.jenkins.io/redhat-stable
jenkins所有包下载链接
链接:https://pan.baidu.com/s/1rQ6iIQCspbCvfiV2egKItw
提取码:cych
Jenkins的安装与基础配置
rpm安装方式
yum -y localinstall jenkins-2.138.1-1.1.noarch.rpm
安装Jenkins的三种方法
利用yum源安装
下载jenkins的rpm包安装
jenkins的war包安装由于之前已经介绍过war包安装jenkins的方式了,在这里我们只用yum来安装jenkins
利用yum方式安装最新版本jenkins
下载jenkins的yum源文件
yum -y install wget
which wget
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1
导入jenkins的rpm证书
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
利用yum安装最新版本jenkins
yum -y install jenkins
查看jenkins安装路径
rpm -ql jenkins --->-ql参数是查询rpm的安装路径
/etc/sysconfig/jenkins --->jenkins配置文件
安装和配置jdk环境(上文有下载链接)
由于jenkins是java开发的所有需要jdk支持
解压安装jdk
ls
tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_171 jdk
/usr/local/jdk/bin/java -version
配置java环境
sed -i.org '$a export JAVA_HOME=/usr/local/jdk/' /etc/profile
sed -i.org '$a export PATH=$PATH:$JAVA_HOME/bin' /etc/profile
sed -i.org '$a export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
tail -3 /etc/profile
source /etc/profile
java -version
安装和配置maven环境(上文有下载链接)
解压安装maven
ls
tar xf apache-maven-3.5.0-bin.tar.gz -C /usr/local
cd /usr/local
mv apache-maven-3.5.0 maven
配置maven环境变量
sed -i '$a MAVEN_HOME=/usr/local/maven' /etc/profile
sed -i '$a export PATH=${MAVEN_HOME}/bin:$PATH' /etc/profile
tail -2 /etc/profile
source /etc/profile
mvn -v
启动jenkins
因为是yum安装的jenkins所以需要给java做一个命令的软链接,让启动服务的时候可以找到
ln -s /usr/local/jdk/bin/java /usr/bin
ll -d /usr/local/jdk/bin/java
启动jenkins
systemctl start jenkins
systemctl status jenkins
查看jenkins监听端口8080
netstat -antup | grep 8080
添加开机自启动
systemctl enable jenkins
通过浏览器访问jenkins
查看jenkins解锁密码,并复制到jenkins的web界面,解锁jenkins
cat /var/lib/jenkins/secrets/initialAdminPassword
初始化jenkins
使用默认插件配置安装即可
创建一个jenkins用户
改变jenkins界面语言
常用的系统模块介绍
系统设置 --->jenkins自身相关的全局配置和设定
全局安全配置 --->jenkins自身相关的安全配置设定
凭据配置 --->jenkins集中管理账号密码密钥等的设定
全局工具配置 --->外部的第三方工具的配置信息设定
系统管理--->全局工具配置介绍
Maven配置
配置maven的settings.xml配置文件的位置路径(不修改为默认路径)配置JDK
配置java命令的执行路径,JDK是Java语言的软件开发工具包配置Git
配置git的命令执行路径,git是分布式版本控制软件配置Gradle
配置Gradle的执行路径,Gradle是面向java的自动化构建开源工具,同maven配置Ant
配置Ant的执行路径,Ant是面向java的自动化构建开源工具,同mavaen配置Maven
配置maven的命令执行路径,maven是面向java的自动化构建开源工具配置Docker
配置Docker的命令执行路径,Docker是最近大热的容器级虚拟化产品
全局工具配置--->配置JDK
全局工具配置--->配置Git
全局工具配置--->配置maven
Apache Maven是一种创新的软件项目管理工具,提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档。最强大的功能就是能够自动下载项目依赖的库文件。
在开发中,为了保证编译通过,开发会导出去寻找项目依赖的jar包(类似rpm安装软件时需要的一堆依赖包)
因此,就要用到maven(Ant和Gradle也是干这个的)
Maven其实就类似Linux的Yum仓库,可以自动帮我们下载(公网源)和安装java项目所依赖的支持包
用户权限管理
在一个成熟的企业应用环境中,jenkins是需要通过权限来控制角色功能使用的
开发人员利用jenkins===>生产环境项目代码版本发布(A/B测试等)
测试人员利用jenkins===>测试环境自动化部署
运维人员利用jenkins===>生产环境项目代码版本回滚
安装插件Role-based Authorization Strategy
注册两个用户(开发和测试)
开发账号
测试账号
由于开启了Role-based Strategy,此时用户没有任何权限
系统管理--->Role-based Strategy
Manage Roles:权限管理
Assign Roles:授权管理
(1)进入权限管理
Global roles
jenkins的整体权限分配,至少要开读的权限Project roles
正则匹配具体的项目,分配管理权限
(2)进入授权管理
(3)创建两个项目分别以A-和B-开头(创建方式都一样)
(4)登陆用户user1和user2进行权限登陆测试
参数化构建
什么是参数化构建
参数化构建就是在执行自动构建之前可以对构建过程手动传入外部参数,从而改变构建得过程
(1)配置一个构建脚本,然后执行
(2)在A-Web上添加参数化构建功能
安装插件Extended Choice Parameter
Extended Choice Parameter
作用就是在参数化构建时可以出现一个下拉框让用户直接选择多少个值
插件引用文件里的参数
我们还可以在一个文件里创建参数,然后让插件引用这个参数
cd /opt
vim jenkins.property
yunjisuan=xin01,xin02,xin03
cat jenkins.property
Git参数化构建插件
Git Parameter插件可以直接获取Git仓库的branch,tag等信息
安装插件Git Parameter
添加远程Git仓库的密钥管理
由于我们之前用jenkins的root账户已经做过免密钥连接git了
因此,我们创建ssh的密钥管理
进行Git参数化构建并测试
手动创建一个分支在提交并再次查看构建
Master-Slave架构
主机名 | IP地址 | 备注 |
---|---|---|
Git | 192.168.200.70 | Git服务器(Jenkins的Slave节点) |
Jenkins | 192.168.200.91 | Jenkins服务器 |
jenkins的分布式构建操作,可以通过Slave代理节点来执行项目任务
首先在Git服务器上安装Jdk
ls
tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local
cd /usr/local
mv jdk1.8.0_171 jdk
ln -s /usr/local/jdk/bin/* /usr/local/bin
添加一个用于连接slave代理节点的SSH证书
之前已经添加好SSH证书了
系统管理--->节点管理
/var/lib/jenkins --->jenkins的工作空间
ls
重新配置构建过程并测试
Restrict where this project can be run===>限制项目的运行节点
cd /var/lib/jenkins/workspace --->如果要代码上线的话,在把这个目录的内容放到网页目录即可
ls
cat test