CICD流程图
代码管理仓库gitlab
- gitlab是个私有的代码管理仓库, 可以运行在企业内部的网络中, 使企业开发人员可以保持代码的私有性; 同时也方便自行管理代码; gitlab有很多CI功能, 但是通常还是采用Jenkins, 原因就是Jenkins的功能要更加强大
gitlab部署:
1.下载epel源
yum -y install epel-release
2.配置yum源
vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
3.更新本地yum缓存
yum makecache
4.安装GitLab社区版
yum install gitlab-ce #自动安装最新版本(若需安装指定版本,则添加版本号即可,即yum install gitlab-ce-x.x.x)
5.自定义域名
vim /etc/gitlab/gitlab.rb
external_url ‘http://gitlab.wxy.com’ -->> 更改为自定义域名
6.初始化gitlab
gitlab-ctl reconfigure #初始化时间较长
…
…
…
Running handlers:
Running handlers complete
Chef Client finished, 543/1455 resources updated in 02 minutes 57 seconds
gitlab Reconfigured!
打开浏览器访问 http://gitlab.wxy.com
gitlab控制命令
修改配置后生效操作 gitlab-ctl reconfigure
查看gitlab服务状态 gitlab-ctl status
开启/关闭/重启服务 gitlab-ctl start/stop/restart
查看gitlab日志 gitlab-ctl tail [component]
初始化后需要修改密码 root登陆
持续集成工具Jenkins
1.jenkins功能
- 持续的软件版本发布/测试项目
- 监控外部调用执行的工作
2.jenkins概念
- Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的开源项目,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成
3.jenkins目地
- 持续、自动地构建/测试软件项目。
- 监控软件开放流程,快速问题定位及处理,提提高开发效率。
4.jenkins特性
- 开源的java语言开发持续集成工具,支持CI,CD。
- 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。
- 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
- 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
- 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
- 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。
5.产品发布流程
- 产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
- 持续集成(Continuous integration,简称CI)
- 持续交付(Continuous delivery)
- 持续部署(continuous deployment)
jenkins部署
安装java环境(jenkins依赖java环境)
解压
tar zxf jdk-8u45-linux-x64.tar.gz
移动至指定目录
mv jdk1.8.0_45/ /usr/local/jdk1.8
配置环境变量
vim /etc/profile
JAVA_HOME=/usr/local/java
export MAVEN_HOME=/usr/local/maven
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
:
JAVA_HOME/lib:
JAVAHOME/lib:JRE_HOME/lib:
C
L
A
S
S
P
A
T
H
e
x
p
o
r
t
P
A
T
H
=
CLASSPATH export PATH=
CLASSPATHexportPATH=JAVA_HOME/bin:
J
R
E
H
O
M
E
/
b
i
n
:
JRE_HOME/bin:
JREHOME/bin:MAVEN_HOME/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官方证书
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
安装jenkins(安装的是最新的LTS版本)
yum install -y jenkins
配置文件
grep “^ [a-Z]” /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins" # jenkins工作目录
JENKINS_JAVA_CMD=""
JENKINS_USER=“jenkins” # jenkinx启动用户
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
JENKINS_PORT=“8080” # 端口
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL=“5”
JENKINS_ENABLE_ACCESS_LOG=“no”
JENKINS_HANDLER_MAX=“100” # 最大连接
JENKINS_HANDLER_IDLE=“20”
JENKINS_ARGS=""
启动jenkins
1.首先需要修改一下启动脚本,文件在/etc/init.d/jenkins
2.因为jenkins的启动脚本默认java路径为:/usr/bin/java
3.但是我们新安装的java路径并不是在这个,所以我们需要新添加路径。如图下所示:
4.新路径地址为:/usr/local/jdk1.8/bin/java
- 启动jenkins
systemctl start jenkins
解锁jenkins
访问本机8080端口
- cat /var/lib/jenkins/secrets/initialAdminPassword
输入密码
5d3f57bea6e546139fc48ea28f9d5ae5
-
web页面配置jdk git maven
-
jdk:可以自动安装,但是已经安装了,这里写入jdk的路径即可
批量部署工具absible
- Ansible是一种自动化的运维工具, 基于Python开发,能够实现批量操作. 但其实Ansible是基于模块工作的, 本身没有批量部署的能力. 真正具有批量部署的是ansible所运行的模块, Ansible只是提供一种框架.
准备清华base源和epel源
ls /etc/yum.repos.d
centos-base.repo epel.repo
下载ansible
yum -y install ansible
使用ansible前之主机认证
ssh-****** -t rsa -P ‘’ -f ‘/root/.ssh/id_rsa’
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
CI/CD总结
最初是瀑布模型,后来是敏捷开发,现在是DevOps,这是现代开发人员构建出色的产品的技术路线。随着DevOps的兴起,出现了持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法。传统的软件开发和交付方法正在迅速变得过时。从历史上看,在敏捷时代,大多数公司会每月,每季度,每两年甚至每年发布部署/发布软件。然而,现在,在DevOps时代,每周,每天,甚至每天多次是常态。当SaaS正在占领世界时,尤其如此,您可以轻松地动态更新应用程序,而无需强迫客户下载新组件。很多时候,他们甚至都不会意识到正在发生变化。开发团队通过软件交付流水线实现自动化,以缩短交付周期
DevOps是什么
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
具体来说,就是在软件交付和部署过程中的提高沟通与协作的效率,旨在更快、更可靠的的发布更高质量的产品。