持续集成简介
什么是持续集成
持续集成指的是频繁地将代码jicheng到主干。将团建个人研发的部分向关键整体部分交付,频繁进行集成以便更快的发现其中的错误。- 开发人员定期向享存储库提交代码
- 监视版本控制系统,当检测到提交时,将自动触发构建
- 如果构建不是绿色的,将立即通知开发人员
- 持续集成的原因
尽可能早的在开发生命周期中检测问题或bug(由于整个代码库是不断集成、构建和测试的,所以潜在的bug和错误在生命周期的早期被捕获,从而带来更好的软件质量)。 - 持续交付
持续交付指的是频繁的将软件的新版本交付给质量团队或用户,以供评审。评审通过,代码就进入生产阶段。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的【类生产环境】中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。 - 持续部署
持续部署是持续交付的下一步,指的是代码通过评审后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
持续部署的前提是能自动化完成测试、构建、部署等步骤。
持续集成、持续交付、持续部署提供了一个优秀的 DevOps 环境。软件的开发和发布,已经形成了一套标准的流程。
前置条件
学习Jenkins之前,需要先学习以下2篇文章
玩转Linux系统【一】CentOS系统安装
玩转Linux系统【二】JDK8安装配置
Jenkins安装
主要配置
# 配置ci用户组,创建jenkins用户,并且指定ci组 $ groupadd ci $ useradd jenkins -g ci # 创建存放jenkins工具的目录,并指定权限,因jenkins后期构建比较占用磁盘,此处建议先挂载磁盘 $ mkdir -p /data/software $ chown -R jenkins:ci /data/software # 切换jenkins用户,进入到software目录,并下载jenkins.war $ su jenkins $ cd /data/software/ # 如果下载较慢,建议采用迅雷下载,然后上传 $ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
用户命令拓展
# 给已存在的用户jenkins指定组ci usermod -G ci jenkins passwd jenkins # 删除用户和组 userdel www groupdel www
安装Java环境
- 下载jdk,上传至linux并解压
- 配置/etc/profile的内容
- 使配置生效
- 检测java环境信息
启动jenkins
# 使用nohup命令启动 $ nohup java -jar /data/software/jenkins.war --httpPort=8777 --httpsPort=8778 > /data/software/jenkins.log 2>&1 &
使用tail命令查看启动日志,日志中会输出jenkins密码
$ tail -222f jenkins.log 2020-09-10 16:10:55.442+0000 [id=32] INFO jenkins.install.SetupWizard#init: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: ad1c1a787a21426a9134cc8255071360 This may also be found at: /home/jenkins/.jenkins/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* 2020-09-10 16:18:48.533+0000 [id=32] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2020-09-10 16:18:48.551+0000 [id=20] INFO hudson.WebAppMain$3#run: Jenkins is fully up and running
开放8777端口供外网访问
如果是云服务器,开放安全组即可,如果是虚拟机在防火墙中加入8777端口并重载配置
# 开启防火墙8777端口 $ firewall-cmd --zone=public --add-port=8777/tcp --permanent # 使配置生效 $ firewall-cmd --reload # 防火墙扩展命令如下(云服务直接操作阿里云安全组即可) (1)设置开机启用防火墙:systemctl enable firewalld.service (2)设置开机禁用防火墙:systemctl disable firewalld.service (3)启动防火墙:systemctl start firewalld (4)关闭防火墙:systemctl stop firewalld (5)检查防火墙状态:systemctl status firewalld (1)查看防火墙状态:firewall-cmd --state (2)重新加载配置:firewall-cmd --reload (3)查看开放的端口:firewall-cmd --list-ports (4)开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent 命令含义: –zone #作用域 –add-port=9200/tcp #添加端口,格式为:端口/通讯协议 –permanent #永久生效,没有此参数重启后失效 注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效 (5)关闭防火墙端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent
- 外网或宿主机访问浏览器地址
http://192.168.1.195:8777/
如果忘记密码
- 进入到jenkins的工作目录,找到
config.xml
,我这里是/home/jenkins/.jenkins/config.xml
修改该配置文件
useSecurity
的节点值为false<useSecurity>true</useSecurity>
- 重启jenkins项目后,再次访问jenkins站点
- 进入到系统管理
- 找到全局安全配置
- 进入到用户列表,找到admin用户
- 使用新密码登录即可
- 进入到jenkins的工作目录,找到
总结
到这里jenkins我们就安装好了,接下来我们就开始集成和丰富jenkins