Cruisecontrol.net 缺少签到
我已经设置了 CCNET,总的来说它工作正常。 它会轮询 SVN 服务器并检查代码是否发现任何更改。 除非在构建期间进行签入。 目前,构建和测试运行大约需要 3 - 4 分钟,如果有人在构建过程中签入代码,crusie 控件不会识别签入,并会等到构建运行后签入。
为什么会这样?
这是 ccnet.config 文件的 svn 部分:
<sourcecontrol type="svn">
<executable>svn.exe</executable>
<trunkUrl>http://*******/svn/repos/psl/AcademyPro/ASP%20.Net/trunk/</trunkUrl>
<workingDirectory>C:\CrusieControlProjects\AcademyPro\</workingDirectory>
<username>******</username>
<password>******</password>
<autoGetSource>true</autoGetSource>
</sourcecontrol>
为了清晰起见进行了编辑 问题与原子签入无关。 签入可以完成,CCNET 构建应用程序并开始运行测试。 此时,其他人再次签到。 测试运行完成后,我希望 CCNET 能够发现测试运行期间进行的签入。
这种情况不会发生,错过了签入并且错过了我期望的构建。
这是预期的行为,还是我不明白@Jeff Mattfield 在说什么?
I've setup a CCNET and on the whole it's working fine. It polls the SVN server and checks out the code if it sees any changes. Except, that is, when there is a checkin during the build. Currently the build and test run takes about 3 - 4 mins, if anyone checks in the code during the build crusie control does not recognise the checkin and waits until there is a checkin after the build has run.
Why might this be?
This is the svn portion of the ccnet.config file:
<sourcecontrol type="svn">
<executable>svn.exe</executable>
<trunkUrl>http://*******/svn/repos/psl/AcademyPro/ASP%20.Net/trunk/</trunkUrl>
<workingDirectory>C:\CrusieControlProjects\AcademyPro\</workingDirectory>
<username>******</username>
<password>******</password>
<autoGetSource>true</autoGetSource>
</sourcecontrol>
Edited for Clarity
The problem is not to do with atomic checkins. A checkin can complete, CCNET builds the app and starts running tests. At this point, someone else makes another checkin. Once the test run has completed I would expect CCNET to spot the checkin that was made during the test run.
This does not happen, the checkin is missed and a build that I'm expecting is missed.
Is this expected behaviour, or am I not understanding what @Jeff Mattfield was saying?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
Subversion 提交是原子的。 在没有错误地完成之前,它无法用于结帐。 在并行提交期间从存储库更新或签出会导致该提交之前的存储库状态。
换句话说,CC.NET 获取上次成功提交后存储库包含的内容。
A Subversion commit is atomic. It isn't available for checkout until it has completed without errors. Updating or checking out from a repository during a parallel commit results in the state of the repository before that commit.
In other words, CC.NET gets what the repository contained after the last successful commit.
我从来没有遇到过这个问题,而且我已经使用 SVN+CCNet 几年了。
I've never had this issue and I've been working with SVN+CCNet for a couple of years now.
检查 ccservice.exe.config / ccnet.exe.config 是否已设置调试日志级别:
然后检查 ccnet.log 中的 subversion 输出以获取 subversion 修订版。
确保该修订版是在 svn trunkUrl (http://********/svn/repos/psl/AcademyPro/ASP%20.Net/trunk/) 路径下提交的最新修订版。
否则,请检查日志和状态文件以获取更多线索。
Check that ccservice.exe.config / ccnet.exe.config has debug log level set:
Then check the subversion output in the ccnet.log for the subversion revision.
Make sure that revision is the latest revision with commits under the svn trunkUrl (http://*******/svn/repos/psl/AcademyPro/ASP%20.Net/trunk/) path.
Otherwise check the log and state-file for more clues.
Subversion 服务器上的时间与 Cruisecontrol 服务器上的时间相差大约 2 小时。 我修复了这个问题,现在签到似乎运行得更顺畅了。
The time on the subversion server was about 2 hours out from the time on the cruisecontrol server. I fixed that and checkins now seem to be running much smoother.