持续集成

Jenkins初识

白昼怎懂夜的黑 提交于 2019-11-28 10:02:44
1.Jenkins是什么? Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件。Jenkins支持各种运行方式,可通过系统包、Docker或通过一个独立的Java程序。 官网: https://jenkins.io/ 官方文档: https://jenkins.io/doc/ 2.什么是CI&CD? 互联网软件的开发和发布,已经形成了一套标准流程,假如吧开发工作流程分为以下几个阶段: 编码  -->  构建  -->  集成  -->  测试  -->  交付  -->  部署   如上如看到的,[持续集成(Continuous Integration)]、[持续交付(Continuous Delivery)]和[持续部署(Continuous Deployment)]有着不同的软件自动化交付周期。 2.1 持续集成(CI) 上面整个流程中最重要的组成部分就是持续集成(CI) 持续集成: 频繁的(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快的发现其中的错误 持续集成的好处: 1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易; 2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。 持续集成并不能消除Bug

敏捷开发、持续集成/交付(CI/CD)、DevOps

房东的猫 提交于 2019-11-28 07:42:42
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/CrankZ/article/details/81545439 概述 敏捷开发和DevOps都是一种理念。他们的理念相似,都是为了更好更快的发布产品,但又不完全相同。 而CI/CD是实现这两者理念的一种方法。 敏捷开发 前言 传统方式开发前有一份详细的开发文档,程序员照着需求直接敲代码,产品做好了直接部署上线。中间不会有人打扰,需求也不会变。 但是目前的情况是,用户需求和市场都变化太快,就算你前期用户调研的再好,计划书写的再详细,也抵不住市场的变化,说不定产品做出来,用户就不需要了。 所以为了适应市场的发展,我们必须不断提高我们的开发效率,及时跟进用户需求,缩短开发周期。在这种情况下,就有人提出了敏捷开发。 传统开发 传统开发方式的拥护者和敏捷开发方式的拥护者看待软件开发的世界观是不同的。 在传统开发的眼里,软件开发过程是确定的、可测的,只要在一开始努力收集到需要的信息并制定好计划,然后忠实的执行计划就应该可以成功。如果不成功一定是你在一开始就没有做好,没收集到必要的信息,计划做的不好或者执行不到位。然后传统开发方式就试图引入更多的流程,文档,试图让每一步都做到万无一失。 敏捷开发 而在敏捷的眼里世界可不是这样的

jenkins持续集成之邮件配置

喜夏-厌秋 提交于 2019-11-28 02:43:42
一、配置jar包 https://pan.baidu.com/s/1e6su8eOYy5GXKxvpet4uxw 将jar包放置E:\apache-ant-1.9.13\lib(activation.jar、mail.jar) 注:自己的本地ant路径 二、修改build build.xml 文件内容如下,copy一份进去,相关地址需要修改 <?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="F:\apache-jmeter-3.0" /> <!-- 发送给哪些人--> <property name="mail_to" value="zxc1012527160@163.com"/> <!-- 抄送给哪些人,多个用逗号隔开/--> <!--property name="mail_cc" value="++++1@163.com,++++2@163.com"/-->

《jenkins2.x持续集成部署教程》(1)下载安装jenkins

余生颓废 提交于 2019-11-27 17:54:18
Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。 主要用于: 1.持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。 2.监控一些定时执行的任务。 jenkins用来简化项目的发布部署,最近更新比较频繁,我使用官网最新版2.7.1。官网地址: https://jenkins.io/ 一、下载jenkins 下载最新版war包,我们使用tomcat运行,tomcat下载地址: http://tomcat.apache.org/download-80.cgi 二、安装jenkins 拷贝jenkins.war到tomcat的webapps下,运行tomcat即可 访问 http://localhost:8080/jenkins 三、配置jenkins 1、找到jenkins默认管理密码,密码位置看图: 2、选择安装模式 Install suggested plugins(推荐安装)和Select plugins to install(自定义安装) 我们选择推荐安装即可 3、创建管理员账号 4、安装成功 下一节:配置jenkins 来源: oschina 链接: https://my.oschina.net/u/1189224/blog/716641

04: CI(持续集成)/CD(持续交付/持续部署)

拜拜、爱过 提交于 2019-11-27 17:52:25
1.1 持续集成、持续交付 介绍    参考博客: https://www.cnblogs.com/cay83/p/8856231.html   1、传统交付       1. 传统软件的开发与交付的周期都很漫长,从需求的分析、系统的设计、编写测试用例、系统开发、单元测试、组装测试到交付调试。       2. 每一次交付、升级,都需要提供基础的硬件、软件的环境、软件的代码、软件的文档与手册。       3. 工程师都按照之前预演过好多遍的流程,对照着系统的部署手册,一步一步的组装硬件,安装软件,稍有差池,就要按照对应的应急预案进行回滚。        2、技术工程师日常 与 痛点       1)立项,建代码库,申请资源,拉分支写代码,联调测试,发布到线上,设置监控点,质效分析和总结等等       2)这些活动存在于不同的平台,每天在不停的重复,需要不停的和各个团队沟通,不停的做研发平台和技术栈的切换       3)所以我们又回到持续交付的一个原则,如果有一件事让你感觉到痛苦,那么就尽早实现自动化。       4)梳理出规范化的玩法,采用自动化的高效手段,用技术去解决这些让我们感觉头疼的问题。          3、CI 持续集成 与 CD持续交付        持续集成 (Continuous Integration,CI): 代码合并、构建、部署、测试都在一起

Jenkins持续集成教程(一)

醉酒当歌 提交于 2019-11-27 11:18:40
1.目标 1.1 了解jenkins的基本概念 1.2 持续集成的组成部分 1.3 了解jenkins,下载,安装jenkins 1.4 使用jenkins的插件 1.5 jenkins的使用配置 1.6 使用jenkins创建任务并实现自动化集成和部署 1.7 任务状态的监控和邮件通知 2.什么是持续集成(持续集成的基本概念) 2.1 简介 continuous Integration,简称CI。 起因:软件开发复杂度提高,为了团队之间更好的协同工作,保障开发质量。 工作过程:开发人员需经常集成自己的工作成果,每次集成都是通过自动化的构建来完成,包括:自动拉取仓库代码、自动编 译、自动发布、自动测试。为了更快更好的发现问题,提高团队开发效率 大白话:各个开发人员的工作成果不需要在工作一段时间(可能几个星期)后进行将代码集成,jenkins会很频繁的集成代码然后 自动发布测试,能够尽快发现问题。(如果人工集成,集成很耗时耗力,并且集成时间会耗费在开发时间里)。 2.2 核心价值 2.2.1 集成的任意环节都是自动完成,无需人工太多干预 2.2.2 能尽快发现软件的集成问题(因为频繁集成,每一次集成就有可能发现集成问题) 2.2.3 能很快适应需求变更(经常变更需求真的很烦) 2.2.4 减少管理风险 2.3 应用场景 举个例子:小明写个一个月代码,然后合并,花了3天解决冲突

代码库管理案例分析

和自甴很熟 提交于 2019-11-27 08:35:13
前些天参加了公司内一个项目的代码库管理策略的讨论。以前在客户那里做咨询的时候类似的讨论也有很多,但是相对来说客户的情况比较稳定,而且项目与项目之间相似度比较高,所以可选的方式并不多。这一次讨论,因为是发生在ThoughtWorks内部,大家处于完全平等的位置,敞开讨论,反而让原来死板的理论真的活了起来。 背景 CWP是ThoughtWorks内部比较大的一个项目有30多人,当然这跟我们咨询的项目没法比。不过ThoughtWorks比较崇尚小团队,我们认为超过10个人的团队就应该考虑拆分了,这对于项目管理、团队沟通、架构隔离都有好处。项目原来主要关注于一个产品MTX,最近准备加入MTL产品,我们认为这是一个好的时机。MTX和MTL共享一个账户管理的功能。我们想把这个功能抽出来单独成为一个产品——Account Setting,因为未来还有其他的产品也要依赖于这个功能。由于人力资源的限制,Account Setting实际上要放到MTL团队开发,MTX与Account Setting的集成也要放到MTL团队开发。Account Setting的部分功能在MTX中已经实现。 讨论 一个基本的问题是——码库分开还是合在一起。 首先不论是分开还是合在一起都是可以工作的。其次,不论是分开还是合在一起都有相对的劣处。看上去很简单的两点。不事先明确地承认这两点,往往会导致争论陷入僵局。而且

Hexo的版本控制与持续集成

Deadly 提交于 2019-11-27 08:19:50
想必很多人会把Hexo生成出来的静态网站放到GitHub Pages来进行托管。一般发布Hexo博客的流程是,首先在本地搭建Hexo的环境,编写新文章,然后利用 hexo deploy 来发布到Git。那么对于本地的Hexo的原始文件怎么管理呢?如果换电脑了怎么办?如果没有对原始文件进行备份,突然有一天你的本地环境挂了导致源文件丢失,那不就呵呵了。也许你会想到用Dropbox或者其他方案来对源文件进行备份,但是每次更新完博客,需要备份好源文件,然后执行 hexo deploy 进行发布,是不是很麻烦?换了电脑之后又要重新搭建本地环境,是不是很蛋疼? 那么接下来我们就来说说如何优雅愉快地对我们的Hexo进行版本管理和发布。 既然我们已经用了GitHub来托管我们生成出来的静态网站,那么为什么不也把Hexo博客的源文件也host在GitHub上呢。那么问题来了,如果我们把Hexo博客的源文件托管在GitHub上,我们的发布流程就会变为: 执行git push把更新的源文件push到托管源文件的GitHub Repo (我们称之为Source Repo) 执行hexo deploy来更新托管静态网站的GitHub Pages (我们称之为Content Repo) 这样看来,每次更新博客要经历两个步骤,并不是那么straightforward

SonarQube代码质量分析平台介绍

隐身守侯 提交于 2019-11-27 05:59:13
1.使用需求 随着互联网产品迭代越来越快,客户对产品的要求也越来越高,因此如何高质量的交付代码,及时地对代码质量进行分析并给出合理的解决方案就成为了当下必须要解决的一个问题。SonarQube 就是一款初中的代码管理工具,其优势主要体现为:它是一个开源的代码质量管理系统,支持 25+ 种语言,可以通过使用插件机制与 Jenkins 和 JIRA 等其他外部工具集成,从而实现了对代码的质量的全面自动化分析和管理。 2.SonarQube能干什么? 网址:http://www.sonarqube.org/ Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。 简单来说:Sonar主要的功能是分析源代码的编写质量。在项目开发阶段,如何保证开发人员在规定时间内既能完成开发功能

配置sonar、jenkins进行持续集成和代码审查

◇◆丶佛笑我妖孽 提交于 2019-11-27 05:58:13
本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd、checkstyle、findbugs等工具对代码进行持续审查。 一、安装配置sonar 1、Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质 量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、 findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程 进行代码质量管理。 同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。 2、配置数据库 Apache Derby 是Sonar自带并且默认安装使用的数据库,此外Sonar对如下数据库提供支持:MySQL 5.x, Oracle 10g XE, Postgresql, MS SqlServer等,本文以mysql为例介绍如何配置数据库: 1)创建数据库 在mysql中执行如下脚本创建数据库及mysql用户 CREATE DATABASE sonarCHARACTER