1. Jenkins简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins功能包括:
1> 持续的软件版本发布/测试项目。
2> 监控外部调用执行的工作。
jenkins就是基于Java开发的一种持续集成的工具, 可以将运维用到的各个脚本整合起来,并且可以通过页面方式集中管理,而且可以也可以实现和gitlab、github交互,也可以实现自动编译、部署程序。
持续集成
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
持续集成
持续集成:Continuous Intergration (CI)
持续交付:Continuous Delivery(CD)
持续部署:Continuous Deployment(CD)
集成是指软件个人研发的部分向软件整体部分交付,以便尽早发现个人开发部分的问题;
部署是代码尽快向可运行的开发/测试节交付,以便尽早测试;
交付是指研发尽快向客户交付,以便尽早发现生产环境中存在的问题。
如果说等到所有东西都完成了才向下个环节交付,导致所有的问题只能再最后才爆发出来,解决成本巨大甚至无法解决。
而所谓的持续,就是说每完成一个完整的部分,就向下个环节交付,发现问题可以马上调整。是的问题不会放大到其他部分和后面的环节。
持续集成流程:
提交(git)→ 测试 → 构建(jenkins)→ 测试 → 部署(ansible,shell,puppet)→ 回滚(ansible)
2. Jenkins安装
Jenkins是基于Java开发的,所以需要安装Java环境,此处所用的Jenkins因版本较低的的问题,在高版本的Java1.11环境下不兼容,无法启动,因此需要利用本地源下载低版本的Java1.8环境。Java环境下载后安装Jenkins。
Jenkins官网:http://pkg.jenkins.io/,可以从官网下载安装包进行安装。
我将Jenkins安装在192.168.16.6这台主机上。
1> 利用本地源安装Java环境
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
bak local.repo Mariadb.repo net.repo
[root@localhost yum.repos.d]# mv net.repo net.repo.bak
[root@localhost yum.repos.d]# cd
[root@localhost ~]# yum install java -y
2> 上传Jenkins安装包
[root@localhost ~]# rz
[root@localhost ~]# ls anaconda-ks.cfg gitlabtest jenkins-2.32.3-1.1.noarch.rpm
3> 安装Jenkins
[root@localhost ~]# yum install jenkins-2.32.3-1.1.noarch.rpm -y
4> 启动Jenkins
[root@localhost ~]# systemctl restart jenkins
5> 浏览器访问
Jenkins占用的是8080端口,浏览器访问时要加上端口号。
根据提示找到保存的密码,复制密码。
[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword ec83353c768946b79ce8387d67254843
进入Jenkins客户自定义阶段,提示Jenkins需要依赖许多插件进行工作,由于在Jenkins官网安装插件比较慢,此处选择自定义安装插件(select plugins)。
进入自定义安装界面,同样也因为网络原因不要选择任何插件安装,稍后会上传插件包进行本地安装。
进入用户注册界面。简单起见,用户为root,密码为123。
Jenkins安装成功。
6> 安装Jenkins插件
进入Jenkins后选择 系统管理→管理插件→已安装,发现是空的,此时再上传安装插件包。如果网速支持也可以去官网:http://updates.jenkins-ci.org/ 下载安装。
1) 上传插件
[root@localhost ~]# rz
2> 移动插件包至Jenkins插件目录下
[root@localhost ~]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/lib/jenkins /usr/lib/jenkins/jenkins.war /usr/sbin/rcjenkins /var/cache/jenkins /var/lib/jenkins /var/log/jenkins [root@localhost ~]# cd /var/lib/jenkins/ [root@localhost jenkins]# ls config.xml logs secret.key.not-so-secret hudson.model.UpdateCenter.xml nodeMonitors.xml secrets jenkins.install.InstallUtil.lastExecVersion nodes updates jenkins.install.UpgradeWizard.state plugins userContent jobs secret.key users [root@localhost jenkins]# cd plugins/ [root@localhost plugins]# mv /root/plugins.tar.gz . #移动插件到当前目录 [root@localhost plugins]# ls plugins.tar.gz
3> 解压并复制插件至plugins目录
[root@localhost plugins]# tar xf plugins.tar.gz #解压 [root@localhost plugins]# ls plugins plugins.tar.gz #插件全在plugins下面 [root@localhost plugins]# cp -a plugins/* . #复制所有的插件到当前目录 [root@localhost plugins]# ls ace-editor junit.jpi ace-editor.jpi ldap ant ldap.jpi ………so many plugins……..
4> 重启Jenkins使插件生效
[root@localhost ~]# systemctl restart jenkins
5> 浏览器下查看
插件安装成功,可以创建项目了。
3. Jenkins凭证
有许多第三方网站和应用程序可以与 Jenkins 进行交互,例如程序代码仓库,云存储系统和服务等。
此类应用程序的系统管理员可以在应用程序中配置凭证以专供 Jenkins 使用。通常通过将访问控制应用于这些凭证来完成这项工作,以“锁定”Jenkins可用的应用程序功能区域。一旦 Jenkins 管理员(即管理 Jenkins 站点的 Jenkins 用户)在 Jenkins 中添加/配置这些凭证,Pipeline 项目就可以使用凭证与这些第三方应用程序进行交互。
Jenkins 中保存的凭证可以用于:
- 任何适用于 Jenkins 的任何地方(即全局证书)
- 特定的 Pipeline 项目
- 特定的 Jenkins 用户
简单来说,Jenkins用来保存用户和密码。
3.1 Jenkins凭证的创建
凭证添加,此时可以创建一个Gitlab来使用此凭证(Gitlab用户密码为root、12345678)
创建新任务
任务名为gitlabtest,创建为自由的项目,点击确定创建
主题描述,
使用刚添加的凭证,在使用时就不必再输入用户密码了。
4. Jenkins项目操作详解
1> 新建项目
2> 输入主题,选择自由分格,进行创建
3> 填写主题介绍(可省略)
4> 向下滑,可以选择位构建shell,直接使用shell命令
5> 选择了workspace目录,因此命令的执行结果均在workspace下,点击保存
6> 构建gitlabtest项目,执行命令,蓝色表示执行成功
7> 点击前面的小球进入控制台显示详细的执行结果
8> 主机端查看结果
[root@localhost ~]# cd /var/lib/jenkins/workspace/gitlabtest [root@localhost gitlabtest]# ls test [root@localhost gitlabtest]# cat test 123