Jenkins 环境配置到项目开发

目录

 什么是持续集成

持续交付(CD)

​编辑

持续部署

持续集成的操作流程

回滚

Jenkins简介

jenkins安装及使用

插件安装

​编辑

配置JDK和Maven

配置ssh

​编辑

部署应用


Jenkins 环境配置到项目开发_第1张图片

 什么是持续集成

持续集成(CI)
持续集成(Continuous integration)指的是频繁地(一天多次)将代码集成到主干。它的好处主要有两个

  • 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
  • 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

Martin Fowler 说过,"持续集成并不能消除 Bug,而是让它们非常容易发现和改正。"Jenkins 环境配置到项目开发_第2张图片

持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
 

持续交付(CD)

持续交付(Continuous delivery)指的是频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。

持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-likeenvironments)中。比如我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

Jenkins 环境配置到项目开发_第3张图片

  在TEST环境测试完,在STAGING类生产环境可能会有各种各样的问题,本版问题,内存条问题,等等

持续部署

持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。、

  • 持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
  • 持续部署的前提是能自动化完成测试、构建、部署等步骤。

持续集成的操作流程

根据持续集成的设计,代码从提交到生产,整个过程有以下几步。

提交

流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(commit)。

测试(第一轮)
代码仓库对commit 操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。

测试的种类:

代码仓库对commit 操作配置了钩子(hook),只要提交代码或者合并进主干,就跑自动化测试。
测试的种类:

  • 单元测试:针对函数或模块的测试
  • 集成测试:针对整体产品的某个功能的测试,又称功能测试
  • 端对端测试:从用户界面直达数据库的全链路测试

第一轮至少要跑单元测试。

构建

通过第一轮测试,代码就可以合并进主干,就算可以交付了。
交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。
常用的构建工具如下:

  • Jenkins
  • Travis
  • Codeship
  • Strider

Jenkins 和 Strider 是开源软件,Travis 和 Codeship 对于开源项目可以免费使用。它们都会将构建和测试,在一次运行中执行完成。

测试(第二轮)

构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面。

第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。

需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高,进入后面的部署阶段后,很可能会出现严重的问题。

部署

通过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包( tarfilename.tar * )存档,发到生产服务器。

生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号链接(symlink)指向这个目录,然后重新启动应用。这方面的部署工具有Ansible,Chef,Puppet等。
 

回滚

一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。(就是类似于软链接指向上个版本)

Jenkins简介

Jenkins,原名Hudson,2011年改为现在的名字,它是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/。
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

特点:

  • 易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
  • 易配置:提供友好的 GUI配置界面;
  • 变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
  • 支持永久链接:用户是通过 web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
  • 集成 E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程中,干别的事情);
  • JUnit/TestNG 测试报告:也就是用以图表等形式提供详细的测试报表功能;
  • 支持分布式构建: Jenkins可以把集成构建等工作分发到多台计算机中完成;
  • 文件指纹信息: Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录;
  • 支持第三方插件:使得 Jenkins 变得越来越强大

jenkins安装及使用

Docker环境下的安装

apt install docker.io
systemctl status docker

apt update      #更新库
sudo apt-get upgrade

下载Jenkins的Docker镜像

docker pull jenkins/jenkins:lts             #最新版本lst

在Docker容器中运行Jenkins   10.0.0.100:8080

docker run -di --name=jenkins -p 8080:8080 -v /mydata/jenkins_home:/var/jenkins_home
jenkins/jenkins:lts

 有可能启动失败,是权限问题啊,用以下命令解决

chown -R 1000 /mydata/jenkins_home

使用管理员密码进行登录,可以使用以下命令从容器启动日志中获取管理密码 

docker logs jenkins

Jenkins 环境配置到项目开发_第4张图片

 cat /mydata/jenkins_home/secrets/initialAdminPassword  #亦可以看到

Jenkins 环境配置到项目开发_第5张图片

 [root@ubuntu2004 ~]#cd /mydata/jenkins_home/    #jenkins的相关目录

安装推荐的插件
Jenkins 环境配置到项目开发_第6张图片

如果失败了几个可以多点几次重试

安装完成后,创建管理员账号
Jenkins 环境配置到项目开发_第7张图片

进行实例配置,配置Jenkins的URL 

 Jenkins 环境配置到项目开发_第8张图片

 至此,Jenkins开始使用

插件安装

Jenkins 环境配置到项目开发_第9张图片

 红色为不建议安装  安装是否成功都可以显示出来:灰色-等待,红色-失败,蓝色-成功

失败多试几次    可以上传插件

Jenkins 环境配置到项目开发_第10张图片

配置JDK和Maven

进入全局配置
Jenkins 环境配置到项目开发_第11张图片

Jenkins 环境配置到项目开发_第12张图片

 Jenkins 环境配置到项目开发_第13张图片

 最后点击保存即可

配置ssh

 ssh目前没有修复,但是我们使用内网部署,不存在这种情况,外网部署的情况需要慎重考虑 

需要创建凭据,先去创建

Jenkins 环境配置到项目开发_第14张图片 

Jenkins 环境配置到项目开发_第15张图片

 之后在配置ssh   可以点击右下角测试写下     保存

Jenkins 环境配置到项目开发_第16张图片

部署应用

先将代码上传至码云(GitHub或Gitab)

有一点需要注意,要将pom.xml中的dockerHost地址改成你自己的Docker镜像仓库地址:
Jenkins 环境配置到项目开发_第17张图片执行脚本准备

在/usr/local/jenkins目录下创建jenkins.sh

#!/usr/bin/env bash
app_name='jenkinsdemo'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker run -di --name=${app_name} -p 7070:7070 test/${app_name}:1.0-SNAPSHOT
echo '----start container----'

给.sh脚本添加可执行权限

chmod +x ./jenkins.sh

在Jenkins中创建执行任务

选择自由 点击确定

Jenkins 环境配置到项目开发_第18张图片

 

Jenkins 环境配置到项目开发_第19张图片

 添加maven构建

Jenkins 环境配置到项目开发_第20张图片

 

 增加构建执行shell

Jenkins 环境配置到项目开发_第21张图片

 Jenkins 环境配置到项目开发_第22张图片

 点击保存,这样任务就好了

可以在这里添加淘宝加速

/mydata/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/maven/conf/settings.xml

你可能感兴趣的:(linux,#jenkins,jenkins,运维)