Мы недавно переключились на git для наших нужд управления источником. Мы использовали cruisecontrol.net в течение некоторого времени. Я создал новые задачи в файле конфигурации cc.net и установил с помощью блока управления источником git. Я убедился, что могу использовать git над ssh через командную строку. У меня есть cruisecontrol.net, который отлично работает, когда я запускаю его с консоли.CruiseControl.Net с сбоем git не работает при запуске службы
Однако, как только я запускаю cruisecontrol.net как услугу, git fetch (или clone) истекает. Я попытался создать задачу для запуска процесса cc.exe при запуске компьютера, но результаты совпадают с результатами работы службы. Я установил переменные среды в документации cc.net для использования git, и я установил ssh и сохранил хост и т. Д. Для bitbucket. Служба работает как тот же пользователь, которого я запускаю в консоли.
Любые идеи, как заставить git работать как услугу?
Пример сборки сценария
<project name="******* Develop" queue="Q1" queuePriority="1">
<webURL>http://cc.*******two.co.uk/server/local/project/*******Develop/ViewLatestBuildReport.aspx</webURL>
<workingDirectory>D:\Integration\********* Develop\WorkingDirectory</workingDirectory>
<artifactDirectory>D:\Integration\********* Develop\Artifacts</artifactDirectory>
<modificationDelaySeconds>10</modificationDelaySeconds>
<triggers>
<intervalTrigger seconds="600" name="continuous" />
</triggers>
<sourcecontrol type="git">
<repository>[email protected]:*******/*******-2.git</repository>
<branch>develop</branch>
<autoGetSource>true</autoGetSource>
<executable>C:\Program Files\Git\cmd\git.cmd</executable>
<tagOnSuccess>false</tagOnSuccess>
<commitBuildModifications>false</commitBuildModifications>
<commitUntrackedFiles>false</commitUntrackedFiles>
<committerName>*******BuildServer</committerName>
<committerEMail>[email protected]*******.co.uk</committerEMail>
<workingDirectory>D:\Integration\*******Develop\WorkingDirectory</workingDirectory>
<timeout>300000</timeout>
</sourcecontrol>
<tasks>
<exec>
<executable>e2prebuild.bat</executable>
<baseDirectory>D:\Integration\*******Develop\Scripts</baseDirectory>
<buildTimeoutSeconds>30</buildTimeoutSeconds>
</exec>
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>D:\Integration\*******Develop\WorkingDirectory</workingDirectory>
<projectFile>*********.sln</projectFile>
<buildArgs>/p:Configuration=Release /v:diag</buildArgs>
<targets>Build</targets>
<timeout>900</timeout>
<logger>D:\CruiseControl\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<exec>
<executable>e2deploy.bat</executable>
<baseDirectory>D:\Integration\*******Develop\Scripts</baseDirectory>
<buildTimeoutSeconds>900</buildTimeoutSeconds>
</exec>
<exec>
<executable>ecrondeploy.bat</executable>
<baseDirectory>D:\Integration\*******Develop\Scripts</baseDirectory>
<buildTimeoutSeconds>900</buildTimeoutSeconds>
</exec>
</tasks>
</project>
Вход С CC.Net при неудачном сборки
<cruisecontrol project="********* Develop">
<request source="*********DEV" buildCondition="ForceBuild">Build (ForceBuild) triggered from *********DEV</request>
<parameters>
<parameter name="$CCNetArtifactDirectory" value="D:\Integration\********* Develop\Artifacts" />
<parameter name="$CCNetBuildCondition" value="ForceBuild" />
<parameter name="$CCNetBuildDate" value="2012-01-26" />
<parameter name="$CCNetBuildTime" value="15:10:27" />
<parameter name="$CCNetFailureUsers" value="System.Collections.ArrayList" />
<parameter name="$CCNetIntegrationStatus" value="Unknown" />
<parameter name="$CCNetLabel" value="3" />
<parameter name="$CCNetLastIntegrationStatus" value="Success" />
<parameter name="$CCNetListenerFile" value="D:\Integration\********* Develop\Artifacts\********* Develop_ListenFile.xml" />
<parameter name="$CCNetModifyingUsers" value="System.Collections.ArrayList" />
<parameter name="$CCNetNumericLabel" value="3" />
<parameter name="$CCNetProject" value="********* Develop" />
<parameter name="$CCNetProjectUrl" value="http://cc.*********.co.uk/server/local/project/*********Develop/ViewLatestBuildReport.aspx" />
<parameter name="$CCNetRequestSource" value="*********DEV" />
<parameter name="$CCNetUser" value="" />
<parameter name="$CCNetWorkingDirectory" value="D:\Integration\********* Develop\WorkingDirectory" />
</parameters>
<modifications />
<integrationProperties>
<CCNetArtifactDirectory>D:\Integration\********* Develop\Artifacts</CCNetArtifactDirectory>
<CCNetBuildCondition>ForceBuild</CCNetBuildCondition>
<CCNetBuildDate>2012-01-26</CCNetBuildDate>
<CCNetBuildTime>15:10:27</CCNetBuildTime>
<CCNetFailureUsers />
<CCNetIntegrationStatus>Exception</CCNetIntegrationStatus>
<CCNetLabel>3</CCNetLabel>
<CCNetLastIntegrationStatus>Success</CCNetLastIntegrationStatus>
<CCNetListenerFile>D:\Integration\********* Develop\Artifacts\********* Develop_ListenFile.xml</CCNetListenerFile>
<CCNetModifyingUsers />
<CCNetNumericLabel>3</CCNetNumericLabel>
<CCNetProject>********* Develop</CCNetProject>
<CCNetProjectUrl>http://cc.*********.co.uk/server/local/project/*********Develop/ViewLatestBuildReport.aspx</CCNetProjectUrl>
<CCNetRequestSource>*********DEV</CCNetRequestSource>
<CCNetWorkingDirectory>D:\Integration\********* Develop\WorkingDirectory</CCNetWorkingDirectory>
<LastIntegrationStatus>Success</LastIntegrationStatus>
<LastSuccessfulIntegrationLabel>3</LastSuccessfulIntegrationLabel>
<LastModificationDate>25/01/2012 15:15:29</LastModificationDate>
</integrationProperties>
<build date="2012-01-26 15:10:27" buildtime="00:05:01" buildcondition="ForceBuild" />
<exception><![CDATA[ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out.
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo)
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GitFetch(IIntegrationResult result)
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.CreateUpateLocalRepository(IIntegrationResult result)
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GetModifications(IIntegrationResult from, IIntegrationResult to)
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild)
at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to)
at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request)]]></exception>
</cruisecontrol>
CruiseControl.net Версия: 1.5.7256.1
Когда я испытал это, это было потому, что мерзавец кофе- для ввода в консоли. Служба CCNet обычно работает с более высокими привилегиями (чем обычный пользователь в режиме входа в систему), поэтому попробуйте запустить Git Bash в качестве администратора, выполните «git clone ...» и убедитесь, что нет приглашений, которые вы должны обходить на консоли. Кроме того, дважды проверьте, что вы действительно работаете как пользователь службы; все ключи SSH и известные хосты сохраняются для каждого пользователя. –
Привет, вы можете добавить ответ, чтобы я мог отметить его как таковой. Чтобы добавить ответ с чуть более подробной информацией, но идея о том, что пользователь с правами администратора работает как другой профиль для одного и того же пользователя, не была реальным решением, как только я понял, что это просто поиск правильных путей. – ClearCarbon