是否有命令行切换到forcebuild cruisecontrol.net远程。我试图避免每天早上去cctray并手动强制它。我似乎必须通过创建自己的自定义Web服务在CruiseControl服务器上创建自定义挂钩。
答案 0 :(得分:2)
如何在ThoughtWorks.CruiseControl.Remote.dll周围编写Powershell Wrapper?我们在一个名为CruiseHydra的项目中做了类似的事情,它模拟了跨多个构建服务器分割多个任务的能力。我试图在这里提取与你相关的部分。请注意,我没有测试过这个确切的代码,我们的库在它自己的抽象中包含了这个深层,但是它的主要部分在这里:
using ThoughtWorks.CruiseControl.Remote;
public ForceBuild(String ServerAddress, String projectToExecute)
{
RemoteCruiseManagerFactory rcmf = new RemoteCruiseManagerFactory();
ICruiseManager ccnetServer = rcmf.GetCruiseManager(ServerAddress);
ccnetServer.ForceBuild(projectToExecute,"Forced By Programatic Wrapper");
}
显然,您可以将ForceBuild的第二个参数更改为您的任务名称。它在“整合请求”下显示了什么?仪表板上的部分。
答案 1 :(得分:1)
如果您每天早上都在建设,为什么不设置一个计划触发器呢?
基于新信息的更新: 如果可以修改Power Shell脚本以修改内部可访问的网页(更新HTML中的时间戳文本),则可以使用urlTrigger
答案 2 :(得分:1)
有一个名为CCCmd的工具,它包含在CC.NET安装程序中。这是一个命令行界面,允许远程强制构建。
答案 3 :(得分:1)
在ccnet.config文件的同一目录中运行
"C:\Program Files (x86)\CruiseControl.NET\server\ccnet.exe" -r off -p [Project Name]
答案 4 :(得分:1)
我有类似的要求 - 从Nant / C#代码触发项目。在fiddler的帮助下,当我们点击“强制构建”时,我们发现了正在发生的事情。在项目的网络仪表板上。
您可以将此URL发送到构建服务器。请注意URL" ForceBuild = Force"。
中的参数http://your-build-server/ccnet/server/local/project/your-project-name/ViewProjectReport.aspx?ForceBuild=Force
" local" URL中的内容可能因您的配置而异。为此,首先尝试从CCTray获取项目报告,看看您的Cruise Control.NET项目的URL是什么。根据URL修改它来触发项目。
祝你好运!答案 5 :(得分:0)
分裂问题怎么样?设置一个新的CCNET项目,该项目具有PowerShell任务和触发原始项目的ForceBuild发布者:
<cruisecontrol>
<project name="OriginalProject">
<!-- ... -->
</project name="NewProject">
<project>
<tasks>
<powershell>
<script>CreateDatabase.ps</script>
<!-- ... -->
</powershell>
</tasks>
<publishers>
<forcebuild>
<project>OriginalProject</project>
</forcebuild>
</publishers>
</project>
</cruisecontrol>
如果您只想在powershell
任务完成而没有任何错误的情况下运行原始项目,只需将forcebuild
块从publishers
移至tasks
部分即可。
答案 6 :(得分:0)
您可以通过提交HTTP帖子直接触发。无需创建单独的URL或URL触发器。如果Powershell是一个选项,这对我们有用(请注意,我们的构建在post变量名称中有ccnet前缀与“param_”的参数,您可以根据需要省略或定制带有此前缀的参数):
function Build-CCNetProject {
param(
[string] $hostname,
[string] $server,
[string] $username,
[string] $password,
[string] $project,
[string] $param_environment,
[string] $param_build_version,
[string] $param_request_id
)
$securePassword = ConvertTo-SecureString "$password" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
$postParams = @{projectName="$project";serverName="$server";ForceBuild='Force';param_environment="$param_environment";param_build_version="$param_build_version";param_request_id="param_request_id";submit='Build'}
$postUrl = "http://{0}/ccnet/server/{1}/project/{2}/ViewProjectReport.aspx" -f $hostname, $server, $project
Invoke-WebRequest -Uri $postUrl -Method POST -Body $postParams -Credential $credential
}
# Usage:
Build-CCNetProject -hostname "teamcity" -server "somehost" -username "foo\bar" -password "baz" -project "awesome-app" -param_environment "uat" -param_build_version "1.0.1.123" -param_request_id "1"