আমি এটি বেশিরভাগই কাস্টম এমএসবিল্ড স্ক্রিপ্ট ব্যতীত কাজ করতে পেয়েছি। এখানে প্রাসঙ্গিক টিমসিটি বিল্ড কনফিগারেশন সেটিংস রয়েছে:
আর্টিক্যাক্ট পাথ:% system.teamcity.build.workingDir% \ মাইপ্রজেক্ট \জেজ \ ডিবাগ \ প্যাকেজ \ প্যাকেজ টিম্প
রানার প্রকার: এমএসবিল্ড (এমএসবিল্ড ফাইলগুলির জন্য রানার)
ফাইলের পাথ তৈরি করুন: মাইপ্রজেক্ট \ মাইপ্রজেক্ট। স্প্রোজ
ওয়ার্কিং ডিরেক্টরি: চেকআউট ডিরেক্টরি হিসাবে একই
এমএস বিল্ড সংস্করণ: মাইক্রোসফ্ট। নেট ফ্রেমওয়ার্ক 4.0
এমএস বিল্ড টুলস সংস্করণ: ৪.০
প্ল্যাটফর্ম চালান: x86
লক্ষ্যসমূহ: প্যাকেজ
কমান্ড লাইন পরামিতিগুলি MSBuild.exe: / p: কনফিগারেশন = ডিবাগ
এটি সংকলন, প্যাকেজ (ওয়েবকনফিগ ট্রান্সফর্মেশন সহ) এবং আউটপুটকে শিল্পকর্ম হিসাবে সংরক্ষণ করবে। কেবলমাত্র অনুপস্থিত জিনিসটি নির্দিষ্ট স্থানে আউটপুট অনুলিপি করা, তবে এটি আর্টিম্যাক্ট নির্ভরতা বা কোনও এমএসবিল্ড স্ক্রিপ্টের সাহায্যে অন্য টিমসিটি বিল্ড কনফিগারেশনে করা যেতে পারে।
হালনাগাদ
এখানে একটি এমসবিল্ড স্ক্রিপ্ট রয়েছে যা সংকলন করবে, প্যাকেজ করবে (ওয়েবকনফিগ রূপান্তর সহ), এবং আমার স্টেজিং সার্ভারে আউটপুটটি অনুলিপি করবে
<?xml version="1.0" encoding="utf-8" ?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<SolutionName>MySolution</SolutionName>
<SolutionFile>$(SolutionName).sln</SolutionFile>
<ProjectName>MyProject</ProjectName>
<ProjectFile>$(ProjectName)\$(ProjectName).csproj</ProjectFile>
</PropertyGroup>
<Target Name="Build" DependsOnTargets="BuildPackage;CopyOutput" />
<Target Name="BuildPackage">
<MSBuild Projects="$(SolutionFile)" ContinueOnError="false" Targets="Rebuild" Properties="Configuration=$(Configuration)" />
<MSBuild Projects="$(ProjectFile)" ContinueOnError="false" Targets="Package" Properties="Configuration=$(Configuration)" />
</Target>
<Target Name="CopyOutput">
<ItemGroup>
<PackagedFiles Include="$(ProjectName)\obj\$(Configuration)\Package\PackageTmp\**\*.*"/>
</ItemGroup>
<Copy SourceFiles="@(PackagedFiles)" DestinationFiles="@(PackagedFiles->'\\build02\wwwroot\$(ProjectName)\$(Configuration)\%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>
</Project>
আপনি সম্পত্তিগ্রুপ ট্যাগ থেকে সলিউশননাম এবং প্রজেক্টনাম বৈশিষ্ট্যগুলি সরাতে এবং এগুলি এমএসবিল্ডে দিতে পারেন।
msbuild build.xml /p:Configuration=Deploy;SolutionName=MySolution;ProjectName=MyProject
আপডেট 2
যেহেতু এই প্রশ্নটি এখনও ট্র্যাফিকের খুব ভাল সুযোগ পেয়েছে তাই আমি ভেবেছিলাম যে আমার উত্তরটি আমার বর্তমান স্ক্রিপ্টের সাথে আপডেট করা মূল্যবান যা ওয়েব ডিপ্লয় ব্যবহার করে (এমএসডিপপ্লয় নামেও পরিচিত) uses
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<ProjectFile Condition=" '$(ProjectFile)' == '' ">$(ProjectName)\$(ProjectName).csproj</ProjectFile>
<DeployServiceUrl Condition=" '$(DeployServiceUrl)' == '' ">http://staging-server/MSDeployAgentService</DeployServiceUrl>
</PropertyGroup>
<Target Name="VerifyProperties">
<!-- Verify that we have values for all required properties -->
<Error Condition=" '$(ProjectName)' == '' " Text="ProjectName is required." />
</Target>
<Target Name="Build" DependsOnTargets="VerifyProperties">
<!-- Deploy using windows authentication -->
<MSBuild Projects="$(ProjectFile)"
Properties="Configuration=$(Configuration);
MvcBuildViews=False;
DeployOnBuild=true;
DeployTarget=MSDeployPublish;
CreatePackageOnPublish=True;
AllowUntrustedCertificate=True;
MSDeployPublishMethod=RemoteAgent;
MsDeployServiceUrl=$(DeployServiceUrl);
SkipExtraFilesOnServer=True;
UserName=;
Password=;"
ContinueOnError="false" />
</Target>
</Project>
TeamCity, আমি নামক প্যারামিটার আছে env.Configuration
, env.ProjectName
এবং env.DeployServiceUrl
। এমএসবিল্ড রানারটির বিল্ড ফাইলের পাথ রয়েছে এবং প্যারামিটারগুলি স্বয়ংক্রিয়ভাবে পাস করা হয়েছে (আপনাকে সেগুলি কমান্ড লাইন প্যারামিটারে নির্দিষ্ট করতে হবে না)।
আপনি এটি কমান্ড লাইন থেকে চালাতে পারেন:
msbuild build.xml /p:Configuration=Staging;ProjectName=MyProject;DeployServiceUrl=http://staging-server/MSDeployAgentService