一、持续集成与持续交付

持续集成

什么是持续集成?

软件开发中,集成是一个很可能发生未知错误的过程。持续集成是一种软件开发实践,希望团队中的成员频繁提交代码到代码仓库,且每次提交都能通过自动化测试进行验证,从而使问题尽早暴露和解决。

持续集成的好处是什么?

持续集成可以使问题尽早暴露,从而也降低了解决问题的难度,正如老马所说,持续集成无法消除bug,但却能大大降低修复的难度和时间。

如何做到持续集成?

首先,持续集成需要:

1. 单一的代码仓库,团队成员都像该仓库提交代码;

2. 自动化构建且构建过程需要包含自动化测试;

3. 有单独的集成机器用于构建;

4. 保证构建速度不要太慢(曾经有一个项目构建需要20分钟,就会很痛苦);

5. 在类产品环境进行测试;

6. 能够方便获取最新的可执行程序;

7. 可视化,大家都能看到构建过程及结果;

8. 自动化部署。

其次,我们通过以下步骤进行持续集成:

1. 程序员将代码下载到本地,并在完成修改后提交代码;

2. CI服务器监测代码库,并在有提交时自动触发;

3. CI服务器对代码进行构建,运行单元测试和集成测试;

4. CI服务器发布可部署的artefact用于后续测试,并加上本次构建版本的标签。

5. CI服务器通知团队构建成功或者失败;失败发生时团队需要尽快修复,以免耽搁后续的持续集成过程,因为失败时处于持续集成的暂停阶段。

最后,需要就团队责任达成共识:

1. 频繁提交;

2. 提交之前确保测试通过;

3. 不在持续集成失败时提交代码;

4. 提交代码后保证持续集成成功,不然不准回家😄

持续交付

什么是持续交付?

持续交付是持续集成的扩展,指的是将通过自动化测试的软件部署到产品环境。持续交付的本质是把每个构建成功的应用更新交付给用户使用。在持续交付的世界里,我们对完成的定义不是测试完成,而是交付到客户手中。这里需要注意的是,CD代表持续交付(Continuous Delivery)而不是持续部署(Continuous Deploy),因为部署也包括部署到测试环境,而持续交付代表的是功能的上线,交付给用户使用。

持续交付的好处是什么?

持续交付的好处在于快速获取用户反馈;适应市场变化和商业策略的变化。开发团队保证每次提交的修改都是可上线的修改,那么决定何时上线,上线哪部分功能则完全由产品业务团队决定。

虽然持续交付有显著的优点,但也有不成立的时候,比如对于嵌入式系统的开发,往往需要软硬件的配合。

如何做到持续交付?

1. 保证每次提交的修改都是可上线的修改。

2. 完善的测试(包括单元测试,组件测试,验收测试)来测试新功能和进行回归测试;

3. 持续交付的前提条件是自动化的集成和部署;需要开发/测试/运维人员一起完成。

二、Jenkins安装

首先安装jdk和环境变量

在线安装

第一步:下载
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
第二步:安装
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyyum install jenkins
第三步:配置
vim /etc/sysconfig/jenkins
启动端口,默认为8080
JENKINS_PORT="8080"
修改jenkins目录
将JENKINS_HOME="/var/lib/jenkins" 改成JENKINS_HOME="/data/jenkins"
我这里修改jenkins目录到/data,创建对应的/data目录
mkdir /datacp -a /var/lib/jenkins  /data/
用户修改为root
JENKINS_USER="root"
修改目录权限
chown -R root:root /data/jenkinschown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
第四步:jdk建立软链接
ln -s /usr/local/software/jdk1.8.0_131/bin/java /usr/bin/java
第五步:启动
systemctl start jenkins


离线安装

登录:https://www.jenkins.io/zh/doc/

下载jenkins.war包,可以直接使用java -jar启动,或者下载tomcat启动

修改防火墙权限:使得外网可以访问(8080为默认端口,在实际中选择启动端口)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

使用tomcat启动后,登录

http://IP:8080/jenkins/

直接使用java -jar启动 登录http://172.19.2.91:8080/

从启动日志中查看jenkins的秘钥,填入管理员密码

点击安装推荐的插件

如下插件,缺少的插件如maven相关 git相关,通过系统管理--插件管理手动在线安装

安装git

yum -y install git

全局工具配置

配置git  可执行命令路径

 

Maven的安装,可以执行mvn 打包

 

Jenkins服务器的私钥 公钥配置


1.cd /root/.ssh
生成公钥,私钥
2.# ssh-keygen -t rsa 
按3个回车,密码为空。默认会在 ~/.ssh目录生成两个文件: id_rsa私钥,id_rsa.pub公钥。known_hosts文件会记录ssh密钥登陆的主机列表。
3. 导入公钥到认证文件,更改权限
复制SSH密钥到目标主机,开启无密码SSH登录(目标主机为部署应用的机器)
# ssh-copy-id user@host
在目标主机上更改文件权限
# chmod 700 ~/.ssh 
# chmod 600 ~/.ssh/authorized_keys
4. 测试
本地主机ssh远程服务器
# ssh -v root@远程服务器IP

 

Jenkins的系统配置---公钥

应用服务器:密码为服务器登录密码

凭据配置---jenkins的私钥

/home/maven-3.5.3/conf/settings_hsf.xml

配置maven私服仓库,用来更新依赖的api

搭建安装一个maven私服(依赖的api的jar包)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐