Jenkins学习笔记-安装和持续集成环境配置
2 Jenkins安装和持续集成环境配置
2.1 持续集成流程说明
- 首先,开发人员每天进行代码提交,提交到Git仓库
- 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
- 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问 应用。
2.2 Gitlab代码托管服务器安装
Gitlab简介
官网: https://about.gitlab.com/
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的 web服务。
GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。
详细请参考文档:Linux-Gitllab安装
2.3持续集成环境(1)-Jenkins安装和插件管理
详细请参考文档:Linux-Jenkins安装
2.4持续集成环境(2)-Jenkins用户权限管理
安装Role-based Authorization Strategy插件
Role-based Authorization Strategy
开启权限全局安全配置
授权策略切换为"Role-Based Strategy
",保存
创建角色
在系统管理页面进入Manage and Assign Roles
点击"Manage Roles
"
Global roles(全局角色):管理员等高级用户可以创建基于全局的角色
Item roles(项目角色):针对某个或者某些项目的角色
Node roles(节点角色):节点相关的权限
添加以下角色:
- baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 ismissing the Overall/Read permission
- role1:该角色为项目角色。使用正则表达式绑定"glj.*",意思是只能操作glj开头的项目。
- role2:该角色也为项目角色。绑定"hcxt.*",意思是只能操作hcxt开头的项目。
保存。
创建用户
在系统管理页面进入 Manage Users
分别创建两个用户:guoliangjun和hcxt
给用户分配角色
系统管理页面进入Manage and Assign Roles
,点击Assign Roles
绑定规则如下:
- guoliangjun用户分别绑定baseRole和role1角色
- hcxt用户分别绑定baseRole和role2角色
保存。
创建项目测试权限
以管理员账户创建两个项目,分别为glj01和hcxt01
结果为:
- guoliangjun用户登录,只能看到glj01项目
- hcxt用户登录,只能看到hcxt01项目
2.5持续集成环境(3)-Jenkins凭证管理
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
安装Credentials Binding插件
要在Jenkins使用凭证管理功能,需要安装Credentials Binding
插件
安装插件后,系统管理多了"凭据和凭据配置"菜单,在这里管理所有凭证
可以添加的凭证有5种:
- Username with password:用户名和密码
- SSH Username with private key: 使用SSH用户和密钥
- Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
- Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
- Certificate:通过上传证书文件的方式
常用的凭证类型有:Username with password(用户密码)
和SSH Username with private key(SSH密钥)
安装Git插件和Git工具
接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。
Git插件安装:
登录到服务器上后安装Git工具:yum -y install git
用户密码类型
1.创建凭证
Jenkins->凭证->系统->全局凭证->添加凭证
选择"Username with password
",输入Gitlab的用户名和密码,点击"确定"。
2.测试凭证是否可用
创建一个FreeStyle项目:新建Item->FreeStyle Project->确定
保存配置后,点击构建”Build Now“ 开始构建项目
查看/data/jenkens_data/jenkins_home/workspace
目录,发现已经从Gitlab成功拉取了代码到Jenkins中。
SSH密钥类型
1.jenkins服务器使用root用户生成公钥和私钥
ssh-keygen -t rsa
在/root/.ssh/
目录保存了公钥和使用
- id_rsa:私钥文件
- id_rsa.pub:公钥文件
2.把生成的公钥放在Gitlab中
以glj账户登录->点击头像->preferences->SSH Keys
复制刚才id_rsa.pub
文件的内容到这里,点击"Add Key"
3.在Jenkins中添加凭证
配置私钥 在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制
4.测试凭证是否可用
新建"test02"项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证
2.6持续集成环境(4)-Maven安装和配置
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。
安装Maven
详细请参考文档:Linux-Maven环境安装
全局工具配置关联JDK和Maven
jdk
Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:
这里的jdk是docker run时候已经提前做好了一个映射,详情看看docker方式安装jenkins
maven
Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:
添加Jenkins全局变量
Manage Jenkins->Configure System->Global Properties ,添加三个全局变量 JAVA_HOME、M2_HOME、PATH+EXTRA
修改jenkens-Maven的settings.xml
# 设置本地仓库 忽略,测试过不行.
<!--<localRepository>/var/maven_repo</localRepository>-->
# 设置远程拉取仓库
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<!--
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
-->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com
</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
测试Maven是否配置成功
使用之前的gitlab密码测试项目,修改配置
构建->增加构建步骤->Execute Shell
输入:mvn clean package
再次构建,如果可以把项目打成jar包,代表maven环境配置成功