
本次使用的是 jenkins-2.314-1.1版本进行演示, Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。
修改Jenkins插件下载源Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址。
方式一:web页面上进行修改在插件管理的高级中,修改站点,具体步骤如下:
Jenkins->Manage jenkins(系统管理)->Manage Plugins(插件管理),点击Available(高级)
将 http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 复制到升级站点的URL,然后点击提交,提交后再点击右下角的立即获取,最后再浏览器输入http://ip:port/restart 重启jenkins。
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
将xml的url节点的值修改成http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,然后保存退出,再重启Jenkins:systemctl restart jenkins
操作步骤如下:
先进入插件管,然后点击可用插件(Avaliable),在顶部的搜索框输入要安装的插件名称即可。
顶部搜索栏输入 Chines
顶部搜索栏输入 Role-based Authorization Strategy
开启权限全局安全配置操作步骤如下:
操作步骤如下:
操作步骤如下:
操作步骤如下:
凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便jenkins可以和这些第三方的应用进行交互。
安装搜索插件 Credentials Binding 后安装
安装插件后,系统管理多了"凭据配置"菜单,在这里管理所有凭证,可以添加5种类型凭证。
常用的凭证类型有:username with password 和 SSH Username with private key
操作步骤如下:
username with password 类型凭证这里需要注意下,要包括Jenkins 凭据提供者,不然后面配置会告诉没权限。
操作步骤如下:
ssh-keygen 创建公钥和私钥
使用root用户生成公钥和私钥
ssh-keygen -t rsa
此过程是在Jenkins服务器进行处理的(不知道可不可以Gitlib上生成,后面有空进行验证)中间使用回车继续执行(默认值)。
在/root/.ssh/目录保存了公钥和使用(id_rsa:私钥文件;id_rsa.pub:公钥文件)
[root@localhost ~]# ll /root/.ssh/ 总用量 8 -rw-------. 1 root root 1675 10月 5 10:22 id_rsa -rw-r--r--. 1 root root 408 10月 5 10:22 id_rsa.pub
把生成的公钥放在Gitlab中
[root@localhost ~]# cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUaKImdZEaD0uioedmBg2I3CWXNmV5YtoDWF3d6OYEeLKRsDi+cA0IUjJgWGwmlr7NeInIIPDtkQf2OFxozXtg6e0WT/EW2kHuerzvSLZmsCUMdRuxhCIxTSBGdqVtcC9HEiBKbgJ7GR0QX64A1TCVDTSVSZ/iIOCeEo4kCpOqbVS5U5JzDqJZNcrRPCYzKtbsa0GLRa/kk1lJVTJYJyylapxXp66h/s7Vh5xJHabhUEXTnmsvRGpyirPE8+gc7f5/v86wemvOpyi3Iy132LLowFMEdhs31Sx4bhSJ3++OJzwMPw5q7iEKatIbmeKMpMfM6jLdkFrHEIT3NTkf8CWV root@localhost.localdomain
Gitlab 配置公钥
jenkins配置私钥
SSH免密登录示意图
为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。
安装操作步骤如下:
创建Git用户凭证操作步骤如下:
安装Jenkins服务器中安装 Git应用
yum install git -y
git --version
需要在自己创建一个正确的凭据,用户名和密码都是Gitlab正确的账户和密码
可以创建Maven项目的任务
搜索栏搜索 Maven Integration
搜索栏搜索 Pipeline
Pipeline,简单来说,就是一套运行在Jenkins上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。
代码: Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。
持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。
可停止: Pipeline可接收交互式输入,以确定是否继续执行Pipeline。
多功能: Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。
可扩展: Pipeline插件支持其DSL的自定义扩展,以及与其他插件集成的多个选项。
Pipeline脚本是由Groovy语言实现的,但是我们没必要单独去学习Groovy
Pipeline支持两种语法:Declarative(声明式)和scripted Pipeline(脚本式)语法
Pipeline也有两种创建方法:可以直接在Jenkins的Web UI界面中输入脚本;也可以通过创建一个Jenkinsfile脚本文件放入项目源码库中(一般我们都推荐在Jenkins 中直接从源代码控制(SCM)中直接载入Jenkinsfile Pipeline这种方法)。
安装插件后,创建项目的时候多了“流水线"类型
Pipeline语法快速入门 Declarative声明式-Pipeline创建项目
示例 拉取代码:
这里的代码我们可以不用手动写(没必要,有代码生成器)
stage('pull code') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '0f9a326f-30ef-4381-9637-233a06d631ba', url: 'git@192.168.2.101:cfl/web_demo.git']]])
}
}
示例 代码生成器:
使用代码生成器生成,将生成的代码,复制到具体Declarative(声明式)脚本 steps 下
刚才我们都是直接在Jenkins的UI 界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放在项目中(一起进行版本控制)
1)在项目根目录建立Jenkinsfile文件,把内容复制到该文件中
在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目,并将maven配置到path上。
全局工具配置 JDK、Maven、Git这里我之前已经安装过了maven,所以就不再安装了
这里新增了三个环境变量,值得注意的是:PATH环境变量必须要