Jenkins学习笔记-安装和持续集成环境配置
本文最后更新于 1126 天前,其中的信息可能已经有所发展或是发生改变。

Jenkins学习笔记-安装和持续集成环境配置

2 Jenkins安装和持续集成环境配置

2.1 持续集成流程说明

image-20210517153457256

  • 首先,开发人员每天进行代码提交,提交到Git仓库
  • 然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK,Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
  • 最后,Jenkins把生成的jar或war包分发到测试服务器或者生产服务器,测试人员或用户就可以访问 应用。

2.2 Gitlab代码托管服务器安装

Gitlab简介

image-20210517153917005

官网: 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

image-20210518145057483

开启权限全局安全配置

image-20210518145102631

授权策略切换为”Role-Based Strategy“,保存

image-20210518145136916

创建角色

在系统管理页面进入Manage and Assign Roles

image-20210518145200630

点击”Manage Roles

image-20210518145210203

Global roles(全局角色):管理员等高级用户可以创建基于全局的角色

Item roles(项目角色):针对某个或者某些项目的角色

Node roles(节点角色):节点相关的权限

添加以下角色:

  • baseRole:该角色为全局角色。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 ismissing the Overall/Read permission
  • role1:该角色为项目角色。使用正则表达式绑定”glj.*”,意思是只能操作glj开头的项目。
  • role2:该角色也为项目角色。绑定”hcxt.*”,意思是只能操作hcxt开头的项目。

image-20211219225956056

保存。

创建用户

在系统管理页面进入 Manage Users

image-20210518145434714

image-20210518145440967

image-20211219230406318

image-20211219230549017

分别创建两个用户:guoliangjun和hcxt

给用户分配角色

系统管理页面进入Manage and Assign Roles,点击Assign Roles

绑定规则如下:

  • guoliangjun用户分别绑定baseRole和role1角色
  • hcxt用户分别绑定baseRole和role2角色

image-20211219231228310

保存。

创建项目测试权限

以管理员账户创建两个项目,分别为glj01和hcxt01

image-20211219231426227

结果为:

  • guoliangjun用户登录,只能看到glj01项目
  • hcxt用户登录,只能看到hcxt01项目

2.5持续集成环境(3)-Jenkins凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件

安装插件后,系统管理多了”凭据和凭据配置”菜单,在这里管理所有凭证

image-20211219232045132

image-20210518150202753

可以添加的凭证有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插件安装:

image-20210518150324503

登录到服务器上后安装Git工具:yum -y install git

用户密码类型

1.创建凭证

Jenkins->凭证->系统->全局凭证->添加凭证

选择”Username with password“,输入Gitlab的用户名和密码,点击”确定”。

image-20211219232918740

2.测试凭证是否可用

创建一个FreeStyle项目:新建Item->FreeStyle Project->确定

image-20211219233143533

image-20211219233235683

保存配置后,点击构建”Build Now“ 开始构建项目

image-20210518162613757

image-20211219233527114

查看/data/jenkens_data/jenkins_home/workspace目录,发现已经从Gitlab成功拉取了代码到Jenkins中。

image-20211219233607149

SSH密钥类型

image-20210518162856553

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”,把刚才生成私有文件内容复制

image-20211219234248536

4.测试凭证是否可用

新建”test02″项目->源码管理->Git,这次要使用Gitlab的SSH连接,并且选择SSH凭证

image-20211219234459026

image-20211219234553561

2.6持续集成环境(4)-Maven安装和配置

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目。

安装Maven

详细请参考文档:Linux-Maven环境安装

全局工具配置关联JDK和Maven

jdk

Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:

image-20210519164200178

这里的jdk是docker run时候已经提前做好了一个映射,详情看看docker方式安装jenkins

maven

Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:

image-20211220000638375

添加Jenkins全局变量

Manage Jenkins->Configure System->Global Properties ,添加三个全局变量 JAVA_HOME、M2_HOME、PATH+EXTRA

image-20211220001152555

修改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密码测试项目,修改配置

image-20210519170032989

构建->增加构建步骤->Execute Shell

image-20210519170039435

输入:mvn clean package

再次构建,如果可以把项目打成jar包,代表maven环境配置成功

image-20211220102254494

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇