什么是持续集成
- Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
持续集成最佳实践
- 维护一个单一的代码库
- 使构建自动化
- 执行测试是构建的一部分
- 集成日志及历史记录
- 使用统一的依赖包管理库
- 每天至少集成一次
什么是jenkins
- 持续集成、自动测试、持续部署的超级引擎,支持自定义工具集、多种交付通道
jenkins安装
- 安装依赖 yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
- 安装yum源 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
- rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
- rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
- 安装Jenkins
- yum –y install jenkins
- service jenkins start
- ckconfig Jenkins on
访问jenkins
- 访问Jenkins
- http://192.168.1.110:8080
- 查找admin默认密码
- cat /var/lib/jenkins/secrets/initialAdminPassword
- 输入密码
安装默认插件
常用插件
- OWASP Markup Formatter Plugin 安全
- Pipeline 工作流
- SonarQube 代码质检
- SSH plugin
- GitLab Plugin
- Git plugin
- Git Parameter Plug-In 照标签去发布
- Deploy Plugin
- Maven Integration plugin
- Role-based Authorization Strategy
插件管理
- 系统设置>插件管理
- 更新插件、下载安装、代理设置、可用插件
- 手工安装
- 下载地址
- http://updates.jenkins-ci.org/
覆盖插件目录
- mv plugins /var/lib/jenkins/
- chown -R jenkins.jenkins plugins/
镜像管理
- 全部镜像
- http://mirrors.jenkins-ci.org/status.html
- 更换镜像
- http://updates.jenkins-ci.org/update-center.json
- https://mirrors.tuna.tsinghua.edu.cn/
- http://mirror.esuni.jp/jenkins/updates/update-center.json
- https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
jenkins目录
- /var/lib/jenkins 主目录
- /etc/init.d/jenkins 启动文件
- /var/cache/Jenkins 程序文件
- /var/log/Jenkins 日志文件
用户权限
- 修改/etc/init.d/Jenkins
- 将用户修改为root,可以调用root工具
- 106行,113行
- 修改启动端口85行,$JENKINS_PORT
- systemctl daemon-reload
- service jenkins restart
卡启动问题
- 修改/etc/init.d/Jenkins
- 将用户修改为root,可以调用root工具
- 106行,113行
- 修改启动端口85行,$JENKINS_PORT
- systemctl daemon-reload
- service jenkins restart
备份
- tar zcf jenknis.tar.gz /var/lib/jenkins/
用到的插件有
GitLab Plugin(gitlab插件)
jenkins主机的私钥
gitlab的delopy是jenkins主机的公钥
构建的话,就会自动去gitlab上拉取项目到/var/lib/jenkins/workspace里面
SonarQube Scanner for Jenkins(功能与Scanner效果一样)
全局工具配置
系统配置
项目配置
Parameterized Trigger plugin(触发器插件)
用于一个项目构建完成后触发另一个项目
Build Pipeline Plugin(流水线插件)
Gitlab Hook Plugin(gitlab勾子插件)
Build Authorization Token Root Plugin(授权令牌插件)
gitlab令牌认证就是webhook,我们是点了如果有push就会执行
buildByToken/build?job=RevolutionTest&token=TacoTuesday
http://192.168.1.105:8080/project/demo-sonr-scan
http://192.168.1.105:8080/buildByToken/build?job=demo-sonr-scan&token=123456
Git Parameter(git参数构建插件)根据标签去发布
gitlab上需要打tag标签
SSH(ssh插件)
jenkins集群
节点管理,新建节点
会自动在设置的目录下载jenkins的slave的jar包
分配到节点
按角色授权
Role-based Authorization Strategy(插件)
全局安全配置
管理用户
添加2个用户,java,php
系统配置里面 Manage and Assign Roles 管理分配角色
分配角色
注意,在local role里面,JAVA-TEAM是没有的,所以用用户去写,比如JAVA,PHP用户即可。
用户java上来只能看到java开头的项目,用户php上来只能看到php开头的项目