CI/CD(持续集成/持续交付/持续部署)
CICD流程图

代码管理仓库gitlab
GitLab 是一个私有的代码存储库,在企业的内部网络上部署非常方便;它允许开发人员保持代码的秘密性的同时也能轻松地进行自我管理。然而 GitLab 提供了许多集成自动化测试工具(CI),尽管如此仍然倾向于使用 Jenkins 软件的原因是因为 Jenkins 的自动化测试能力更为强大。
gitlab部署:
- 获取EPER源
使用yum工具安装EPER源码 - 设置YUM配置选项
编辑YUM的Y Repositories目录
[gitlab-ce]
name: GitLab Collaboration Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el RELEASE_VERSION/
gpgcheck=0
enabled=1
3.更新本地yum缓存
yum makecache
- 配置GitLab社区版
yum install gitlab-ce #默认会下载当前可用版本(如果需要特定版本,则可以指定)
第5步:设置个人域名;vim /etc/gitlab/gitlab.rb;external_url 'http://gitlab.wxy.com' := 更改为个人域名。
6.初始化gitlab
gitlab-ctl reconfigure #初始化时间较长
运行代理:
打开浏览器访问 http://gitlab.wxy.com
GitLab 控制命令
重新配置后自动生效的 GitLab 命令为 gitlab-ctl reconfigure
获取 GitLab 服务状态信息的命令为 gitlab-ctl status
启动/停止/重启功能可通过以下命令实现:start, stop, restart
获取 GitLab 日志信息的命令为 gitlab-ctl tail [组件名]
初始化后需要修改密码 root登陆
持续集成工具Jenkins

1.jenkins功能
- 持续的软件版本发布/测试项目
- 监控外部调用执行的工作
2.jenkins概念
- Jenkins是一款功能全面的应用程序, 支持开展持续集成与持续交付项目, 在任何平台均可使用。
作为一个免费且开源的应用程序, Jenkins能够处理各种类型构建及连续集成过程。
通过整合Jenkins, 则可实现一系列测试与部署技术的应用。
作为软件解决方案, Jenkins则支持开展持续集成。
3.jenkins目地
- 系统性地构建和测试软件项目。
- 实时跟踪软件开放流程,并迅速定位并解决问题以提升整体效能。
4.jenkins特性
- 开源性质的Java语言开发持续集成工具具备基于CI和CD的技术架构。
- 具备便捷的部署配置接口:可以通过rpm yum包管理器安装、提供预装war文件包下载选项以及支持基于Docker的容器化部署。
- 集成RSS/E-mail两种形式的通知机制:当构建完成后发送通知邮件或生成JUnit和TestNG格式的测试报告。
- 分布式构建能力:基于Jenkins平台允许多台服务器同时执行构建与测试任务。
- 智能文件追踪系统:能够自动识别每次构建生成哪些jar文件及其对应版本信息。
- 强大的插件生态系统:团队可根据需求自定义工具功能。
5.产品发布流程
- 产品设计完成 -> 开发团队编写代码 -> 测试团队验证功能 -> 运维团队部署上线
- 持续集成(Continuous Integration, 简称CI)
- 持续交付(Continuous Delivery)
- 持续部署(CD)
jenkins部署
安装java环境(jenkins依赖java环境)
解压
tar zxf jdk-8u45-linux-x64.tar.gz
移动至指定目录
mv jdk1.8.0_45/ /usr/local/jdk1.8
在vim编辑器中配置/etc/profile文件中的环境变量设置如下:
在vim命令行界面下执行以下操作:
设置Java Home目录为/usr/local/java:
java_path=/usr/local/java
启动Java Runtime Environment(JRE)的安装位置为/usr/local/java/jre:
java_home=/usr/local/java/jre
将ClassPath扩展到指定路径:
classpath=.:java_path/lib:java_home/lib:jre_path/lib:classpath export classpath=.:JAVA_HOME/lib:JRE_HOME/lib:CLASSPATH
设置系统路径(PATH)为:
path=java_path/bin:jre_path/bin:/maven_path/bin:path
配置生效
source /etc/profile
查看java版本
java -version
java version “1.8.0_45”
配置Jenkins服务
添加Jenkins源代码库
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
配置Jenkins使用Jenkins官方认证证书的rpm命令,并将此认证添加到指定的URL中
安装jenkins(安装的是最新的LTS版本)
yum install -y jenkins
配置文件
grep ^[A-Z] /etc/sysconfig/jenkins
JENS_JAVA_CMD=""
JenkinxUser=jenkins # Jenkinx启动用户
JENS_JAVA_OPTIONS="-Djava.awt.headless=true"
JenksPort=8080 # 端口
JenksListenAddress=""
JenksHttpPort="", "" // 调用空字符串表示未配置HTTPS服务端口
JenksKeyStore="", "" // 调用空字符串表示未配置HTTPS证书存储位置
JenksKeyStorePassword="", "" // 调用空字符串表示未配置HTTPS证书存储密码
JenksListenAddress="", "" // 调用空字符串表示未配置HTTPS监听地址
DebugLevel=5 # 默认调试级别设置为调试模式(数值范围:从1到9)
AccessLog=no # 是否启用访问日志记录(yes/no)
MaxConns=100 # 最大连接数设置为100个连接数限制(默认值)
IdleConns=20, 2分钟内静默连接数设置为2分钟内静默连接数设置为2个连接(默认值)
Arguments=""
请修改启动脚本文件至/etc/init.d/jenkins

- 启动jenkins
systemctl start jenkins
解锁jenkins
访问本机8080端口

- 检查 /var/lib/jenkins/secrets/initialAdminPassword
请输入密码:
5d3f57bea6e546139fc48ea28f9d5ae5


web页面配置jdk git maven
jdk:可以自动安装,但是已经安装了,这里写入jdk的路径即可



批量部署工具absible
Ansible是一种自动化管理工具,在Python环境中设计完成,并支持大规模操作功能。实际上虽然它依赖于预编好的模块来执行任务但它本身不具备直接进行大规模部署的能力。真正能够完成大规模部署的工作是由ansible运行的各个独立模块共同完成的而ansible则提供了统一的操作界面。
准备清华base源和epel源
ls /etc/yum.repos.d
centos-base.repo epel.repo
下载ansible
yum -y install ansible
使用ansible前之主机认证
ssh-keygen -t rsa -P ‘’ -f ‘/root/.ssh/id_rsa’
ssh-copy-id root@192.168.161.11
ssh-copy-id root@192.168.161.12
ssh-copy-id root@192.168.161.13
CI/CD总结
最初采用瀑布模型;随后转向敏捷开发;如今采用DevOps;这是现代开发人员构建出色的产品的技术路线
DevOps是什么
DevOps(由Development与Operations两个单词合成)是一种强调软件开发人员与IT运维技术人员之间协作文化的活动或实践方式。它通过自动化软件交付流程以及架构变更机制,在提高应用开发效率的同时实现了更高水平的服务可靠性与稳定性保障
具体而言,在软件交付与部署阶段中加强信息交流与团队合作效率的优化目标是为了加快速度并确保发布的及时性和稳定性。
