调用MSBuild巡航控件等外部进程时设置环境变量.其中一个值是CCNetLabel.它保留了当前项目标签的价值.我想在ccnet配置本身使用相同的值但是当我尝试ccnet配置有问题时.我收到以下错误:
[CCNet Server:ERROR] INTERNAL ERROR: Reference to unknown symbol CCNetLabel
----------
ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: Reference to unknown symbol CCNetLabel
at ThoughtWorks.CruiseControl.Core.Config.Preprocessor.ConfigPreprocessorEnvironment._GetConstantDef(String name)
at ThoughtWorks.CruiseControl.Core.Config.Preprocessor.ConfigPreprocessorEnvironment.eval_text_constant(String name)
.....
----------
Run Code Online (Sandbox Code Playgroud)
我实际上想将CCNetLabel附加到另一个变量,所以我需要访问ccnet.config中的属性.
是否有不同的方式来引用这些变量?
在CruiseControl.NET中,我设置了两个项目,一个用于构建,一个用于部署构建包.
我们的构建主要基于MSBuild,并且在运行时,仪表板会不断更新构建的最新输出.这意味着即使完整构建可能需要15分钟,您可以确切地看到它的位置,并且它正在取得进展.
部署是使用另一个工具运行的(VisualBuild,虽然我看到与PowerShell等其他工具相同的基本行为).这是另一个长期运行的任务,但在这种情况下,仪表板在进行时不会更新其输出.由于部署可能需要很长时间,因此很难判断事情是否正在进展或事情是否已停滞.输出将记录到CruiseControl.NET日志中,一旦完成,将显示在仪表板上,但在部署过程中不会显示.
有没有办法从仪表板上更新的其他任意长时间运行的任务获得类似实时的输出?是什么让MSBuild在这方面特别?
我在CruiseControl.NET中使用Mercurial源代码控制块,我将其设置为autoGetSource
但是某些文件(例如版本号,基于当前时间)在构建过程中发生了变化.因此,对于下一个版本,某些文件会被更改,因此会autoGetSource
失败.
有没有办法可以告诉CruiseControl.NET做一个hg update -C
如此改变的文件不是问题.或者在开始构建之前是否有更好的清理构建文件夹的方法?
我想查询我的CCNet服务器以找出构建的状态.我听说有一种(ReST?)API的谣言,但我似乎无法找到它的任何文档.
是否有任何文档,或者我是否需要下载CCNet源代码并开始阅读?
编辑:我找到了端点/XmlStatusReport.aspx
,它提供了所有项目的XML概述.但是,任何文件夹中的相同文件名都会给出完全相同的响应,所以我担心这可能是唯一的API.
CCNET将这个例子放在网络仪表板上.是什么造成的?System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:21234服务器堆栈跟踪:在System.Net上的System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress)位于System.Runtime的System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()的System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket(EndPoint ipEndPoint)的.Sockets.Socket.Connect(EndPoint remoteEP).Runtime.Remoting.Channels.RemoteConnection系统中System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage消息,ITransportHeaders requestHeaders,Stream requestStream)上的System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid,Boolean openNew)中的.GetSocket(). System.Run中的Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage消息,ITransportHeaders requestHeaders,Stream requestStream,ITransportHeaders&responseHeaders,Stream&responseStream)time.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)在[0]处重新抛出异常:在System.Runtime.Remoting.Proxies.RealProxy处的System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)处.位于ThoughtWorks.CruiseControl.WebDashboard.Plugins.ServerReport.ServerLogServerPlugin.Execute的ThoughtWorks.CruiseControl.WebDashboard.ServerConnection.ServerAggregatingCruiseManagerWrapper.GetServerLog(IServerSpecifier serverSpecifier)上的ThoughtWorks.CruiseControl.Remote.ICruiseManager.GetServerLog()的PrivateInvoke(MessageData&msgData,Int32类型) (ICruiseRequest请求),位于ThoughtWorks.CruiseControl.WebDashboard.MVC.Cruise的ThoughtWorks.CruiseControl.WebDashboard.MVC.Cruise.ServerCheckingProxyAction.Execute(ICruiseRequest cruiseRequest),位于ThoughtWorks.CruiseControl.WebDashboard.MVC.Cruise.CruiseActionProxyAction.Execute(IRequest request) .ExceptionCatchingActionProxy.Execute(IRequest request)
我在向Web仪表板添加安全性时遇到了极大的问题.我正在尝试为一堆Web应用程序项目设置安全性.一切正常,没有启用安全性.
我想要的安全性非常简单.2个角色"Releasers"和"Testers",发布者可以做任何事情,测试人员可以强制构建测试部署项目,只查看所有升级实时安装的项目.但是我无法让它发挥作用.作为一个开始,我想我已经允许每个人的一切,我得到一些不同的问题取决于我如何设置各种东西.在所有情况下,配置文件都使用validator util进行验证.
服务器配置
<internalSecurity>
<users>
<ldapUser name="ccnet" domain="localhost" />
<passwordUser name="ccnetadmin" password="NotTheRealPW" />
</users>
<permissions>
<rolePermission name="Releasers" defaultRight="Allow">
<users>
<userName name="ccnetadmin"/>
</users>
</rolePermission>
<rolePermission name="Testers" defaultRight="Allow">
<users>
<userName name="ccnet"/>
</users>
</rolePermission>
</permissions>
</internalSecurity>
Run Code Online (Sandbox Code Playgroud)
项目安全
<security type="defaultProjectSecurity" defaultRight="Inherit">
<permissions>
<rolePermission name="Testers" ref="Testers"/>
<rolePermission name="Releasers" ref="Releasers"/>
</permissions>
</security>
Run Code Online (Sandbox Code Playgroud)
Dashboard.config
文档中有三件事情不清楚.
<securityPlugins>
节中需要什么.我已经尝试了在web.config和iis中集成的表单和窗口.对于表单,它基本上抱怨没有login.aspx,但是我不怀疑这是正确的.通过集成Windows,我可以访问仪表板.我可以在列表中看到任何没有安全元素的项目,但任何操作都会导致安全异常,说我没有ViewProject权限.任何具有安全元素的项目都不会显示在列表中.无论用户使用的是simpleUser,passwordUser还是ldapUser,我都会得到相同的行为.我找不到任何可以提到securityPlugins
除simpleSecurity之外的其他值的任何其他值,是否有任何其他值,如果是这样,它们是什么.
我搜索了这个文档,我找不到任何这些问题的答案.
编辑
无论谁能建议我能达到以下目标,都会得到赏金,即使它与我上面描述的完全不同.
我想要一组用户可以查看所有CC.net项目并强制构建1特定项目.我想要另一组用户可以查看并强制构建所有项目.我希望它与一个cc.net仪表板,一个配置文件,但具有不同的用户帐户.
编辑2
由于赏金即将耗尽,我也会给予任何能够提供某种令人信服的证据证明cc.net中的安全性不起作用的人,所以至少我知道不要再浪费时间了.此外,我已经尝试记录一个问题或发布到cc.net论坛有关这个,但他们似乎已转换到一个新系统,这似乎无法正常工作,它只是不会让你注册一个用户帐户,它需要电子邮件验证,但电子邮件永远不会通过.
我正在尝试设置CCNET,但遇到了问题。
我的构建失败,并且出现此错误
MSBUILD : error MSB1011: Specify which project or solution file to use because this folder contains more than one project or solution file.
Run Code Online (Sandbox Code Playgroud)
在我的配置文件中,ccnet.config
我的代码msbuild
块如下
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>C:\example\directory</workingDirectory>
<projectFile>ExampleSolution.sln</projectFile>
<buildArgs>/noconsolelogger /v:quiet
/p:Configuration=Debug
/p:ReferencePath="C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\"
</buildArgs>
<targets>ReBuild</targets>
<timeout>600</timeout>
</msbuild>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,C:\ example \ directory具有多个解决方案文件。即使我指定了项目文件,我仍然遇到该错误。
在我的项目的构建日志中,我可以看到这些属性:
<integrationProperties>
<CCNetProject>Gdet_T</CCNetProject>
...
<LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate>
<LastChangeNumber>10841</LastChangeNumber>
</integrationProperties>
Run Code Online (Sandbox Code Playgroud)
我想通过财产CCNetProject
和LastChangeNumber
批处理文件.它可以很好地使用CCNetProject
,因为它可以在批处理中用作环境变量%CCNetProject%
.
但它不适用于其他属性(那些不是以CCnet
前缀开头)为LastChangeNumber
或LastModificationDate
.
我试图将它作为参数传递,但它失败了!
<exec>
<executable>$(WorkingFolderBase)\MyBatch.bat</executable>
<baseDirectory>$(WorkingFolderBase)\</baseDirectory>
<buildArgs>$(LastModificationDate)</buildArgs>
</exec>
Run Code Online (Sandbox Code Playgroud)
我试图将其作为环境变量传递,但它失败了:
<exec>
<executable>$(WorkingFolderBase)\MyBatch.bat</executable>
<baseDirectory>$(WorkingFolderBase)\</baseDirectory>
<environment>
<variable>
<name>svn_label</name>
<value>"${LastModificationDate}"</value>
</variable>
</environment>
</exec>
Run Code Online (Sandbox Code Playgroud)
当我显示参数或变量时,结果总是相同的:空字符串或变量名称 $(svn_label)
我确信这很简单,但是......我找不到了!任何的想法 ?
我使用CruiseControl.Net设置了持续集成环境.我想知道在构建失败时如何将电子邮件发送给某人.
提前致谢.
我有一个在VM上运行构建的巡航控制服务器.我所做的只是将源控件从Perforce更改为Git,并且构建现在失败了.
CCNet配置
<tasks>
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>c:\Build\Pcp_Main</workingDirectory>
<buildArgs>/v:d Pcp.proj /target:Clobber;Build /property:Configurations="Debug;Release" /property:NUnitRedirectConsoleOutput=1</buildArgs>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
<timeout>2700</timeout>
</msbuild>
</tasks>
Run Code Online (Sandbox Code Playgroud)
构建日志
Done Building Project "c:\Build\Pcp_Main\Pcp.proj" (Clobber;Build target(s)).
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:01:32.39
MSBUILD : error MSB4015: The build stopped unexpectedly because the "ReusableLogger" logger failed unexpectedly during shutdown.
System.IO.DirectoryNotFoundException: Could not find a part of the path 'c:\Build\Pcp_Main\Artifacts\msbuild-results-2d082e8c-0e88-4c0b-9a6b-aa0e3094cab9.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, …
Run Code Online (Sandbox Code Playgroud) ccnet-config ×10
api ×1
build ×1
email ×1
git ×1
mercurial ×1
msbuild ×1
msbuild-4.0 ×1
msbuild-task ×1