是否有一个命令行切换到远程forcebuild cruisecontrol.net。我试图避免每天早上去手工制作它并手动强制它。看来我必须通过创建自己的自定义Web服务来在CruiseControl服务器上创建自定义挂钩。从远程命令行的Forcebuild CruiseControl.net
回答
如果您每天早上都在建设,为什么不设置计划触发器呢?
更新基于新的信息: 如果你的电源外壳脚本可以被修改来修改内部访问网页(更新在HTML时间戳文字),那么你可以使用urlTrigger
什么分裂问题?设置有一个PowerShell任务,触发原有的项目ForceBuild发行新CCNET项目:
<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
部分。
围绕ThoughtWorks.CruiseControl.Remote.dll编写Powershell Wrapper怎么办?在一个我们称之为CruiseHydra的项目中,我们做了一些非常类似的事情,这个项目模拟了跨多个构建服务器分割多个任务的能力。我试图在这里提取应该与你有关的部分。请注意,我没有测试过这个确切的代码,我们的图书馆包装此深在自己的抽象,但它的JIST是在这里:
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是名你的任务。这就是仪表盘上“集成请求”部分显示的内容。
CC.NET安装程序中包含一个名为CCCmd的工具。这是一个允许远程强制构建的命令行界面。在文件的ccnet.config
"C:\Program Files (x86)\CruiseControl.NET\server\ccnet.exe" -r off -p [Project Name]
运行这一点 - 触发从南特/ C#代码的项目。在小提琴手的帮助下,我们在项目的网页仪表板上点击“强制构建”,发现发生了什么。
您可以将此URL发送到构建服务器。请注意URL中的参数“ForceBuild = Force”。
http://your-build-server/ccnet/server/local/project/your-project-name/ViewProjectReport.aspx?ForceBuild=Force
的“本地”的URL可以根据您的配置而有所不同。为此,首先尝试从CCTray获取项目报告,并查看Cruise Control.NET项目的URL。根据URL修改它来触发项目。
祝你好运!
我也有类似的要求的同一目录
您可以通过提交HTTP帖子直接触发。无需创建单独的URL或URL触发器。如果Powershell是一个选项,这适用于我们(请注意,我们的版本具有以下变量名称中带有“param_”的ccnet前缀的参数,可以根据需要使用此前缀省略或调整参数):
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"
- 1. CruiseControl.net Remoting - 具有原因的ForceBuild
- 2. ForceBuild Cruisecontrol.net使用批处理文件
- 3. 这种情况下ForceBuild关注 - CruiseControl.NET
- 4. 从命令行远程运行Jmeter
- 5. 从命令行执行DB2命令到远程服务器
- 6. 从网页执行远程PowerShell命令
- 7. 执行命令shell从PHP远程
- 8. 远程执行命令
- 9. Centos 5.5远程命令行
- 10. 执行Python命令远程
- 11. linux远程执行命令
- 12. 远程docker命令执行
- 13. POPEN远程命令
- 14. Powershell远程命令
- 15. SSH远程命令执行和的ulimit
- 16. 在远程服务器上执行命令行命令
- 17. 从交流程序执行远程主机上的命令
- 18. 从命令行通过capistrano在远程主机上运行命令
- 19. 使用Maven运行远程命令
- 20. 在PowerShell中运行远程cmd命令
- 21. 远程freecad和ubuntu命令行
- 22. Tor命令行来检测远程IP
- 23. gcloud计算执行远程命令
- 24. 正确执行远程PS命令
- 25. 远程执行命令 - 无等待
- 26. SSH远程机器和执行命令
- 27. mySQL命令行选择 - 远程工具
- 28. phpseclib无法远程执行命令
- 29. 通过ssh远程运行命令
- 30. Linux - 远程命令执行和.bashrc
原因是我有一个数据库powershell脚本需要在forcebuild之前运行。所以forcebuild依赖于数据库的powershell脚本完成。我已经看过了关于如何通过.net远程调用forcebuild的cctray源代码。在CruiseControl java端他们有JMX webservice,这是我需要在CruiseControl.net。现在我正在寻找通过在powershell或cmd行中使用.net remoting来调用forcebuild的替代方法。 – odez213 2011-02-16 20:43:33
你能指我一个URL触发器的文档吗?我试着用google搜索无济于事,但设法看到一些线程讨论URL触发器。 – odez213 2011-02-18 18:08:21