zoukankan      html  css  js  c++  java
  • 持续交付工具ThoughtWorks Go部署step 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. 《持续集成-软件质量改进和风险降低之道》

  • 相关阅读:
    mysql之全局查询日志
    使用MySQL Workbench进行数据库设计——MySQL Workbench使用方法总结
    HttpClient工具类
    JSON字符串转换为Map
    Java判断一个日期是否在下周日期区间
    Linux 查看日志文件
    判断一个日期是否为当前日期的前后几天的方法
    Spring-Boot 整合Dubbo 解决@Reference 注解为null情况
    spring注解之@Scope
    Swagger Annotation 详解(建议收藏)
  • 原文地址:https://www.cnblogs.com/mckstt/p/8588899.html
Copyright © 2011-2022 走看看