持续集成(二):Jenkins部署
Jenkins
什么是Jenkins
Jenkins是一个开源的使用Java开发的持续集成工具,提供了软件开发的持续集成服务,它把开发工作和运维工作结合在一起。它可以把Sonar代码质量检测工具、Maven或者Ant编译打包工具、Github、Gitlab代码管理工具以及Ansible或者Saltstack部署工具串联成一个完整框架。
它是主流的运维开发平台,它可以把开发、测试和运维融入到一个任务中。它具有很多插件可以从而使得其具有很好的扩展和兼容能力,比如常用的如下插件功能:
- 调用Git插件与Github或者Gitlab进行交互
- 调用Sonar插件,为给定的代码仓库地址做静态代码扫描,可以生成报告,检查语法规范性、是否有Bug、缺陷等
- 利用Maven插件,对代码进行编译、打包并上传到仓库
另外Jenkins还具有针对不同Job设置不同角色用于来控制权限。它还具有比较高的负载均衡功能,也就是组成一个Jenkins集群。
前置操作
说明:由于Jenkins是Java开发的所有需要在系统中安装JDK1.8及以上版本。可以直接使用OpenJDK,yum -y install java
。
安装Git工具
系统默认带的是git1.x版本,版本过低,我们需要进行升级
#!/bin/bash
echo "安装git2"
# 卸载老版本
yum remove git
#
yum -y install epel-release
cat > /etc/yum.repos.d/ius.repo <<-EOF
[ius]
name = IUS for Enterprise Linux 7 - $basearch
baseurl = https://repo.ius.io/7/$basearch/
enabled = 1
repo_gpgcheck = 0
gpgcheck = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7
[ius-debuginfo]
name = IUS for Enterprise Linux 7 - $basearch - Debug
baseurl = https://repo.ius.io/7/$basearch/debug/
enabled = 0
repo_gpgcheck = 0
gpgcheck = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7
[ius-source]
name = IUS for Enterprise Linux 7 - Source
baseurl = https://repo.ius.io/7/src/
enabled = 0
repo_gpgcheck = 0
gpgcheck = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7
EOF
yum makecache
yum search git2
yum -y install git224
git --version
安装JDK
使用OpenJDK
`yum -y install java``
自定义安装JDK
安装Orcale的JDK。
tar -xzf jdk-8u291-linux-x64.tar.gz
mv jdk1.8.0_291 /usr/local/
ln -s ./jdk1.8.0_291 ./jdk
修改/ect/profile文件,配置环境变量
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
安装Jenkins
Jenkins有多种运行方式,比如Docker运行、War包运行以及通过Yum安装。我们这里通过Yum来安装。
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum makecache
yum -y install jenkins
如果通过YUM源安装比较慢,可以是使用清华同方镜像,下载RPM包来安装,下载站点
rpm -ivh ./jenkins-2.289.2-1.1.noarch.rpm
如果使用了自定义安装的JDK,那么还需要修改vim /etc/init.d/jenkins
:
也可以使用软连接方式
ln -s /usr/local/jdk/bin/java /usr/bin/java
修改Jenkins启动用户和端口,编辑配置文件vim /etc/sysconfig/jenkins
,修改如下参数JENKINS_USER=xxx JENKINS_PORT=8080
。
为JENKINS_USER
创建用户useradd deploy
,并修改权限,这一步不是必须的,如果通过RPM包安装它会自动创建jenkins
用户。
chown -R deploy.deploy /var/lib/jenkins/
chown -R deploy.deploy /var/log/jenkins/
chown -R deploy.deploy /var/cache/jenkins
最后使用systemctl start jenkins
。然后打开浏览器输入地址,一开始会有一个提示页面稍等片刻就会出现这个密码界面:
这里选择推荐的插件
创建一个管理员账号
主界面
Jenkins配置和Gitlab集成
其实这里主要是添加Git上的凭据。真正的集成是在Job中。
我们的Jenkins是使用deploy
账号启动的,如果自建的Gitlab使用私有CA办法的证书并且启用了SSL,而且Jenkins连接Git也使用HTTPS的话,并且在Jenkins服务器上没有导入私有根证书,那么在Jenkins连接Git的时候会报错因为无法验证证书,所以可以到Jenkins服务器上切换到deploy
账号运行git config --global http.sslVerify false
命令来禁用SSL检查。
配置Jenkins免密拉取代码
首先要在Jenkins服务器上创建秘钥,管理员登录也可以。运行ssh-keygen -t rsa
一路回车,拷贝id_rsa.pub
的内容,然后管理员登录GitLab进入设置->SSH KEY,添加该公钥。
然后在Jenkins上创建秘钥账号,粘贴私钥内容。