持续交付工具ThoughtWorks Go部署step by step

http://blogs.360.cn/360cloud/2014/05/13/%E6%8C%81%E7%BB%AD%E4%BA%A4%E4%BB%98%E5%B7%A5%E5%85%B7thoughtworks-go%E9%83%A8%E7%BD%B2step-by-step/

1. ThoughtWorks  Go简介

Go是ThoughtWorks公司采用 Java 语言研发的一款开源的持续集成和发布的系统,旨在使软件开发企业和团队在构建-测试-发布软件产品的流程自动化,并且能持续地发布软件产品。该产品于2014年2月份宣布基于Apache 2.0开源协议进行开源。其前身是CruiseControl。其官方简介为“Automate and streamline the build-test-release cycle for worry-free, continuous delivery of your product”。

该平台型产品Go,能帮助企业和组织持续改进、集成和交付高质量的产品。竞争日益激烈的商业环境要求企业快速创新的同时,维持核心流程的稳定。Go可以为所有团队提供一个清晰的发布管道,避免低效和冗余。

2. 持续集成/交付

持续集成(Continuous Integration,CI)是一些基本实践,它不是软件开发中最炫目的工作,但软件集成在今天的复杂项目中至关重要。CI作为软件开发的中心工作,因为它通过对每次变更执行构建,保证了软件的健康。如果我们不太关注这次不太炫目的基础工作,例如“整理开发环境、打包构建软件”等等,我们就不得不在将来执行这些低级任务,通常是在最不方便的时间点(例如软件马上就要投入使用之前),这也就是出错的时候(这也就说明现阶段我们大多数时候release一个软件版本,通常伴随着加班加点来处理未知的基础性的一些问题,如配置项修改等等)。保持构建版本“亮绿灯”这一原则,让您不必担心一切是否还正常。这就像锻炼身体,是的,这需要自觉;是的,这可能会带来痛苦,但这能保持您的体型和身体健康,让您能参与更重要的活动,这是值得的。

借用ThoughtWorks公司官方的一张图来说明这一过程:

3. 部署

从官网下载两个安装包:go-server,go-agent。下载页面:http://www.go.cd/download/。我们这里以Linux平台为例进行说明,因此我们下载得到两个rpm包:go-agent-14.1.0-18882.noarch.rpm  go-server-14.1.0-18882.noarch.rpm。

3.1 首先安装go-server

因为是java语言开发的,因此该安装包依赖java运行环境,这里我们选择java包为:java-1.6.0-openjdk。安装完成之后,如果没有错误,go-server会直接启动起来,监听8153端口。我们可以通过url:http://go-server.installed.hostname:8153/go来访问Go平台,在这个平台上可以进行管理、配置、持续构建和交付我们的项目。

配置过程截图如下:

3.2 再安装go-agent

go-agent可以与go-server部署在同一台服务器,也可以部署在不同的服务器上。go-agent安装完成之后,如果没有错误,会有下列提示,告诉我们go-agent的配置和启动方式:

Now please edit /etc/default/go-agent and set GO_SERVER to the IP address of your Go Server.
Once that is done start the Go Agent with ‘/etc/init.d/go-agent start‘

3.3 Go架构设计

Go使用了Server-Agent的模式。Server可以理解为一个Dashboard,用来管理、展示、配置各种项目的Pipeline流程(编译、单元测试、打包、发布等一系列流程),并存放构建出来的Artifacts(存档文件,比如一个war包)。Agent则用来执行具体的构建操作,因为很多项目是有跨平台需求,例如Linux和windows两个平台,甚至Linux平台又分为Centos5.4和centos6.2等等,因此,一个Server可以和多个Agent建立连接,Agent支持多个主流的操作系统平台。详细情况如下图:

3.4 我们的实践例子截图

4. 其他

4.1 go-server的配置文件:/etc/go/cruise-config.xml
4.2 邮件、用户名、密码设置:/etc/go/cruise-config.xml:
  <server artifactsdir=”artifacts” commandRepositoryLocation=”default” serverId=”743624fd-263b-47d2-a2e4-c0cffc8051ec”>
<security>
<passwordFile path=”/etc/go/users.properties” />
</security>
<mailhost hostname=”mail.corp.qihoo.net” port=”25″ tls=”false” from=”go@thoughtworks.com” admin=”weizili@360.cn” />
</server>

参考:

1. http://www.thoughtworks.com/products/docs/go/current/help/

2. 《持续集成-软件质量改进和风险降低之道》

持续交付工具ThoughtWorks Go部署step by step的更多相关文章

  1. 容器时代的持续交付工具---Drone:Drone介绍与安装

    Drone:Drone is a Container-Native, Continuous Delivery Platform. 官方给的定义,从上面的定义可以得出两个关键点: 1,Container ...

  2. 持续集成和持续交付工具-jenkins

    jenkins说明 jenkins是一款由Java编写的开源的持续集成工具,它运行在Servlet容器中(例如Apache Tomcat).它支持软件配置管理(SCM)工具(包括AccuRev SCM ...

  3. 容器时代的持续交付工具---Drone:Drone使用

    上一篇文章里已经介绍了如何安装Drone,下面我们来看下如何使用.还是基于gogs作为git仓储. 首先打开server对应的地址,进入登录页面,输入在启动server时配置的管理员账号(对应的就是g ...

  4. [持续交付实践] 开篇:持续集成&持续交付综述

    前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的 ...

  5. 利用Spinnaker创建持续交付流水线

    在Pivotal Container Service (PKS)上部署软件的方法多种多样,本文重点介绍如何使用Spinnaker在PKS(或任何Kubernetes群集)上进行持续交付. Pivota ...

  6. 用Vagrant和Ansible搭建持续交付平台

    这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...

  7. Jenkins自动化部署-----持续交付【转】

    感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多的实践, ...

  8. 【ZZ】谈谈持续集成,持续交付,持续部署之间的区别

    谈谈持续集成,持续交付,持续部署之间的区别 http://blog.flow.ci/cicd_difference/ 谈谈持续集成,持续交付,持续部署之间的区别 2016年08月03日 标签:beta ...

  9. 持续集成工具Jenkins安装、部署、使用

    本文介绍jenkins,利用其做项目发布与持续集成交付工具. 一.Jenkins是什么? Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布 ...

随机推荐

  1. LatinIME输入法分析

    输入法的设置在res/xml/method.xml的<input-method>标签中,主要设置两个属性: android:settingsActivity,输入法的设置程序入口. and ...

  2. HDU 1054 Strategic Game(树形DP)

    Problem Description Bob enjoys playing computer games, especially strategic games, but sometimes he ...

  3. SVM算法实现(一)

    关键字(keywords):SVM 支持向量机 SMO算法 实现 机器学习 假设对SVM原理不是非常懂的,能够先看一下入门的视频,对帮助理解非常实用的,然后再深入一点能够看看这几篇入门文章,作者写得挺 ...

  4. JTree

    http://www.easyicon.net/ package swing.tree; import java.awt.BorderLayout; import java.awt.Component ...

  5. 试DG周围环境

    试DG周围环境 周围环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 RedHat Enterpri ...

  6. html标和下标应用

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  7. ubuntu,从一个新用户,要转到新用户的命令行操作

    shibo-ubuntu@ubuntu:~$ sudo useradd karen [sudo] password for shibo-ubuntu:  shibo-ubuntu@ubuntu:~$ ...

  8. Android Studio 快捷键整理分享

    Alt+回车 导入包,自己主动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成 ...

  9. Decorator模式设计模式

    装饰者模式定义:动态地将责任附加到对象上. 若要扩展功能.装饰者提供了比继续更有弹性的替代方案. 简单定义:包装一个对象.以提供新的行为. 装饰者模式能够有效应对类爆炸问题. OO原则: 对扩展开放, ...

  10. Vivado的helloword计划(一个):硬件project部分

    硬件平台:ZedBoard 软件平台:vivado2013.3 本演示样例通过综合.实现,生成比特流,发送到SDK实现. 启动vivado而且创建一个项目 依据提示操作一步步创建新项目的时候记得选择R ...