持续集成

使用gerrit作为代码评审工具

↘锁芯ラ 提交于 2019-11-29 22:57:29
需求描述 其实作为项目代码的maintainer,一直习惯于mailing list + git的代码评审及管理,无奈公司主推敏捷+devops,老板让改用gerrit。硬着头皮切换到gerrit,在这里记录下安装配置的过程及踩过的许多坑,以便网友们以后配置gerrit留作参考。 需求其实很简单,我们项目一直使用公司内部一个类似于github的代码托管网站来托管项目代码,使用邮件列表来评审代码。代码通过评审通过后,我再将patch push到代码托管服务器上去。整个开发流程如下图所示: 现在需要切换到gerrit来作为代码评审工具,以便于能够和jenkins集成,搭建一个集开发、构建、测试、部署为一体的devops系统,结构如下图所示。本文只关注gerrit的搭建。 Gerrit简介 安装步骤 1 . 安装Java. 网上有很多安装java的博客和文章,因此在这里不再赘述,可以参考下面这篇文章: Linux下安装java 2 . 给Gerrit单独创建一个账户 #useradd gerrit #passwd gerrit #su gerrit 3 . 下载gerrit gerrit是在google上托管的项目,翻墙下载比较麻烦,可以在这里下载2.11版本的gerrit: 百度网盘下载Gerrit 将网盘中的两个文件gerrit-2.11.war以及bcpkix-jdk15on

CI Weekly #6 | 再谈 Docker / CI / CD 实践经验

浪子不回头ぞ 提交于 2019-11-29 21:49:42
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关的程序员 Tips 。同步于 flow.ci Blog、微信公众号、 官方微博 , 知乎专栏 , 简书 ,欢迎关注或投稿:) 嗨,上周我们对 iOS/Android 项目持续集成做了比较多的功能优化,同时恢复了对 GitLab 的支持,修复了一些常见问题,详情见 flow_ci changelog ,如有问题可通过「在线消息」或去 Gitter群 及时反馈 :) 下面递上一份新鲜的 CI Weekly,这期收录了关于Docker/CI/CD实践、自动化测试、DevOps相关的国内外技术文章,希望对你有用~ 『 Docker/CI/CD实践 』 Docker容器化应用持续交付实践 本文百度质量部以 网盟合一(零号DSP)项目过程中建立起来的通用容器化交付系统 EMC 为案例,分享了基于Docker的容器化应用持续交付实践经验。(via: 百度质量部 ) 项目DevOps研发云CI实践之路 笔者所在项目在敏捷推进过程中,已经建立了一套以Jenkins为核心的CI持续集成系统,并分享了相关的实践情况经验。(via :中兴开发者社区) 部署流水线搭建小记:Docker、Jenkins

CI Weekly #4 | 不同规模的团队,如何做好持续集成?

若如初见. 提交于 2019-11-29 21:49:29
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关的程序员 Tips 。同步于 flow.ci Blog、微信公众号、 官方微博 , 知乎专栏 , 简书 ,欢迎关注或投稿:) 转眼一周过去了,flow.ci 的 iOS 项目持续集成正在内测邀请中,也有热情的用户写了一篇 flow.ci 初体验!记一次暖心的 iOS 持续集成 ,以供参考! 除此之外,看看 flow.ci 上周的产品更新~ 修复编译任务编号问题; 修复 Ruby 项目 Test 插件 gem 升级引入的问题; 提高 GitHub 代码拉取、Pod 安装更新时的稳定性; 优化项目名称对特殊字符的兼容性. 详细的更新日志见 这里 ,欢迎来 flow.ci官方Gitter群 提出反馈 :) 本期 CI Weekly 整理了不同规模的团队进行持续集成的实践经验、自动化测试、工程师文化等相关的技术分享,一起来看看~ 『 持续集成/持续部署相关实践 』 初创公司应该如何做好持续集成和部署? "最近一段时间一直在梳理项目开发流程以及自动化测试和部署规范,作为一个总结和大家分享,希望有所帮助。"(via : @高效运维 裴双才) 超大型系统的持续集成与持续交付解决方案与阿里宙斯盾

什么是DevOps

混江龙づ霸主 提交于 2019-11-29 19:14:26
什么是DevOps 2018/5/25 前言:aws 这份定义清晰明了,值得回顾。 DevOps 模式定义 DevOps 集文化理念、实践和工具于一身,可以提高组织高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助组织更快地发展和改进产品。这种速度使组织能够更好地服务其客户,并在市场上更高效地参与竞争。 DevOps 的工作原理 在 DevOps 模式下,开发团队和运营团队都不再是“孤立”的团队。有时,这两个团队会合为一个团队,他们的工程师会在应用程序的整个生命周期(从开发测试到部署再到运营)内相互协作,开发出一系列不限于单一职能的技能。 在一些 DevOps 模式下,质保和安全团队也会与开发和运营团队更紧密地结合在一起,贯穿应用程序的整个生命周期。当安全是所有 DevOps 团队成员的工作重心时,这有时被称为“DevSecOps”。 这些团队会使用实践经验自动执行之前手动操作的缓慢流程。他们使用能够帮助其快速可靠地操作和发展应用程序的技术体系和工具。这些工具还可以帮助工程师独立完成通常需要其他团队协作才能完成的任务(例如部署代码或预置基础设施),从而进一步提高团队的工作速度。 DevOps 的优势 速度 高速运转,让您可以更快速地针对客户进行创新、更好地适应不断变化的市场,同时更有效地推动业务成果。DevOps

Maven实战读书笔记(11)

ε祈祈猫儿з 提交于 2019-11-29 19:12:11
敏捷实践之一——持续集成 (Continuous Integration) 1 、 Maven 所实现的自动化构建正是持续集成的一个必要前提 2 、持续集成还要求开发人员使用版本控制工具和持续集成服务器 3 、 Subversion 就是当前最流行的版本控制工具,而 Hudson 则是最流行的开源持续集成服务器软件 什么是持续集成? 持续集成就是快速且高频率地自动构建项目的所有源码,并为项目成员提供丰富的反馈信息 什么叫快速? 集成的速度要尽可能的快,开发人员不希望自己的代码提交半天之后才得到反馈 什么叫高频率? 频率越高越好,例如每隔一小时就是个不错的选择,这样的问题才能尽早地被反映出来 什么叫自动? 持续集成应该是自动触发并执行的,不应该有手工参与 什么叫构建? 包括编译、测试、审查、打包、部署等工作 所有源码是什么? 所有团队成员提交到代码库里的最新的源代码 反馈是什么? 持续集成应该通过各种快捷的方式告诉团队成员最新的集成状态,当集成失败的时候,反馈报告应该尽可能地反映失败得具体细节 一个典型得持续集成场景是这样的 开发人员对代码做了一些修改,在本地运行构建并确认无误之后,将更改提交到代码库。具有高配置硬件的持续集成服务器每隔 30 分钟查询代码库一次,发现更新之后,签出所有最新的源代码,然后调用自动化构建工具 ( 如 Maven) 构建项目,该过程包括编译、测试、审查

什么是 CI/CD?

為{幸葍}努か 提交于 2019-11-29 18:47:12
什么是 CI/CD? 在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语。但它们真正的意思是什么呢? 在本文中,我将解释这些和相关术语背后的含义和意义,例如持续测试Continuous Testing和持续部署Continuous Deployment。 工厂里的装配线以快速、自动化、可重复的方式从原材料生产出消费品。同样,软件交付管道以快速、自动化和可重复的方式从源代码生成发布版本。如何完成这项工作的总体设计称为“持续交付”(CD)。启动装配线的过程称为“持续集成”(CI)。确保质量的过程称为“持续测试”,将最终产品提供给用户的过程称为“持续部署”。一些专家让这一切简单、顺畅、高效地运行,这些人被称为运维开发DevOps践行者。 “持续”用于描述遵循我在此提到的许多不同流程实践。这并不意味着“一直在运行”,而是“随时可运行”。在软件开发领域,它还包括几个核心概念/最佳实践。这些是: 频繁发布 :持续实践背后的目标是能够频繁地交付高质量的软件。此处的交付频率是可变的,可由开发团队或公司定义。对于某些产品,一季度、一个月、一周或一天交付一次可能已经足够频繁了。对于另一些来说,一天可能需要多次交付也是可行的。所谓持续也有“偶尔、按需”的方面。最终目标是相同的:在可重复

基于Jenkins 快速搭建持续集成环境

匆匆过客 提交于 2019-11-29 18:32:45
持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。 持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。 持续集成的核心价值在于: 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量; 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能; 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。 持续集成的原则 业界普遍认同的持续集成的原则包括: 1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等; 2

gitlab+jenkins+maven持续集成自动化部署平台

别说谁变了你拦得住时间么 提交于 2019-11-29 18:32:28
背景:为了改变目前手工发布项目的流程烦锁,耗时,容易出错,浪费人力物力财力,低效的状况,搭建基于docker容器化的git+jenkins+maven持续集成自动化部署平台,实现从代码提交到生产部署的自动化解决方案,把整个开发生产过程流水线自动化,为公司节省人力物力财力,为开发人员省下更多的时间去优化业务功能等。 能够通过自动化构建、测试和发布流程,通过运行一整套,一致的质量检查提高软件更新的速度和质量。从代码提交到应用部署的自动化完整流程,确保只有通过自动测试的代码才能交付和部署,高效替代业内部署复杂、迭代缓慢的传统方式。 一、安装docker yum -y install docker 启动docker 后台服务: service docker start 查看docker版本等详细信息: 二、docker安装gitlab docker pull gitlab/gitlab-ce:latest 创建并启动gitlab容器:首次启动可能比较慢,需要等待一分钟左右的时间。 docker run --detach --hostname X.X.X.X --publish 8099:80 --publish 2222:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab:z --volume

jenkins持续集成

被刻印的时光 ゝ 提交于 2019-11-29 16:40:03
【Jenkins】 Jenkins是一个开源的,提供友好界面的持续集成的(CI)工具; 步骤: 1、下载jenkins,安装; 2、修改jenkins的配置文件jenkins:(修改后需要重启)   1) 修改端口号,默认是8080; 3、jenkins的启动方式:   方式一(命令行):   1)先进入jenkins.war所在的路径;   2)输入:java -jar jenkins.war   方式二(可执行文件):   1)创建.txt文件;   2)输入   echo "jenkins CI automation testing" // 打印   java -jar "D:\jenkins.war"         // 启动   pause // 执行   3) 将后缀名修改为.bat 4、jenkins持续集成:   暂无 来源: https://www.cnblogs.com/hd-test/p/11523213.html

持续集成和docker

喜夏-厌秋 提交于 2019-11-29 16:09:45
现在的持续集成,因为docker技术的成熟,有了长足的进步。 记得我在以前的公司的时候,测试环境还有生产环境的发布都需要组长来发布。有时候,他忙的话,发布就会延后,特别是测试环节,直接影响效率。后来在我的要求下,他把测试环境服务器连接的信息发我。测试环境我可以发布了。但是有时候我也忙,测试也要等我。所以我就想简化发布的流程,可以提高效率。 后来我想用jekins来进行CI(持续集成)。但是由于种种原因,并没有执行。所以我希望在现在的公司可以采用。并且加入docker容器技术来进一步提高效率。 现在的公司,虽然我把发布告诉了组员,但是发现还是挺麻烦的,每次都要打那该死的命令。感觉挺无聊的,也不高效,有时候还是会有搞错的情况,所以需要搭建持续集成的环境。由于web层被我拆分了,这就加大了部署的难度。如果用传统的方式,我需要搭建很多个tomcat,即使我搭建好了,后面的维护和发布也不是特别好的事情。我需要把jekins搭建起来,使部署是一件方便的事情。 首先我需要在自己的电脑的虚拟机上把jekins搭建起来。自己测试通过了,然后再在公司上采用起来。只有把这些机械而单调的事情自动化了,才可以把精力放在更加重要的事情上。 可以用maven插件来帮助这个过程。比如maven-tomcat-plug 。最近了解到一个如同黑科技般存在的东西,那就是capsule