我们有3个环境:
我们正在使用Team City,并且只对我们的开发环境进行持续集成设置.我不想为Team City所做的每个开发部署保存工件.我希望指定的人能够触发构建配置,将部署成功的开发部署到我们的登台服务器.
然后,我希望每个登台部署都能保存工件.当暂存部署通过UAT时,我想将该包部署到Production.
我不确定如何在Team City中进行设置.我正在使用6.5.4版本,我知道有一个"推广..."动作/触发器,但我认为这取决于保存的工件.我不希望每次都将开发部署保存为工件,但我确实希望运行登台部署的人能够指定要部署到登台的成功开发部署.
我知道可能有多种方法可以做到这一点,有最好的做法吗?您的设置是什么?为什么推荐它?
更新:
到目前为止我有一个答案,这是我们内部考虑的一个想法.我真的很想知道,如果任何人有部署到通过团队市本身,暂存/生产environemnt其中只有某些角色/许可人可以运行部署脚本来生产,而不必手动处理任何一个有点自动化的方式一种神器包.任何人?
更新2
我仍然有1天奖励赏金,我认为下面的答案没有回答我的问题,但重读后我发现我的问题不是我想的那样.
有没有办法使用Team City进行某种自动部署到临时/生产环境?
我正在尝试使用下面的SQL批处理脚本测试数据库中的所有同义词是否引用有效对象,作为我们数据库清理工作的一部分.此脚本只对同义词执行查询,并打印出遇到的任何错误.这适用于视图和表,但不适用于sprocs.
SET NOCOUNT ON
DECLARE @currentId INT;
DECLARE @currentSynonym VARCHAR(255);
SELECT @currentId = MIN(id) FROM sysobjects WITH (NOLOCK) WHERE [xtype]='SN';
WHILE @currentId IS NOT NULL
BEGIN
SELECT TOP(1) @currentSynonym = name FROM sysobjects WITH (NOLOCK) WHERE id = @currentId;
PRINT '';
PRINT '------------------------------------------------------------';
PRINT @currentSynonym;
PRINT '------------------------------------------------------------';
BEGIN TRY
EXEC('SELECT Top(1) NULL FROM ' + @currentSynonym + ' WITH (NOLOCK);');
PRINT 'Synonym is valid.';
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE();
END CATCH
SELECT @currentId = MIN(id) FROM sysobjects WITH (NOLOCK) …
Run Code Online (Sandbox Code Playgroud) 我在一个项目中有2个构建配置:
我希望只有在构建和测试代码成功构建时才运行Deploy Code,因此我设置了快照依赖项.
快照依赖性是否意味着Deploy Code将检出与Build&Test Code相同的SVN修订版,然后针对该checkout运行NAnt脚本,该脚本不包含编译器生成的构建后文件?或者,部署代码中的构建和测试代码的快照依赖性是否意味着NAnt将针对构建代理上的构建和测试代码的构建后工作目录文件运行?
更新:
似乎我将快照依赖于Build and Test Code for Deploy Code并且我已经构建了Build&Test Code的最新版本,我的NAnt脚本将为构建和测试代码构建部署后期构建文件.
我仍然想确认我理解这个概念,因为我不太了解Team City文档.我想我应该确保Deploy Code在与构建和测试代码相同的构建代理上运行,否则我可能遇到Deploy Code检出SVN版本然后只部署预构建代码文件的情况.它是否正确?
我的困惑主要是因为您似乎必须为部署代码设置VCS.那是因为它需要将修订版号与快照依赖关系进行比较吗?
我已经开始为我们在ASP.NET解决方案中使用svn:externals的一些频繁的依赖项目创建NuGet包.我将.nupkg文件托管在网络文件夹中,并将该文件夹位置用作NuGet提要.
我不确定在版本控制中放置哪些文件以及放在哪里.你把.nuspec和.nupkg文件放在你的存储库中了吗?同时将.nuspec和.nupkg文件放入项目的版本控制中吗?我想因为.nuspec文件生成.nupkg文件,所以你只需要在版本控制中使用该文件.但是,我也认为制作网络文件夹可能是一个好主意,我将其用作NuGet提要,本身就是一个回购.然后我可以版本控制.nupkg文件.
版本控制创建的NuGet包有哪些好的做法?
在我的公司,我们将ASP.NET应用程序开发为网站,并且通常仅使用我们的网络驱动器,它直接指向我们的开发Web服务器上的文件.我们的代码是在HTML请求时编译的,因此我们不构建我们的Web应用程序.我已经读到自动构建是一种最佳实践,并且旨在在某些时候设置它.现在我们正在使用VSS,这很糟糕,我想把我们转变为颠覆.
我已经阅读了关于构建和部署的NAnt,并且刚刚听说过CruiseControl.NET.当开发人员从工作副本中提交更改时,我是否可以简单地使用这些工具将代码从SVN存储库推送到我们的开发Web服务器?
我有2个应用程序在同一个域上运行.流程如下:
应用程序1是WebForms(asp.net framework 2.0),Application 2是ASP.NET MVC 3(框架4.0)
当用户在应用程序2上时,我想在应用程序1上保持会话活动.
在构建应用程序1时,我们构建了一个"KeepSessionAlive.ashx"处理程序,它只在请求时执行Session("KeepSesssionAlive")= DateTime.Now(),如本文所述.我们这样做是因为这是一个评估应用程序,在测试的一些较难的部分,用户可能需要很长时间才能选择答案.这是代码:
Public Class KeepSessionAlive : Implements IHttpHandler, IRequiresSessionState
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Session("KeepSessionAlive") = DateTime.Now
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
Run Code Online (Sandbox Code Playgroud)
然后,我只是在Application 1
使用jQuery中定期调用此处理程序:
$.post("KeepSessionAlive.ashx", null, function() { });
所以,我想我可以使用$ .ajax()从Application 2 …
我正在使用ELMAH将错误记录到SQL数据库并发送电子邮件.我想将ELMAH_Error.ErrorId附加到ELMAH电子邮件的主题中.
我正在将ElmahLog_Logged事件中的ErrorId ELMAH保存到会话变量中,正如我在此问题中发现的那样.Atif Aziz自己在这篇博文中评论了以下关于此的信息:
如果在邮件发送期间确实想要在记录的错误处获得破解,则必须在ErrorLogModule.Logged事件中将其拾取.这可能很方便,例如,将记录的错误的Id推送到邮件中.为此,您将Id从Logged事件中隐藏到HttpContext中,稍后在Mailing事件中使用它.为此,模块将被注册,以便在Logged事件之后发生Mailing事件.
我认为,因为httpModules首先添加了ErrorLog而第二个是ErrorMail,所以这将实现在Logged事件之后注册Mailing事件.我想这是在谈论事件的顺序,而不是模块应用的顺序.
你如何注册HttpModules的事件顺序?
我试过下面的代码无济于事.下面的代码阻止电子邮件发送,但错误仍记录到SQL表中.
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
</httpModules>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
</system.web>
Run Code Online (Sandbox Code Playgroud)
......而且......
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
<handlers>
<add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
当然,并且配置正确(我通过NuGet安装).
protected void …
Run Code Online (Sandbox Code Playgroud) 我们正在从VSS转向Subversion,我们在Subversion Repo上有一个网站项目.我们删除了Bin文件夹,因为它导致各种混乱的树冲突,因为我们的开发解决方案包含一些网站项目所依赖的类库项目(在我们的解决方案中设置为项目引用).我们在网站的Bin文件夹中也有几个第三方库DLL.
我们项目的下一阶段涉及设计师修改我们网站的主题.我希望他能够在VS 2005中打开网站项目,在他的工作副本上修改他需要的CSS文件,并在他的localhost上测试他的文件.他需要最新的DLL文件才能让他能够做到这一点.
有没有将Bin文件夹DLL添加到subversion,并配置TortoiseSVN或subversion,以便我们可以提交我们最新的DLL(开发人员的解决方案文件中的项目依赖项),但在更新时忽略它们(我估计每个客户端)?将我们的第三方网站依赖于Subversion也很方便.
asp.net ×5
jquery ×2
svn ×2
teamcity ×2
asp.net-2.0 ×1
asp.net-mvc ×1
c# ×1
deployment ×1
elmah ×1
httpmodule ×1
nant ×1
nuget ×1
session ×1
sql ×1
sql-server ×1
synonym ×1
t-sql ×1
thumbnails ×1
tortoisesvn ×1