Skip to content

Commit

Permalink
Add build scripts.
Browse files Browse the repository at this point in the history
  • Loading branch information
dgrunwald committed Feb 5, 2011
1 parent 73b9068 commit d1c932b
Show file tree
Hide file tree
Showing 21 changed files with 840 additions and 111 deletions.
121 changes: 121 additions & 0 deletions BuildTools/Automated.proj
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="go">
<!-- This file is called by the build server. -->
<!-- Expected properties:
ArtefactsOutputDir : full path of directory to write the build artefacts to.
TestReportsDir : full path of directory to write CC.net report files to
-->

<PropertyGroup>
<ProjectDir Condition=" '$(ProjectDir)' == '' ">$(MSBuildProjectDirectory)\..</ProjectDir>

<ILSpyBin>$(ProjectDir)\ILSpy\bin\Release</ILSpyBin>
<MSBuildCommunityTasksPath>$(ProjectDir)\BuildTools\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
<ArtefactPrefix>ILSpy_</ArtefactPrefix>

<!-- we cannot use <MSBuild> to build a solution because -->
<!-- A) passing properties to a solution called with <MSBuild> doesn't make the
properties available for the projects inside the solution
(but this works using the command line) -->
<!-- C) We need to use MSBuild 4.0, but the build server uses MSBuild 2.0 -->
<MSBuildExecutable>&quot;$(MSBuildBinPath)\..\v4.0.30319\msbuild.exe&quot;</MSBuildExecutable>
<BuildProperties>/p:Configuration=Release &quot;/p:Platform=Any CPU&quot;</BuildProperties>
<BuildProperties>$(BuildProperties) &quot;/p:BranchName=$(BranchName)&quot;</BuildProperties>
<BuildProperties>$(BuildProperties) $(AdditionalBuildProperties)</BuildProperties>
</PropertyGroup>

<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>

<Target Name="go">
<Error Text="ArtefactsOutputDir not set" Condition="'$(ArtefactsOutputDir)' == ''"/>
<Error Text="TestReportsDir not set" Condition="'$(TestReportsDir)' == ''"/>

<Message Text="ArtefactPrefix=$(ArtefactPrefix)" Importance="high"/>
<Message Text="ArtefactsOutputDir=$(ArtefactsOutputDir)" Importance="high"/>
<Message Text="BuildProperties=$(BuildProperties)" Importance="high"/>

<CallTarget Targets="clean1"/>

<CallTarget Targets="build"/>

<CallTarget Targets="createsetup"/>

<!--
<CallTarget Targets="buildunittests"/>
<CallTarget Targets="rununittests"/>
-->

<CallTarget Targets="clean2"/>
<CallTarget Targets="zipsource"/>
<CallTarget Targets="addnote" Condition=" '$(IsOfficialBuildServer)' == 'True' "/>
</Target>

<Target Name="build">
<MSBuild Projects="$(ProjectDir)\BuildTools\UpdateAssemblyInfo\UpdateAssemblyInfo.csproj" Targets="Build" Properties="Configuration=Debug" />
<Exec WorkingDirectory="$(ProjectDir)\BuildTools\UpdateAssemblyInfo\bin\Debug" Command="UpdateAssemblyInfo.exe --REVISION --branchname $(BranchName)" Timeout="60000" Condition=" '$(BranchName)' != '' " />
<Exec WorkingDirectory="$(ProjectDir)\BuildTools\UpdateAssemblyInfo\bin\Debug" Command="UpdateAssemblyInfo.exe --REVISION" Timeout="60000" Condition=" '$(BranchName)' == '' " />

<!-- read content of REVISION into $(BuildNumber) -->
<XmlRead XPath="/versionInfo/version"
XmlFileName="$(ProjectDir)\REVISION">
<Output TaskParameter="Value" PropertyName="BuildNumber" />
</XmlRead>
<Message Importance="high" Text="BuildNumber=$(BuildNumber)"/>

<Copy SourceFiles="$(ProjectDir)\REVISION"
DestinationFolder="$(ArtefactsOutputDir)"/>

<Exec WorkingDirectory="$(ProjectDir)"
Command="$(MSBuildExecutable) ILSpy.sln $(BuildProperties)"/>
</Target>

<!-- Yes, apparently we really need two identical clean tasks. MSBuild won't run the same task twice. -->
<Target Name="clean1">
<Exec WorkingDirectory="$(ProjectDir)"
Command="$(MSBuildExecutable) ILSpy.sln /t:Clean /p:Configuration=Debug"/>
<Exec WorkingDirectory="$(ProjectDir)"
Command="$(MSBuildExecutable) ILSpy.sln /t:Clean /p:Configuration=Release"/>
</Target>
<Target Name="clean2">
<Exec WorkingDirectory="$(ProjectDir)"
Command="$(MSBuildExecutable) ILSpy.sln /t:Clean /p:Configuration=Debug"/>
<Exec WorkingDirectory="$(ProjectDir)"
Command="$(MSBuildExecutable) ILSpy.sln /t:Clean /p:Configuration=Release"/>
</Target>

<Target Name="createsetup">
<CreateItem Include="$(ILSpyBin)\*.dll;$(ILSpyBin)\*.exe">
<Output TaskParameter="Include" ItemName="BinFileToZip"/>
</CreateItem>
<Message Importance="high" Text="Creating ZIP file $(ArtefactPrefix)$(BuildNumber)_Binaries.zip"/>
<Zip Files="@(BinFileToZip)"
ZipLevel="9"
WorkingDirectory="$(ILSpyBin)"
ZipFileName="$(ArtefactsOutputDir)\$(ArtefactPrefix)$(BuildNumber)_Binaries.zip"/>
</Target>

<Target Name="zipsource">
<CreateItem Include="$(ProjectDir)\**"
Exclude="$(ProjectDir)\**\.svn\**;$(ProjectDir)\**\obj\**;$(ProjectDir)\**\bin\**;$(ProjectDir)\.git\**;$(ProjectDir)\.git*;$(ProjectDir)\BuildTools\build\**">
<Output TaskParameter="Include" ItemName="FileToZip"/>
</CreateItem>
<Message Importance="high" Text="Creating ZIP file $(ArtefactPrefix)$(BuildNumber)_Source.zip"/>
<Zip Files="@(FileToZip)"
ZipLevel="6"
WorkingDirectory="$(ProjectDir)"
ZipFileName="$(ArtefactsOutputDir)\$(ArtefactPrefix)$(BuildNumber)_Source.zip"/>
</Target>

<Target Name="addnote">
<XmlRead XPath="/versionInfo/version"
XmlFileName="$(ProjectDir)\REVISION">
<Output TaskParameter="Value" PropertyName="BuildNumber" />
</XmlRead>
<XmlRead XPath="/versionInfo/branchName"
XmlFileName="$(ProjectDir)\REVISION">
<Output TaskParameter="Value" PropertyName="BranchName" />
</XmlRead>
<Exec WorkingDirectory="$(ProjectDir)" Command='git fetch origin refs/notes/build:refs/notes/build -f' />
<Exec WorkingDirectory="$(ProjectDir)" Command='git notes --ref build add -m "Build $(BuildNumber) on $(BranchName) successful"' IgnoreExitCode="True" />
<Exec WorkingDirectory="$(ProjectDir)" Command='git push git@github.com:icsharpcode/ILSpy.git refs/notes/build:refs/notes/build' />
</Target>
</Project>
Binary file not shown.
73 changes: 73 additions & 0 deletions BuildTools/MSBuildCommunityTasks/MSBuild.Community.Tasks.Targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- $Id: MSBuild.Community.Tasks.Targets 139 2006-03-26 13:34:13Z cmumford $ -->

<PropertyGroup>
<MSBuildCommunityTasksPath Condition="'$(MSBuildCommunityTasksPath)' == ''">$(MSBuildExtensionsPath)\MSBuildCommunityTasks</MSBuildCommunityTasksPath>
<MSBuildCommunityTasksLib>$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib>
</PropertyGroup>

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.AssemblyInfo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Attrib" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ExecuteSQL" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FileUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FtpUpload" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FxCop" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ILMerge" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Mail" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Move" />

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Add" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Divide" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Multiple" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Math.Subtract" />

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NDoc" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.NUnit" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegistryRead" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.RegistryWrite" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Script" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ServiceController" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.ServiceQuery" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Sleep" />

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Schema.TaskSchema" />

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssAdd" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssCheckin" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssClean" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssDiff" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssGet" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssHistory" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssLabel" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.SourceSafe.VssUndoCheckout" />

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCheckout" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnClient" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnCommit" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnExport" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnInfo" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Subversion.SvnVersion" />

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Time" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Unzip" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Version" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.WebDownload" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.XmlRead" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.XmlUpdate" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Xslt" />
<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Zip" />

<ItemGroup>
<FxCopRuleAssemblies Include="UsageRules.dll"/>
<FxCopRuleAssemblies Include="SecurityRules.dll"/>
<FxCopRuleAssemblies Include="PortabilityRules.dll"/>
<FxCopRuleAssemblies Include="PerformanceRules.dll"/>
<FxCopRuleAssemblies Include="MobilityRules.dll"/>
<FxCopRuleAssemblies Include="InteroperabilityRules.dll"/>
<FxCopRuleAssemblies Include="GlobalizationRules.dll"/>
<FxCopRuleAssemblies Include="DesignRules.dll"/>
</ItemGroup>
</Project>
Binary file not shown.
153 changes: 153 additions & 0 deletions BuildTools/MSBuildCommunityTasks/Sample.proj
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Required Import to use MSBuild Community Tasks -->
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

<!-- These are sample targets the demonstrate the use of MSBuild Community Tasks -->
<Target Name="AssemblyInfo">
<AssemblyInfo CodeLanguage="CS"
OutputFile="AssemblyInfo.cs"
AssemblyTitle="AssemblyInfoTask"
AssemblyDescription="AssemblyInfo Description"
AssemblyConfiguration=""
AssemblyCompany="Company Name, LLC"
AssemblyProduct="AssemblyInfoTask"
AssemblyCopyright="Copyright (c) Company Name, LLC 2005"
AssemblyTrademark=""
ComVisible="false"
CLSCompliant="true"
Guid="d038566a-1937-478a-b5c5-b79c4afb253d"
AssemblyVersion="1.0.0.0"
AssemblyFileVersion="1.0.0.0" />
</Target>

<Target Name="Math">
<Add Numbers="4;3">
<Output TaskParameter="Result" PropertyName="Result" />
</Add>
<Message Text="Add 4+3= $(Result)"/>

<Add Numbers="4;3;7">
<Output TaskParameter="Result" PropertyName="Result" />
</Add>
<Message Text="Add 4+3+7= $(Result)"/>

<Subtract Numbers="10;3">
<Output TaskParameter="Result" PropertyName="Result" />
</Subtract>
<Message Text="Subtract 10-3= $(Result)"/>

<Multiple Numbers="10;3">
<Output TaskParameter="Result" PropertyName="Result" />
</Multiple>
<Message Text="Multiple 10*3= $(Result)"/>

<Divide Numbers="1;2">
<Output TaskParameter="Result" PropertyName="Result" />
</Divide>
<Message Text="Divide 1/2= $(Result)"/>

</Target>

<Target Name="Version">
<Version VersionFile="version.txt" RevisionType="Increment">
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
<Output TaskParameter="Build" PropertyName="Build" />
<Output TaskParameter="Revision" PropertyName="Revision" />
</Version>

<Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
</Target>

<Target Name="Registry">
<RegistryRead
KeyName="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework"
ValueName="InstallRoot">
<Output TaskParameter="Value" PropertyName="InstallRoot" />
</RegistryRead>
<Message Text="InstallRoot: $(InstallRoot)"/>

<RegistryWrite
KeyName="HKEY_CURRENT_USER\SOFTWARE\MSBuildTasks"
ValueName="RegistryWrite"
Value="Test Write" />

</Target>

<Target Name="Service">
<ServiceQuery ServiceName="w3svc">
<Output TaskParameter="Status" PropertyName="Status" />
</ServiceQuery>
<Message Text="Web Server: $(Status)"/>

<ServiceController ServiceName="w3svc" Action="Restart" />

</Target>

<Target Name="WebDownload">
<WebDownload FileUri="http://www.microsoft.com/default.aspx"
FileName="microsoft.html" />
</Target>

<Target Name="Attrib" DependsOnTargets="Version">
<Attrib Files="version.txt"
ReadOnly="true" Hidden="true" System="true"/>

<Attrib Files="version.txt"
Hidden="false" System="false"/>

<Attrib Files="version.txt"
Normal="true"/>

</Target>

<PropertyGroup>
<Code>
<![CDATA[
public static void ScriptMain() {
List<string> list = new List<string>();
list.Add("Happy");
list.Add("New");
list.Add("Year");
Console.WriteLine("Hello MSBuild Community Scripting World.");
foreach(string s in list)
{
Console.WriteLine(s);
}
}
]]>
</Code>
</PropertyGroup>

<Target Name="Script">
<Script Language="C#" Code="$(Code)" />
</Target>

<Target Name="Sleep">
<Message Text="Sleep: 200"/>
<Sleep Milliseconds="200" />
</Target>

<ItemGroup>
<ZipFiles Include="**\*.*" Exclude="" />
</ItemGroup>

<Target Name="Zip">
<Zip Files="@(ZipFiles)"
ZipFileName="Sample.zip" />
</Target>

<Target Name="All">
<CallTarget Targets="AssemblyInfo" />
<CallTarget Targets="Math" />
<CallTarget Targets="Version" />
<CallTarget Targets="Registry" />
<CallTarget Targets="Service" />
<CallTarget Targets="WebDownload" />
<CallTarget Targets="Attrib" />
<CallTarget Targets="Script" />
<CallTarget Targets="Sleep" />
<CallTarget Targets="Zip" />
</Target>
</Project>
Loading

0 comments on commit d1c932b

Please sign in to comment.