自动化构建的那些事儿:金融网站虚拟案例

介绍

本系列的第一部分讨论了将你的构建和部署流程自动化的部分好处。促使你这样做的理由有很 多:让你的开发者更关注于核心业务而不是流程管理、减少人为因素导致的错误、减少部署花费的时间以及其 它很多原因。无论你的动机如何,自动化你的构建流程永远是正确的回答。

本篇文章中,我们将以一 个虚拟的金融机构的企业网站作为示例,将其构建过程一步步完全自动化。

案例描述

我们的公 司叫做第三国民银行(3rd National Bank),是一家本地商业机构。我们的在线银行应用包括前端web应用层 (ASP.NET),可接入移动应用的RESTful服务层(WebAPI),一系列使用了传统的领域驱动设计方式来分离业 务逻辑、领域对象及数据访问的内部服务层(WCF),以及一台SQL Server数据库。

软件团队使用 Mercurial作为源代码控制系统,并使用特性分支的策略定期交付新特性。该策略为每个新特性或bug创建一个 新分支,分支代码在测试完成后就会合并入主分支等待发布。

在现阶段,所有的构建和部署过程都是 由软件团队手动完成的,导致开发者每周都得花费几个小时,停下手上的编码工作去维护他们的资源库和服务 器。我们在尝试改变现状,尽可能多的将过程自动化。

构建脚本

构建脚本是自动化构建过程的 第一步。脚本的形式可以是多种多样的:可以是shell或者批处理文件、基于XML的文件,或者由现有或定制的 编程语言所写;可以手写或自动生成;也可以完全从IDE环境中隐藏。你的流程甚至可以组合使用多种技术。 在这篇示例中,我们使用NAnt作为构建脚本引擎。

 

在我们的环境中 ,前端web应用、暴露给外部的服务以及内部服务各是一个独立的Visual Studio解决方案,另外SQL数据库也 是一个独立的database解决方案。我们将创建一个主构建脚本文件3rdNational.Master.build,看起来差不多 是这样:

<project name="3rd National Bank" default="build">
   <target name="build">
     <call target="createStagingEnvironment" />
     <nant buildfile="BankDB/BankDB.build" target="build" />
     <nant buildfile="ServiceLayer/ServiceLayer.build" target="build" />
     <nant buildfile="OnlineBanking/WebUI.build" target="build" />
     <nant buildfile="ExternalServices/ExternalServices.build" />
   </target>
</project>

这段脚本没有做什么具体的事,它仅仅是调用了那四个解决方案的构建脚本。每个解决方案都有一 个构建文件,其中包含了编译及准备这一部分应用程序的所有代码。

现在让我们来看一看其中一个解 决方案的构建脚本。每个解决方案都基于相同的基本步骤:准备、编译及暂存。ServiceLayer.build就是一个 基本的编译脚本,它的语法也非常容易理解:

<project name="ServiceLayer">
   <property name="msbuildExe" value="c:\windows\
microsoft.net\framework\v4.0.30319\msbuild.exe" />
   <target name="build">
     <call target="prepare" />
     <call target="compile" />
     <call target="stage" />
   </target>
   <target name="prepare">
     <!-- Implementation omitted -->
   </target>
   <target name="compile">
     <exec program="${msbuildExe}">
       <arg value="ServiceLayer.sln" />
       <arg value="/p:Configuration=Release" />
       <arg value="/t:rebuild" />
     </exec>
   </target>
   <target name="stage">
     <copy todir="../deploy/BankWcf">
       <include name="WcfServices/**/*.svc" />
       <include name="WcfServices/**/*.asax" />
       <include name="WcfServices/**/*.config" />
       <include name="WcfServices/**/*.dll" />
     </copy>
   </target>
</project>

准备步骤可以包括生成AssemblyInfo文件、重编译代理或者任意数量的其它任务。这个例子里的编译步骤 仅仅是简单调用了MSBuild,这是Visual Studio用来编译解决方案的构建引擎。当构建的每一步骤成功后,最 后一步会把生成的文件复制到某个暂存区域,留待之后使用。

对于其它三个解决方案我们也采取同样 的做法,只是基于不同的项目类型作些微调。

编写构建脚本其实和写代码一样,可以通过不同的做法 达到同样的效果。你可以直接使用命令行编译器替代MSBuild,也可以分别构建每个项目文件而不是整个解决 方案,还可以使用MSDeploy来暂存或部署你的应用程序,取代过滤及复制文件的方式。说到底,这取决于你适 应于哪种方式。只要你的脚本能生成一致的结果,怎样编写都可以。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索编译
, 文件
, 脚本
, 解决方案
, 自动化
, 金融数据
, webapi
, 网站的构建
, 一个
前端webapi代码
,以便于您获取更多的相关知识。

时间: 2024-08-26 21:57:35

自动化构建的那些事儿:金融网站虚拟案例的相关文章

基于Node.js的自动化构建工具Grunt.js

Java世界里的Maven提供了强大的包依赖管理和构建生命周期管理.在JavaScript的世界 里,随着Node.js的流行,JavaScript原生的构建工具已经成为可能. Grunt.js是基 于Node.js的自动化任务运行器.Grunt.js结合NPM的包依赖管理,完全可以媲美Maven. Grunt.js天然适合前端应用程序的构建--不仅限于JavaScript项目,同样可以用于其他语 言的应用程序构建.越来越多的JavaScript项目已经在使用Grunt,其中最大的使用者包括著

基于Agile模式的WebSphere Commerce产品的自动化构建与部署框架(3)

使用 WebSphere Commerce Build and Deployment Tool 部署增量代码包 WAS 的部署机制 通过 WCBD 来部署定制化的资源时,WCBD 将调用本地 WAS 接口,通过远程连接 协议与 Remote 端的 WAS 进行通信,并调用远程 WAS 的部署机制进行部署,因此了解 WAS 的部署机制将有 助于读者从本质上了解如何部署增量代码包.WAS 包含三种部署模式:单文件模式.多文件模式和模块文件模 式.针对不同的模式,使用不同的打包方式打包资源.在 WAS

基于Agile模式的WebSphere Commerce产品的自动化构建与部署框架(2)

使用 Rational Application Developer 实现增量代码的构建 自动化增量代码构建流程 自动化构建流程分为多个环节,各环节互为前提条件.本文所介绍的构建 框架将构建过程中的每个环节封装为 Ant 脚本的子任务,通过 Build 主任务来进行调度.关于 Build 主任 务以及构建脚本框架的创建已经在本系列的第 1 部分中进行了介绍,本文主要对代码的构建流程进行详细介 绍.读者可以参考本文的代码示例,完成代码中剩余部分 , 从而实现完整的构建框架.在编写构建脚本时, 读者可

基于Agile模式的WebSphere Commerce产品的自动化构建与部署框架(1)

增量代码的自动构建与部署框架介绍 概念和工具介绍 Agile 与 Delta Code Agile -敏捷开发.近些年开始被人们广泛关注.它 提倡将一个完整的软件版本划分为多个迭代周期.每个迭代实现不同的特性.重大的,优先级高的特性优先实 现,风险高的特性优先实现.在项目的早期就将软件的原型开发出来,并基于这个原型在后续的迭代中不断完 善. Delta Code -增量代码.在 Agile 开发模式中,开发人员基于软件原型不断的编写代码对其进 行完善和扩充.这些代码就称之为增量代码. 本文介绍的

自动化构建:一致性关键之道

介绍 如果有那么一件事软件开发人员很在行(并非引述电影<黑客>),那一定是将通常需要人工完成的任务自 动化.让计算机处理重复乏味的任务将使得大家生活得更轻松,这里我们讨论的是如何让大家专注于他们所关心的事情.然 而,研发团队时常会忽略那个最有帮助的受众-他们自己. 在为数众多的中小型软件作坊中,不存在自动化构建和 发布工具.构建.交付准备环境.代码发布全由手工完成,同样还有运行测试.备份旧版本.新版本打标签以及许多其他重 复的事情.毕竟你可能认为这全是非常简单的工作,集成开发环境通过按钮或快捷

构建iOS持续集成平台(一)自动化构建和依赖管理

2000年Matin Fowler发表文章Continuous Integration[1]:2007年,Paul Duvall, Steve Matyas 和 Andrew Glover合著的<Continuous Integration:Improving Software Quality and Reducing Risk> [2]出版发行,该书获得了2008年的图灵大奖.持续集成理念经过10多年的发展,已经成为了 业界的标准.在Java, Ruby的世界已经诞生了非常成熟的持续集成工具

基于Rational Team Concert和Maven的自动化构建和部署最佳实践

简介:越来越多的项目,特别是 Agile 项目开始使用 Rational Team Concert (RTC) 来管理需求.缺陷和源码.面对多版本.多套环境.多服务器的复杂环境,本文介绍和探讨了如何结合使用 RTC 和 Maven,在 RTC 中统一管理属性配置信息,由 RTC 单点或定时触发,高效地完成 Build 自动化构建和部署实践. 引言 在软件开发中,协调的开发步调和默契的团队协作是提高软件生产效率的关键.IBM Rational 推出的 Jazz 技术就是一个创新的团队协作平台,它集

用Jenkins自动化构建Android和iOS应用

背景 随着业务需求的演进,工程的复杂度会逐渐增加,自动化的践行日益强烈.事实上,工程的自动化一直是我们努力的目标,能有效提高我们的生产效率,最大化减少人为出错的概率,实现一些复杂的业务需求应变. 场景如下,公司现在的测试人员每次需要测试新版本,都需要开发人员打包,放到ftp,测试人员然后从ftp上拷贝到本地(或者用手机的ES文件管理器),再安装.尤其临近发版的一周,几乎每天都要新版本.这样的话,有两方面的影响:第一,打断了开发人员的开发进度;第二,开发人员打包效率低下,尤其是ios,不顺的话,总

基于 Groovy 的自动化构建工具 Gradle 入门(转)

  本人工作之初没有使用自动化构建,后来敏捷了,开始使用 Ant - 完全面向过程的定义步骤,不进行依赖管理.再发展到 Maven,面向对象的方式管理工程,有了依赖的管理,JAR 包统一从中央仓库获得,保存在本地库.同时产生了 Ivy + Ant,让 Ant 也能管理依赖,不过 JAR 包依赖仓库也是用 Maven 的. 前面都是用 XML 来配置的,虽说 XML 的标签描述性也很强,但阅读性还是有些牵强,并且 Maven 和 Ant+Ivy 都需要 IDE 的支持,比如在 Eclipse 中有