- CI - Best Practices
- CI - Deployment
- CI - Database
- CI - Inspection
- CI - Testing
- CI - Documentation and Feedback
- CI - Build Failure Notifications
- CI - Defining Tasks
- CI - Creating a Project in TeamCity
- CI - Checking in Source Code
- CI - Building On the Server
- CI - Build Scripts
- CI - Building a Solution
- CI - Requirements
- CI - Features
- CI - Version Control
- CI - Reducing Risks
- CI - Software
- CI - Overview
- CI - Home
Continuous Integration Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Continuous Integration - Quick Guide
Continuous Integration - Overview
2000年首次采用称为Cruise Control的软件。 多年来,不断整合已成为任何软件组织的主要做法。 这是一种发展做法,要求发展小组确保对软件方案的每一编码改动进行建筑和随后的测试。 这一概念旨在解决在建筑生命周期中发现问题迟发的问题。 实行持续融合,而不是孤立地工作的开发商,以确保法典的修改和建设永远不会孤立地进行。
Why Continuous Integration?
不断整合已成为任何软件开发过程的一个有机组成部分。 持续的一体化进程有助于回答软件开发小组的以下问题。
所有的软件组成部分是否应当共同运作? 有时,系统会变得如此复杂,每个组成部分都有多个接口。 在此情况下,它始终必须确保所有软件组成部分相互配合。
守则是否为融合目的过于复杂? 如果持续一体化进程继续失败,则该守则可能过于复杂。 这可能是一个信号,可以采用适当的设计模式,使守则更加复杂和更加可维持。
守则是否遵守既定编码标准? 多数测试案例将永远检查该守则是否遵守适当的编码标准。 通过在自动化建筑后进行自动测试,如果该守则符合所有理想的编码标准,就是一个很好的检查点。
自动化测试涵盖多少代码? 如果测试案例没有涵盖该守则所要求的功能,那么测试法就没有意义。 因此,确保所撰写的测试案例应涵盖申请的所有关键假设情景,始终是一种良好做法。
在最新变化之后,所有测试是否成功? 如果测试失败,那么在着手部署守则方面没有任何意义,因此,如果该守则已准备好进入部署阶段,就是一个很好的检查点。
Workflow
以下图像显示了整个连续整合工作流程如何在任何软件开发项目中发挥作用的快速工作流程。 我们将在随后各章中详细研究这一问题。
因此,根据上述工作流程,这通常是持续一体化进程如何运作。
首先,开发商将守则交给版本控制存放处。 同时,一体化的连续整合服务器建立了机器污染源代码储存库,以进行改动(例如每几分钟)。
连续集成服务器在投入发生后不久发现,版本控制存放处发生了变化,因此,连续集成服务器从存放处检索了该编码的最新副本,然后执行一个包含软件的建筑文字。
连续整合服务器通过电子邮件向特定项目成员提供反馈。
如果项目出入证的修建,则进行单位测试。 如果测试成功,该守则就准备部署到停机或生产服务器。
连续整合服务器继续对版本控制存放处的变动和整个过程重复进行投票。
Continuous Integration - Software
软件部分是任何持续一体化进程的最重要方面。 本章的重点是整个持续一体化进程所需的软件。
Source Code Repository
源代码存放处用于维持所有源代码及其所有改动。 来源代码存放管理的两个最受欢迎的系统是颠覆,Gite是最新的民众系统。 我们现在将研究如何在该系统上安装Gite。
System Requirements
Memory | 2 GB RAM (recommended) |
Disk Space | 200 MB HDD for the installation. Additional storage is required to store the project source code and this is dependent on the source code being added. |
Operating System Version | Can be installed on Windows, Ubuntu/Debian, Red Hat/Fedora/CentOS, Mac OS X. |
Instalpng Git
<Step 3——Cpck theWindowspnk and thedown for Git,将自动开始。
Step 4-Cpcks 下载的Gite.exe文档。 就我们而言,我们正在使用Gite-2.6.1-64-bit.exe文档。 下几张屏幕上显示的Cpck Rug。
Step 5——在以下屏幕上显示的下顿。
安装工作现在将开始,一旦安装完毕,便可随后采取步骤配置Gite。 一旦Gite已经安装,就必须为Gite的初步配置采取配置步骤。 需要做的第一个工作是没收吉特人的身份,然后没收用户名称和电子邮件。 这一点很重要,因为每个Git承诺都使用这一信息,而且这种信息不可避免地被削弱为你开始创造的承诺。 我们可以这样做,迅速开放指挥,然后进入以下指挥系统: 下面的屏幕是更好地了解的一个实例。 这些指挥部实际上将相应改变Gite的配置档案。 为确保你的环境发挥作用,你可以通过发布以下指令,列出Gite配置档案的背景情况。 下面的屏幕显示产出的一个实例。 整个连续一体化管道所需的下一个关键软件是连续一体化软件本身。 以下是该行业使用的最常用的连续集成软件:Configuring Git
git config –global user.name “Username”
git config –global user.email “emaipd”
git config --pst
Continuous Integration Server
上述所有软件都采用了相同的连续一体化模式。 为了这一理论的目的,我们将为连续整合服务器查询Jetbrains TeamCity。
Instalpng TeamCity
以下是在你的计算机中安装喷头脑组群的步骤和系统要求。
System Requirements
Memory | 4 GB RAM (recommended) |
Disk Space | 1 GB HDD for the installation. Additional storage is required to store the build workspace for each project. |
Operating System Version | Can be installed on Windows, Linux, Mac OS X. |
Installation
Step 4-Cpck the "I Agree'thton to receive the accreditation agreement and processing the facipties.
这将启动安装过程。 一旦完成配置进程,将随之进行。
Configuring TeamCity
安装完毕后,下一步是组群的配置。 该软件可以在浏览器中浏览以下的URL。
然后,团队将处理所有必要的步骤,以启动和运行。
Step 3——下面请您接受许可协议。 接受同样,继续点击。
现在,你将陷入团队精神。
The Build Tool
建设工具是一种工具,可确保以某种方式建立该方案。 该工具通常将执行一份任务清单,为以适当方式建立该方案而需要这些任务清单。 由于我们将研究一个.Net program,我们将把MSBuild作为建筑工具。 MSBuild工具研究一份建筑文件,其中载有用于建设该项目的任务清单。 让我们研究一个典型的网络配置项目建筑档案。
以下是建筑档案的关键部分,需要加以考虑。
IIS Settings
在使用环境确定哪些是港口号码、网络服务器上的道路是什么以及在应用时需要何种认证。 这些都是重要的环境,在我们学习如何稍后在教学中进行部署时,将通过国际会计准则理事会的上级指挥加以改变。
<UseIIS>True</UseIIS> <AutoAssignPort>True</AutoAssignPor> <DevelopmentServerPort>61581</DevelopmentServerPort> <DevelopmentServerVPath>/</DevelopmentServerVPath> <IISUrl>http://localhost:61581/</IISUrl> <NTLMAuthentication>False</NTLMAuthentication>
ItemGroup
用于向建筑服务器说明管理该项目所需的所有依赖的二元。
<ItemGroup> <Reference Include = "System.Web.ApppcationServices" /> <Reference Include = "System.ComponentModel.DataAnnotations" />
<ItemGroup> <Compile Include = "App_StartBundleConfig.cs" /> <Compile Include = "App_StartFilterConfig.cs" />
.Net Framework Version
TargetFrameworkVersion 说 明 该项目需要具备的网络。 这样做是绝对必要的,因为如果建筑服务器没有安装,建筑就会失败。
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
Deployment Environment – Amazon
为了这一理论的目的,我们将确保我们的连续一体化服务器能够把我们的申请部署到亚马孙。 为此,我们需要确保具备以下艺术品。
Database Server
采取以下步骤,确保数据库服务器在亚马孙部署。
代表全权证书。 请注意,你可在亚马孙网站上申请免费补助,使你能够有一个免费的等级,使你能够免费使用亚马孙的一些资源。
Step 4-Cpck the Launch DB Options in the next Screen that come. Step 5 - Choose the服务器 tab, 然后选择“选择”服务器快车。 Step 6——确保输入以下细节,确认你正在使用亚马孙免费提供的免费数据库。 Step 7-Cpck the Next 一旦所有领域都填满,则步纽。 一段时间后,上述屏幕的状况将有所改变,以通知已成功设立了非银场。 下一步是在亚马孙建立你的网络服务器,提供网络应用程序。 可以通过随后的步骤做到这一点。 代表全权证书。 请注意,您可在亚马孙网站上申请免费补助,使您能够有一个免费的等级,使你能够免费使用亚马孙的一些资源。 Step 2 - Go to EC2 section,用于创建你的网络服务器。 Step 4-CpckWindows - MicrosoftWindows 2010 R2 Base。 Step 5——选择t2.micro,这是自由等级的一部分。 浮油 Next: Configurease details。 Step 6——在接下来的屏幕上接受缺省环境,然后选择Next:Add Deposit。 Step 7——在下一次屏幕上接受缺省环境,并选择Next: Tagase。 Step 8——接受下屏幕上的缺省环境,并选择Next: Configure Security Group。 Step 9——接受下屏幕上的缺省环境,并选择 审查和发射。 现在将在亚马孙建立这一榜样。 有一些机会会错过项目。 通过有效地实施 CI,你发现在每一步骤中发生的事情,而不是在项目进入发展周期之后发生。 CI帮助你确定并减轻风险,从而更容易根据具体证据评价和报告项目的健康状况。 本节将集中探讨通过不断融合可以避免的风险。 在任何项目中,有许多风险需要加以管理。 通过提前消除发展生命周期中的风险,这些风险在系统实际运行后会发展成问题的可能性较小。 “在我的机器上工作,但不在另一台机器上工作” 这可能是任何软件组织中遇到的最常见的短语之一。 由于对软件所做的改动数量每天都在增加,有时对软件的建设是否实际可行缺乏信心。 这一关切有三个方面的影响。 对我们是否甚至能够建造软件几乎没有信心。Web Server
Continuous Integration - Reducing Risks
Risk 1 – Lack of Deployable Software
在内部(即测试小组)或外部(即客户)交付软件之前的宽度整合阶段,在此期间没有做其他工作。
无法生产和复制可检测的建筑。
Solution
消除民主选举学会与建筑工序之间的紧张关系。 只使用一台单独的机器来整合软件。 确保在版本控制储存库中包含你建造软件所需的一切。 最后,建立持续融合制度。
连续整合服务器可以观察版本控制存放处的变动情况,并在发现对存放处的变更时管理项目建档。 不断整合系统的能力可以提高,包括进行试验,进行视察,并在开发和测试环境中部署软件;这样,你总是有工作软件。
“可与数据库同步”——有时开发商无法在开发过程中迅速重新检索数据库,因此难以进行改动。 这常常是由于数据库小组与发展小组之间的分离。 每个小组将侧重于自己的责任,彼此之间几乎没有合作。 这一关切有三个方面的影响:
担心改变数据库或源代码,或对其加以调整。
难以用不同测试数据储存数据库。
难以维持发展和试验环境(例如发展、一体化、QA和测试)。
Solution
以上问题的解决办法是,确保把所有数据库工艺品列入版本的控制储存库。 这意味着需要调整数据库图谱和数据:需要数据库制作文字、数据操纵文字、储存程序、触发器和任何其他数据库资产。
通过放弃和重开你的数据库和表格,重新购买你的建筑文字数据库和数据。 其次,适用所储存的程序和触发因素,最后插入测试数据。
测试(和检查)贵国数据库。 通常,你将使用部件测试来测试数据库和数据。 在某些情况下,你需要撰写具体数据库的测试。
Risk 2 – Discovering Defects Late in the Lifecycle
由于多种开发商经常对源代码进行大量修改,因此总是有可能在法典中引入一种缺陷,而这种缺陷只能在稍后阶段发现。 在这种情况下,这可能产生巨大影响,因为软件中后来发现了缺陷,消除缺陷的成本越高。
Solution
例如,如果你有一个需要测试的标志性屏幕,那么你就没有一个能够成功标识的测试案例。 如果用户使用不同的用户名称和密码组合,则需要有一个负面的测试案例,然后需要看到这种情景发生的情况。
Risk 3 – Lack of Project Visibipty
手册通信机制需要进行大量协调,以确保及时向适当的人民传播项目信息。 接手到你们旁边的开发商,让他们知道,最新的建筑是共同的驱动力,是相当有效的,但是它并没有很好地缩小规模。
还有哪些其他开发商需要这种信息,他们正在休息或以其他方式无法得到? 如果服务器倒塌,你会怎样得到通知? 有些人认为,他们可以通过人工发送电子邮件来减轻这一风险。 然而,这不能确保信息在适当的时候传递给适当的人,因为你可能意外地离开有关各方,而有些人当时可能无法使用他们的电子邮件。
Solution
解决这一问题的办法再次是连续整合服务器。 所有的电离层服务器都有在电离层故障时启动自动电子邮件的设施。 通过向所有关键利益攸关方发出这一自动通知,还确保每个人都掌握软件目前的状况。
Risk 4 – Low Quapty Software
存在缺陷,因此存在潜在的缺陷。 如果你的软件设计不完善,或不符合项目标准,或难以维护,那么你就可能存在潜在的缺陷。 有时,人们将这种说法称为法典或设计工具,“一种可能错的症状。 ......
有些人认为,低质量软件只是推迟的项目费用(交付后)。 这可能是一个推迟的项目费用,但在你向用户提供软件之前,它也会导致许多其他问题。 过于复杂的代码、不遵循结构的代码和重复编码,通常会导致软件出现缺陷。 在出现缺陷之前发现这些代码和设计工具可以节省时间和金钱,并可导致高质量的软件。
Solution
有一些软件部件进行编码质量检查,可以与 CI软件相结合。 可以在守则建立之后进行,以确保守则实际上符合适当的编码准则。
Continuous Integration - Version Control
版本控制系统,也称为源头控制、源代码管理系统或修订控制系统,是保存多种版本的您档案的机制,这样,在你修改档案时,你仍然能够查阅以前的修订。
第一个受欢迎的版本控制系统是称为SCCS(Source Code Control System)的专用UNIX工具,可追溯到1970年代。 修订控制系统RCS,后改为CVS。 并行版本系统。
现在使用的最受欢迎的版本控制系统是颠覆和Git。 让我们首先看一下为什么我们需要使用一种版本的控制系统,然后看看一下把我们的源代码放在Git源代码储存系统。
Purpose of the Version Control System
我们使用该术语控制而不是源头控制的一个原因是,版本控制不光是来源代码。 与创建你的软件有关的每一种单一工艺都应受到版本控制。
相关艺术品 每个系统都将有与源代码有关的手工艺品,如数据库文字、制作和部署文字、文件、图书馆和组合文件,供您使用、编辑和收集工具等。 所有这些都赞扬整个发展和部署进程,也需要储存在版本控制系统中。
通过储存所有用于源控制的信息,更便于重新确定您应用的测试和生产环境。 这应包括用于您应用软件的配置信息以及构成环境的运行系统、国家航天中心区档案、防火墙配置等等。
最起码,你们需要一切必要的手段,才能重新确定申请的双轨和运行的环境。 目的是在项目寿命的任何时刻,以控制的方式储存一切可能的变化。 这使你能够在项目历史的任何时刻,从发展环境到生产环境,恢复整个系统的状况。
保留发展小组发展环境的配置文件,使之掌握版本,甚至是有益的,因为这使团队中的每一个人都很容易利用同样的环境。 分析员应储存要求文件。 测试者应当保持其测试文字和程序的版本控制。 项目经理应节省他们的释放计划、进度表和风险记录。
简言之,小组每个成员都应储存与项目文本控制相关的任何文件或档案。
Working with Git for Source Code Versioning Control System
本节现在将重点讨论如何将吉特用作一种版本控制系统。 它将侧重于如何将你的守则上载到新的控制系统并管理其变化。
Our Demo Apppcation
为此,我们将研究一个简单的Web ASP.Net申请,供整个持续一体化进程使用。 我们不需要把重点放在这项工作的整个法典细节上,而只是概述该项目对理解整个持续一体化进程而言是足够的。 这一网络应用是利用Visualroom Integrated Development Environment建立的。
下面是演播室视觉环境中解决办法的结构。 这是一个非常简单的网络应用,主要代码载于Demo.aspx文档。
The Code in the Demo.aspx file is reflected in the following program -
<html xmlns = "http://www.w3.org/1999/xhtml"> <head runat = "server"> <title>TutorialsPoint</title> </head> <body> <form id = "form1" runat="server"> <span><%Response.Write("Continuous Integration"); %></span> </form> </body> </html>
守则非常简单,只是把“持续一体化”赋予浏览器。
当你在谷歌管理该项目时,产出将如以下屏幕所示。
Moving Source Code to Git
我们将展示如何将源代码从指挥线接口移至吉特,使最终用户更清楚地了解如何使用吉特。
现在可在Gite找到你的解决办法。
Continuous Integration - Features
以下是持续融合的一些主要特征或做法。
Automate the Building - 软件的建设应以能够自动化的方式进行。 如果需要采取多种步骤,那么建筑工具就必须能够这样做。 对Net而言,MSBuild是缺省建筑工具,而基于 Java的应用,你拥有Maven和Grupt等工具。
加速建造 大楼应分几分钟。 建造工作不应花几个小时,因为这意味着建筑步骤没有适当配置。
生产环境中的Test印—— 建设环境的性质应接近生产环境。 如果这些环境之间存在巨大差异,那么就会出现这样的情况:即使建筑服务器上出现,该建筑在生产上可能失败。
Continuous Integration - Requirements
以下是持续融合的最重要要求清单。
Check-In regularly- 持续整合以适当开展工作的最重要做法是经常对源代码存放地或主线进行检查。 守则的核对至少应当每天两次。 定期检查会带来很多其他好处。 这使得改变规模较小,因此不太可能打破建筑。 这意味着,在随后的任何建筑中发生错误时,软件的最新版本将重新公布。
它还有助于更严格地规范重任法典,并坚持维持行为的小改动。 它有助于确保改变许多档案的改变不太可能与其他人的工作发生冲突。 它使开发商能够更有探索性,试图通过回到最后的版本来消除想法和抛弃这些想法。
通常在连续结合中进行3类测试,即unit检测,部件检测和接受检测。
编写单位测试,以测试你与外界隔绝提出的少量申请。 他们通常不能启动整个申请。 他们没有打到数据库(如果你的申请有的话)、档案系统或网络。 他们并不要求你的申请在类似生产的环境中进行。 单位试验应当非常快——即使申请大,你的全部试样也应能够在10分钟内运行。
部分测试测试了你申请的几个组成部分的行为。 与单位测试一样,它们并不总是要求从整个申请开始。 但是,他们可能打上数据库、档案系统或其他系统(可能被搁置)。 部分测试通常需要较长的时间。
人民将停止全面建造,并在检查前进行试验。 你们将开始建设更多的失败。
持续的一体化进程需要这么长时间,才能在你能够再次管理建筑之前作出多重承诺,因此,你不知道哪里打断了建筑。
人们将进行较少的检查,因为他们必须坐在等待软件建造和进行测试的几岁左右。
如果我们的一位同事做了检查,并因此打断了建筑,那么,他们最好能安抚它,那么他们就需要明确处理这个问题。 当这一规则被打破时,将建筑固定起来必然需要更长时间。 人们利用来看到建筑被打破,而且非常迅速地进入建筑中断了所有时间的局面。
Continuous Integration - Building a Solution
各种方案拟定语言都有各种建筑工具。 一些最受欢迎的建筑工具包括:Ant for Java和MSBuild for .
因此,我们需要一个开始的建设进程。 对于开端人来说,对于连续的一体化服务器来说,建筑过程应当易于工作,而且应当能够顺利实施。
让我们举一个简单的例子,说明建筑档案可以找到什么。 净额
<?xml version = "1.0" encoding = "utf-8"?> <project xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name = "Build"> <Message Text = "Building Project" /> <MSBuild Projects = "project.csproj" Targets = "Build/>" </Target> </project>
有必要注意到上述法典的以下方面:
具体目标以建筑名称标明。 在什么地方,目标就是收集在建筑过程中需要实施的合乎逻辑的步骤。 你们可以有多个目标,在目标之间有依赖性。
在我们的目标中,我们保留着在建设进程开始时将显示的选项信息。
MSBuild mandate 用于说明: 需要建立净项目。
以上的例子是一个非常简单的建筑档案。 在不断融合的过程中,确保这一档案不断更新,以确保整个建筑过程畅通。
Building a Solution in .Net
缺省建设工具。 Net是MSBuild,是用“Net”框架运输的。 根据你的系统框架,你将拥有相关的管理系统建设版本。 例如,如果有的话。 安装在违约地点的净框架,请查询MSBuild.exe。 在以下地点存档:
C:WindowsMicrosoft.NETFrameworkv4.0.30319
让我们看看我们如何建设我们的样本项目。 让我们的Sample项目位于一个称为C:DemoSimple的夹中。
为了利用微型信贷机构建设上述解决办法,我们需要迅速开放指挥系统,并采用以下方案所示的微型信贷机构备选方案。
msbuild C:DemoSimpleSimple.csproj
在上述例子中,csproj是具体针对项目档案。 净额。 csproj案包含所有相关信息,以确保软件能够适当建造所需的信息。 下面是MSBuild指挥部产出的筛选。
只要建筑工程成功,不存在错误,你就不必担心产出警告。
Continuous Integration - Build Scripts
现在,请看MSBuild档案的某些方面,看它们的含义。 这些方面很重要,可以从持续融合周期中了解。
建造文字是为了建立解决办法,而解决办法将成为整个持续一体化周期的一部分。 让我们看一下作为视频演播室一部分在.Net为我们的样本解决方案而创建的一般建筑文字。 建筑文字相当庞大,即便是简单的解决办法,我们也会走到其中最重要的部分。 定时,建筑设计书将存放在一份档案中,名称与“视力”网站的主要解决方案相同。 因此,就我们而言,如果你打开文件,Simple.csproj,你将看到将用来建立解决办法的所有环境。
依赖于使用的MSBuild版本—— 以下设施将使用在CI服务器上安装的MSBuild文档。
<VisualStudioVersion Condition = " $(VisualStudioVersion) == ">10.0</VisualStudioVersion> <VSToolsPath Condition = " $(VSToolsPath) == "> $(MSBuildExtensionsPath32)MicrosoftVisualStudiov$(VisualStudioVersion) </VSToolsPath> <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <Import Project = "$(MSBuildBinPath)Microsoft.CSharp.targets" /> <Import Project = "$(VSToolsPath)WebApppcations Microsoft.WebApppcation.targets" Condition = " $(VSToolsPath) ! = " /> <Import Project = "$(MSBuildExtensionsPath32)MicrosoftVisualStudiov10.0 WebApppcationsMicrosoft.WebApppcation.targets" Condition = "false" />
适当建立解决办法所需要的文件——ItemGroup 标签将包含所有必要的内容。 项目成功建立所需的净文档。 这些档案需要相应地在建筑服务器上居住。
<ItemGroup> <Reference Include = "Microsoft.CSharp" /> <Reference Include = "System.Web.DynamicData" /> <Reference Include = "System.Web.Entity" /> <Reference Include = "System.Web.ApppcationServices" /> <Reference Include = "System.ComponentModel.DataAnnotations" /> <Reference Include = "System" /> <Reference Include = "System.Data" /> <Reference Include = "System.Core" /> <Reference Include = "System.Data.DataSetExtensions" /> <Reference Include = "System.Web.Extensions" /> <Reference Include = "System.Xml.Linq" /> <Reference Include = "System.Drawing" /> <Reference Include = "System.Web" /> <Reference Include = "System.Xml" /> <Reference Include = "System.Configuration" /> <Reference Include = "System.Web.Services" /> <Reference Include = "System.EnterpriseServices"/> </ItemGroup>
哪些是需要使用的网络服务器环境—— 当我们访问我们不断部署的专题时,你将看到,将如何利用国际会计准则理事会来压倒这些环境,并将之部署到我们选择的服务器。
<UseIIS>True</UseIIS> <AutoAssignPort>True</AutoAssignPort> <DevelopmentServerPort>59495</DevelopmentServerPort> <DevelopmentServerVPath>/</DevelopmentServerVPath> <IISUrl></IISUrl> <NTLMAuthentication>False</NTLMAuthentication> <UseCustomServer>False</UseCustomServer>
CI - Building On the Server
下一个重要步骤是确保解决方案建立在建筑服务器之上。 第一部分是手工步骤,因为在使用持续一体化工具之前,我们首先必须确保以与客户机器相同的方式利用建筑服务器。 为此,我们必须采取以下步骤:
Step 1——向服务器提交整个解决方案文件。 我们建立了一个亚马孙神学院服务器,作为我们的建筑服务器。 因此,在服务器上向整个.Net服务器提供人工拷贝。
Step 2——确保这一框架出现在服务器上。 如果您在用户机器的4.Net框架中汇编了你的申请,那么你必须确保其安装在服务器上。 因此,要到您的服务器上C>:WindowsMicrosoft.NETFramework,并确保有理想的框架。
因此,它像我们一样,看到了一个错误。 持续融合方面有一个重要的教训,需要确保建筑工程建立在建筑服务器上。 为此,你需要确保在建筑服务器上安装所有先决条件软件。
对于Net,我们需要安装一个称为Visualroom Redistributable Tool的部件。 该一揽子计划载有在服务器上开发的.Net申请所需的所有必要档案。 因此,在建筑服务器上安装以下安装步骤。
Step 4 - Double-cpck the executable file tostart the facipties.
现在,我们可以看到,解决办法已经适当建立,我们也知道我们的基线项目是在服务器上正确建造的。
CI - Checking in Source Code
下一个关键方面是确保将我们的基线编码检查到我们的源代码储存管理服务器,即吉特。 为此,我们需要遵循这些步骤。
Step 1—— 启用储存库,以便能够上载到Gite。 这项工作是在git的指挥下进行的。 因此,你需要走到你的项目中,并发布git init的指挥。
CI - Creating a Project in TeamCity
既然我们在吉特存放处有源代码,而且我们所有最初的代码都在建筑服务器上工作,那么现在就应该在我们连续的一体化服务器中建立一个项目。 可以通过下列步骤做到这一点:
将行政证书和标识输入服务器。
提到科索沃统计局的类型。
给科索沃安全机构一个名字,这可以是任何友好的名称。 我们的国名是App。
Give the Fetch url as C:DemoSimple - 现有专用储存库。
如果你打上屏幕,你将获得测试连接塔顿。 点击,以确保你能够成功地与吉苏达库连接起来。
Step 7-Cpck Creat, 您现在将看到您的存放处登记如下图所示。
Step 11——现在,在座的下一个屏幕上,我们需要混淆建筑步骤。 因此点击了“configure”的超链接。
选择Runer型为MSBuild。
换代号。
引用需要建立的文件名称。 当我们在前面几节中具体说明管理系统建设时,我们通常看到我们选择了Simple.csproj。 这里也需要说明同样的情况。
• 选择MSBuild版本为“Microsoft Building Tool2013”。
选择MSBuild ToolVersion为12.0。
将网页上降为“拯救儿童”设施。
您将看到你的申请现已开始。
你们应当获得一个成功的屏幕,这是一个很好的迹象,表明你的解决办法正在适当建立。
您还可以到您的建设记录中去看连续整合服务器涵盖的所有步骤,详情如下:
Continuous Integration - Defining Tasks
现在,我们在吉特有基地代码,并与持续一体化服务器有联系,最后是看到行动持续一体化的第一步的时候了。 通过确定连续一体化服务器(例如触发器)的任务,使整个连续一体化进程尽可能顺畅。 让我们改变我们在视觉演播室的代码。
我们现在需要确保,我们法典的每一改动都应促使我们不断一体化的服务器建立起来。 为此,我们需要作以下改动。
Step 5 -Cpck Show Superior Options,并确保选定以下屏幕上所示备选办法:
Step 8——现在发布git 承诺指挥,并将把改动推向吉苏。
如果见Changelog Tab,请见git comment。 这引发了建筑。
让我们再一次尝试。 让我们对Demo.aspx文档做另一改动。 让我们执行git Add 指挥和控制 发出以下承诺信息。
你们现在将看到,在团队精神项目仪表板上自动启动一个建筑。
该建筑将展示一个成功的信息。
您现在将看到“第二承诺期”的信息,该信息是在对git 储量/b>作出承诺时使用的。
我们现在成功地完成了持续一体化进程的第一部分。
CI - Build Failure Notifications
“建筑故障通知”是一旦建筑失败就启动的事件。 当建筑失败时,通知发给所有关键人物。 在这种情况下,首先要做的是,确保时间用在失败的建筑上,以确保建筑经过。 采取了以下步骤,以确保建筑通知在团队中实施。
以下是在团队中设立电子邮件通知的步骤。
Step 1-In TeamCity, go to You Project dash板, Point on Administration in the high right上手角。 然后,请见电子邮箱:Notifier左侧链接。 Cpck on this connection to cuing the general context for Email.
Step 2——下一步是输入有效SMTP服务器的细节。 Gmail 提供免费的员工和管理当局协调署设施,任何人都可以使用。 因此,我们可以在下面的屏幕上看到这些细节。
SMTP Host – smtp.gmail.com
SMTP port no – 465
Send email messages from and SMTP login – This should be a vapd Gmail id
SMTP password – Vapd password for that Gmail id
Secure connection – Put this as SSL
Step 5——创建新的用户。 输入所需用户名和密码。 然后,Cpck the Creatuser button, which will be found at the Worst of the Screen.
<6Step 6——现在与这一新的用户口和密码一道在团队系统中登录。
Step 7——在您登录之后,将介绍用户的一般环境。 在Email Notifier区,点击Edit。
Step 9——在添加新的规则时,选择以下两种选择,然后点击S Save。
从选定项目建设—— 选择民主项目。
可查阅“Build”检查箱。
通过使这两个备选办法得以实施,目前一旦建筑工程失败,将向用户发送电子邮件通知——demouser。
Step 10——现在,让我们开始错觉,以采取行动。 在视觉演播室,读到demo.aspx.cs文档并添加一条错误的代码。
Step 11——现在通过做git Add和git承诺,从Gite抽查。
现在,在“Dash”项目中,大楼将自动启动,你将看到,如以下屏幕所示,大楼将失败。
如果你在demouser的电子邮件上登录,你将实际看到一份建筑故障通知,如以下屏幕所示。
CI - Documentation and Feedback
持续融合的一个关键方面是,始终要看建筑如何运作,收集重要衡量标准,记录这些成果,并通过不断建设不断产生反馈。
建立这些衡量标准有什么好处?
< Not Committing Code Enough——如果开发商不经常向版本控制存放处投放代码,原因可能是一体化进展缓慢。 为了开始缩短施工时间,对一体化进行高级别分析,以建立环境,确定瓶颈。
其次,分析调查结果并确定最适当的改进,然后试图改变建筑过程,以减少建筑工程的期限。 最后,重新评估建筑期限,以确定是否需要进一步改进。
改进测试性能——即使在运行良好的 CI系统中,通过实施自动测试,将占用大部分一体化建设时间。 评估和改进这些测试的性能,可以大大缩短时间。
地理分布分散的系统以及不可靠的硬件或软件也可能引发绩效问题。 调查和改进任何基础设施资源,以减少建筑期限。
Metrics
下面是连续整合服务器中可使用的一些衡量标准。
让我们看一看团队必须提供什么——
最简单的衡量方式之一是项目仪表板上可得到的信息。 这里的关键要素是指出每一建筑的期限。 如果每个建筑的期限开始与正在制订的法典格格格格不入,那么这个问题就是一个问题。 因此,可以得出一个反馈意见,其原因可能是,CI服务器在资源上很低,而且可能需要加强服务器的能力。
团队委员会有设施,可以了解 CI服务器是否实际上在基础设施方面有任何问题。 在City公司admin dash板上,可点击Disk Usage,看看每座建筑消耗多少磁盘。
如果需要更多的细节,那么团队委员会就拥有diagnostics button,这可提供更多信息,介绍中央服务器正在使用的CPU和“记忆。
Detailed View of Build Metrics
如果人们想要看到一段时期对某个特定项目的建筑的详细看法,那么作为该项目的一部分即可得到。 在项目建造屏幕上,将前往统计屏幕上,这将提供各种统计数据和图表,说明建筑如何运作。
Continuous Integration - Testing
持续一体化的关键特征之一是确保正在进行的测试。 持有由CI服务器建立的所有代码。 在由CI服务器进行建筑后,必须确保测试病例到位,以测试所需代码。 每个电算中心服务器都有能力作为CI套件的一部分进行单位测试。 在.Net,单位测试是.Net>框架所固有的特征,同一内容也可并入CI服务器。
本章将研究我们如何能够在.Net上界定一个测试案例,然后让我们的团队服务机在建筑完工后管理这一测试案例。 为此,我们首先需要确保我们对我们的样本项目进行单位测试。
为此,我们必须非常谨慎地遵循随后的步骤。
Step 2——将类别的名称改为Tutorial.cs,并在屏幕底部点击Addutton。
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Simple { pubpc class Tutorial { pubpc String Name; pubpc Tutorial() { Name = "Continuous Integration"; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Simple { pubpc partial class Demo : System.Web.UI.Page { Tutorial tp = new Tutorial(); protected void Page_Load(object sender, EventArgs e) { tp.Name = "Continuous Integration"; } } }
<%@ Page Language = "C#" AutoEventWireup = "true" CodeBehind = "Demo.aspx.cs" Inherits = "Simple.Demo" %> <!DOCTYPE html> <html xmlns = "http://www.w3.org/1999/xhtml"> <head runat = "server"> <title>TutorialsPoint1</title> </head> <body> <form id = "form1" runat = "server"> <span> <% = tp.Name%>) </span> </form> </body> </html>
仅仅为了确保我们的法典对这些变化进行细微的工作,你就可以在视觉演播室操作该守则。 一旦汇编完成,你就应当取得以下产出。
Step 11——Unit Test file, 添加以下代码。 该法典将确保图西语班有直观的名称变量。 它还将申明,姓名应等于“持续融合”的价值。 这将是我们的简单测试案例。
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting.Web; using System.Web.UI; using System.Web.UI.WebControls; using Simple; namespace DemoTest { [TestClass] pubpc class UnitTest1 { [TestMethod] pubpc void TestMethod1() { Tutorial tp = new Tutorial(); Assert.AreEqual(tp.Name, "Continuous Integration"); } } }
在进行测试之后,你将看到测试成功在视觉演播室左侧进行。
现在,所有的测试病例都已到位,现在应当将这些病例纳入我们的团队城市服务器。
Step 13——为此,我们需要在我们的项目组合中建立一步。 前往贵项目家,点击Edit Configuration街区。
第14步——然后开始建设步——MS Building和点击Add楼梯,如以下屏幕所示。
在即将到来的下一个屏幕上添加以下价值观:
选择操作器,作为视觉演播室试验。
选择 测试站名称。
选择测试引擎类型为VS 试验。
选择测试引擎版本为VS 试验。
在测试文档名称中,提供以下位置:Demo TestinDebugDemo Test.dll - Remember that Demo Test is the name of we project which includes we Unit Tests.
Cpck Save, which will be available at the end of the Screen.
现在,你将为你的项目建立两个步骤。 第一个步骤是建立你的应用守则和测试项目。 接下来将用来处理测试案例。
当建筑启动时,你将看到初步产出,表明试验已经过去。
Continuous Integration - Inspection
连续检查是在进行实际测试之前为你的代码进行自动检查。 检查和测试软件之间存在微妙差异。 测试是动态的,并安装了软件,以便测试功能。 检查根据一套预先界定的规则分析了该守则。
检查员(或静态和动态分析工具)采用工作队应遵守的确定标准(通常为编码或设计衡量标准)。 检查目标的例子包括编码“制图”标准、建筑层的遵守、编码重复和许多其他标准。
连续检查缩短了发现和固定之间的时间。 现有一些连续检查工具。 例如,我们将使用NCover 3.x,与团队精神相结合。 让我们看看我们如何能够进行持续检查,以及我们能够做些什么。
Download and Install NCover
NCover是一种单独的产品,需要下载和安装。 下载NCover,请点击以下链接并下载32台轨道安装器:
我们将在我们的伙伴关系中起草一部法典。 查阅该数据库的净项目。
我们将在我们团队的项目中迈出一步,以管理这一文字。
我们将用我们的文字检查到Gite。
在较早的一节中建立的AWS数据库中为此采取的步骤。
Step 7 - Save the file to the demo Project rafter as Sample.sql。
这就是数据库的描述。 如果出现的话,将首先放弃现有表格,然后重新计算表格。
USE [Demodb] GO /****** Object: Table [dbo].[Demotb] Script Date: 3/22/2016 7:03:25 AM ****** DROP TABLE [dbo].[Demotb] GO /****** Object: Table [dbo].[Demotb] Script Date: 3/22/2016 7:03:25 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Demotb]( [TutorialName] [nvarchar](max) NULL, [TutorialID] [smalpnt] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
using System; using System.Collections.Generic; using System.Data.SqlCpent; using System.Linq; using System.Web; namespace Simple { pubpc class Tutorial { pubpc String Name; pubpc Tutorial() { string connectionString = "Data Source = WIN-50GP30FGO75; Initial Catalog = Demodb; Integrated Security = true;"; using (SqlConnection connection = new SqlConnection()) { connection.ConnectionString = connectionString; connection.Open(); Name = connection.ServerVersion; connection.Close(); } } } }
Step 10——在Demo.aspx.cs上添加以下代码: 档案确保显示服务器版本。
using System; using System.Collections.Generic; using System.Data.SqlCpent; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Simple { pubpc partial class Demo : System.Web.UI.Page { Tutorial tp = new Tutorial(); protected void Page_Load(object sender, EventArgs e){ Response.Write(tp.Name); } } }
现在,如果我们实施该守则,你将在浏览器中取得以下产出。
Step 11——现在,让我们在团队精神中加入我们的步骤,其中将使用数据库的文字。 进入你的项目仪表板,点击Edit Configuration Settings。
选择以下备选办法(说明MSQ服务器客户应在CI服务器上安装)。
行车应该是指挥线。
2. 采用任择步骤名称。
操作应当具有参数的可执行性。
可执行指挥系统应为C:Program filesMicrosoftker110ToolsBinnsqlcmd.exe
指挥参数 页: 1 -i Sample.sql。 在S-S公司给出服务器机号。
现在需要确保的是建筑秩序。 你必须确保建筑秩序如下。
数据库的建立应首先——因此,将用来从新的数据库中重新检索你的数据库。
下面是你提出申请的基础。
最后,您的测试安排。
现在,你有一个完整的建筑周期,在数据库一体化方面以及在你的周期中都有一个连续的方面。 在下一节中,请进一步考虑这一问题,并探讨持续的部署。
现在,你与当地服务器一起这样做,我们可以重复为AWSMS/5采取的同样步骤。 服务器是在前几节之一创建的。 为了与微软KS服务器连接,你需要通过以下公约连接。
Step 16——首先,见AWS中你数据库的名称。 当你在AWS上登录时,就去数据库科的RDS科。
Step 17 - Cpck on DBases in the next Screening that come.
Step 19——现在与SQL服务器管理<>数据库链接,你需要具体说明连接点如下:demodb.cypphcv1d87e.ap-Southeast-1.rds.amazonaws.com,1433。 (注:假名与停港之间使用的ma)。
下面的屏幕显示与数据库的成功链接。
然后,你可以重复所有相同的步骤。 www.un.org/Depts/DGACM/index_russian.htm 如下:
在数据库中,这种指挥也可以取代。 当你执行sqlcmdtor时,表格将自动在服务器数据库中建立。
Continuous Integration - Deployment
自动建筑和重复建筑。 自动测试和重复测试。 测试类别和测试频率。 不断检查。 不断整合数据库。 这些任务在创建有效的 CI环境方面的主要好处是:在任何环境的任何时候释放运行软件。
在我们前几章中,我们完成了以下所有部分:
Created our code.
Ensured a proper build in TeamCity.
Created a Database Integration process.
Conducted successful testing.
现在剩下的唯一事情是进行自动化部署,以便完成整个进程。
就我们而言,为了自动部署,我们需要遵循这些步骤——
在我们的部署服务器中,确保安装了国际数据系统。
确保用户能够查阅我们的数据库。
制作一个出版物目录,用于在网站建成时予以公布。
确保我们改变我们的微型和小型基地,以便进行自动部署。
自动出版公司。
承诺git承诺,以确保你的所有档案都存放在Gite。
Step 5——选择违约服务器并点击下。 一旦安装了因特网信息系统,你可以开放因特网信息服务。 Step 12——如果我们需要连接一个伙伴关系的话。 对MSQ服务器应用程序的净应用,我们必须允许KQ服务器机组进入缺省应用程序库,以便连接我们的Demodb数据库。 Step 13-开放式服务器管理室。 选择菜单(,新 Log/b>。 在下一次屏幕上,更新了以下参数并点击了科索沃。 Login name as IIS APPPOOLDefaultAppPool. Default database – This should be our database, which is demodb. 在随后的屏幕上,添加以下价值观: Choose the Pubpsh method as Web Deploy. Enter the server as localhost. Enter the site name as Default Web Site/Demo. Put the destination url as http://localhost/Demo 然后点击下顿。 现在请上C:DemoSimpleProperties PubpshProfiles的贵项目地点,请上下新网站pubpsh Profile xml file。 这份出版物目录文件将载有公布您对当地国际独立实体服务器的申请所需的全部细节。 Step 18——现在,让我们定制我们的微型信贷机构,并使用上述出版物,了解情况。 在我们的微型信贷额度指挥中,我们规定了以下参数: 对建筑工程的探索是真实的——一旦成功建造,这将引发自动部署。 然后,我们提到使用上述步骤中使用的“生态概况”。
视频演播室的版本刚刚提交给了MSBuild的部署能力,即正在使用的视觉演播室的版本。
当你行使上述指挥权时,MSBuild将启动建设和部署进程。 你们会注意到,它正在将它部署到我们的Default 网站。
现在,如果我们浏览到该网站——http:// localhost/Demo/Demo.aspx。 我们将看到以下产出,这意味着国际会计准则理事会在我们的网站上成功地进行了部署。
Step 19——通过团队精神进行自动配对——现在,现在应当给我们的团队服务器增加一项任务,即根据上述步骤,自动使用微型信贷公司来部署我们的应用。
<21>Step——建立步骤和点击添加一步。
选择以下选择:
经营人类型应为MSBuild
选择 缩略语
采用简易/简易程序。
• 将MSBuild版本作为Microsoft Building Technologies2013
• 将MSBuild工具转换为12.0
Put 指挥线为/p:DeployOnBuild=真实/p:PubpshProfile=Demoployement 页: 1
确保在建筑步骤中,开发步骤是链条的最后一步。
各位祝贺您成功建立了完整的连续一体化周期,可以随时随行。 让我们根据迄今汲取的所有经验教训,对持续融合的最佳做法进行最后审查——Continuous Integration - Best Practices
Automate the Building - 我们已看到如何利用MSBuild实现建筑自动化,同时使用出版物。 这再次是持续融合进程的一个关键步骤。
建设自测——确保你能通过保持单位测试案例来测试建筑,这些测试案例应当能够由连续一体化服务器操作。
每一承诺(按基线)均应建立。 对申请所做的每一项承诺都需要成功建立。 如果建筑工程由于任何原因都失败,则需要修改法典以确保建筑通行证。
加速建造 如果建筑进展缓慢,那么它将在整个持续融合过程中表明存在问题。 确保建筑总是限于一段时间,最好永远不超过10分钟。
每个人都能看到最新建筑的成果。 “团队精神”仪表板让所有人了解所有建筑,这些建筑已经过去或失败。 这为参与持续融合进程的所有人员提供了很好的见解。
Advertisements