आप टीम निर्माण से अतिरिक्त टीम निर्माण कैसे मैन्युअल रूप से ट्रिगर करेंगे? उदाहरण के लिए, जब हम CC.Net में थे तो अन्य बिल्ड ट्रिगर होंगे यदि कुछ बिल्ड सफल होते हैं। दूसरा निर्माण या तो ऐसी परियोजनाएं हो सकती है जो एक ही घटक के लिए इस घटक या अतिरिक्त, लंबे समय तक चलने वाले परीक्षण पुस्तकालयों का उपयोग करती हैं।मैन्युअल रूप से एक टीएफएस टीम बनाएं
उत्तर
एक तरीका यह है कि आप ऐसा कर सकते हैं कि आप अपने TFSBuild.proj फ़ाइल में एक AfterEndToEndIteration लक्ष्य कर सकते हैं जो आपको अन्य बिल्डों को शुरू करने के लिए TfsBuild.exe कमांड लाइन चलाएगा। मैं कुछ इस तरह सोच रहा हूँ (हालांकि मैं यह परीक्षण नहीं किया)
<Target Name="AfterEndToEndIteration">
<GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)"
Condition=" '$(IsDesktopBuild)' != 'true' ">
<Output TaskParameter="Status" PropertyName="Status" />
</GetBuildProperties>
<Exec Condition=" '$(Status)'=='Succeeded' "
Command="TfsBuild.exe start /server:$(TeamFoundationServerUrl) /buildDefinition:"Your Build Definition To Run"" />
</Target>
मैं एक ही बात मार्टिन अनेक अवसरों पर सुझाव दिया किया है (अपने ब्लॉग, BTW सहायक से परे है)। हालांकि, मुझे इस तरह के कैस्केडिंग बिल्डों को ट्रिगर करने की आवश्यकता समाप्त हुई (कुछ अन्य जटिल नियमों के आधार पर) कि मैंने इसे करने के लिए एक कस्टम कार्य बनाया है। अपनी बिल्ड स्क्रिप्ट को अच्छी और दुबला रखें और आपको कुछ और लचीलापन और encapsulation संभावनाएं देता है।
public override bool Execute()
{
IBuildDefinition[] buildDefinitions = BuildServer.QueryBuildDefinitions(ProjectName);
foreach (IBuildDefinition build in buildDefinitions)
{
if(build.Enabled) //I did a bunch of custom rules here
{
Log.LogMessage(String.Concat("Queuing build: ", build.Name));
BuildServer.QueueBuild(build);
}
}
return true;
}
भी हारून हाल्बर्ग के ब्लॉग पर कुछ अधिक अच्छी चीजें नहीं है:
http://blogs.msdn.com/aaronhallberg/archive/2007/04/24/team-build-object-model-queueing-a-build.aspx