diff options
author | csharptest <roger@csharptest.net> | 2012-10-16 19:41:35 -0500 |
---|---|---|
committer | rogerk <devnull@localhost> | 2012-10-16 19:41:35 -0500 |
commit | 832b08e238523cfa57856da814cadee492c144f8 (patch) | |
tree | ea5079f23896899b77788e5f7c1157ac60c1dd17 /build/publish.csproj | |
parent | ad7b9d114eb001e9803b9e3d4cbfb4cccd41a750 (diff) | |
download | protobuf-832b08e238523cfa57856da814cadee492c144f8.tar.gz protobuf-832b08e238523cfa57856da814cadee492c144f8.tar.bz2 protobuf-832b08e238523cfa57856da814cadee492c144f8.zip |
Rewrote the PublishRelease.bat file in MSBuild (publish.csproj), updated nuspec files
Diffstat (limited to 'build/publish.csproj')
-rw-r--r-- | build/publish.csproj | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/build/publish.csproj b/build/publish.csproj new file mode 100644 index 00000000..9cb43908 --- /dev/null +++ b/build/publish.csproj @@ -0,0 +1,182 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Publish" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <!-- build targets --> + <Target Name="Clean" DependsOnTargets="_Clean" /> + <Target Name="Publish" DependsOnTargets="_Publish" /> + + <PropertyGroup> + <ProjectName>Protocol Buffers</ProjectName> + <VersionMajor>2</VersionMajor> + <VersionMinor>4</VersionMinor> + <VersionBuild>1</VersionBuild> + <VersionRevision></VersionRevision> + <VersionLabel></VersionLabel> + + <PackagePrefix>protobuf-csharp-port-</PackagePrefix> + <PublishDebug>false</PublishDebug> + + <GoogleUsername></GoogleUsername> + <GooglePassword></GooglePassword> + + <!--Directory Paths--> + <ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory> + <BuildTempDirectory>$(ProjectDirectory)\build_temp</BuildTempDirectory> + <BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory> + <SourceDirectory>$(ProjectDirectory)\src</SourceDirectory> + <LibDirectory>$(ProjectDirectory)\lib</LibDirectory> + + <!-- File Paths --> + <SigningKey>$(ProjectDirectory)\release-key\Google.ProtocolBuffers.snk</SigningKey> + + <!--Tool Paths--> + <HgTool>hg.exe</HgTool> + <Python>C:\Python25\python.exe</Python> + <SnTool>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@InstallationFolder)Bin\sn.exe</SnTool> + <StampVer>$(LibDirectory)\StampVersion.exe</StampVer> + <ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath> + <NuGet>$(LibDirectory)\NuGet.exe</NuGet> + <ProtogenExePath>$(BuildOutputDirectory)\tools\protogen.exe</ProtogenExePath> + </PropertyGroup> + + <!-- Import user settings --> + <Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')" /> + + <!-- Files --> + <ItemGroup> + </ItemGroup> + + <!-- Tasks --> + + <Target Name="_Publish" DependsOnTargets="_PrepBuild;_PushAll" /> + + <Target Name="_Prerequisites" DependsOnTargets="_CheckEnvironment;_ReadVersion" /> + <Target Name="_PrepBuild" DependsOnTargets="_Clean;_Prerequisites;_StampVersion;_GenerateSource;_Build;_NugetPack;_HgLabel" /> + <Target Name="_PushAll" DependsOnTargets="_HgPush;_PkgPush;_NugetPush" /> + + <Target Name="_Clean"> + <MSBuild Properties="Configuration=Debug;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="Configuration=Release;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MakeDir Directories="$(BuildTempDirectory)" /> + <MakeDir Directories="$(BuildOutputDirectory)" /> + </Target> + + <Target Name="_WriteUserConfig"> + <ItemGroup> + <Lines Include="<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>" /> + <Lines Include=" <PropertyGroup>"/> + <Lines Include=" <GoogleUsername> (Enter your google-code user/password here) </GoogleUsername>"/> + <Lines Include=" <GooglePassword></GooglePassword>"/> + <Lines Include=" </PropertyGroup>" /> + <Lines Include="</Project>" /> + </ItemGroup> + <WriteLinesToFile File="$(MSBuildProjectFullPath).user" Lines="@(Lines)" Overwrite="true" Condition="!Exists('$(MSBuildProjectFullPath).user')" /> + <Exec Command="Notepad.exe $(MSBuildProjectFullPath).user" /> + </Target> + + <Target Name="_CheckEnvironment"> + <!-- Require google credentials --> + <CallTarget Targets="_WriteUserConfig" Condition=" '$(GooglePassword)' == '' " /> + <Error Text="Restart after you verify your credentials in $(MSBuildProjectFullPath).user" Condition=" '$(GooglePassword)' == '' " /> + <!-- Require Win7.0A SDK to verify strong-name --> + <Error Text="Unable to locate Win7SDK Tools: $(SnTool)" Condition="!Exists($(SnTool))" /> + <!-- Require Python 2.5 installed --> + <Error Text="Unable to locate Python 2.5: $(Python)" Condition="!Exists($(Python))" /> + <!-- Require production signing key --> + <Exec Command="$(HgTool) clone https://bitbucket.org/rknapp/protobuf-csharp-port-keyfile $(ProjectDirectory)\release-key" Condition="!Exists('$(SigningKey)')" /> + <Error Text="Unable to locate release signing key: $(SigningKey)" Condition="!Exists($(SigningKey))" /> + </Target> + + <Target Name="_ReadVersion" Condition=" '$(VersionLabel)' == '' "> + <Exec Command="$(HgTool) log -l 1 --template "{rev}" > "$(BuildTempDirectory)\revision.txt""></Exec> + <ReadLinesFromFile File="$(BuildTempDirectory)\revision.txt"> + <Output TaskParameter="Lines" PropertyName="VersionRevision"/> + </ReadLinesFromFile> + + <PropertyGroup> + <VersionLabel>$(VersionMajor).$(VersionMinor).$(VersionBuild).$(VersionRevision)</VersionLabel> + </PropertyGroup> + + <Message Text="Building version $(VersionLabel)" Importance="high" /> + </Target> + + <Target Name="_StampVersion" DependsOnTargets="_Prerequisites"> + <Exec Command="$(StampVer) /major:$(VersionMajor) /minor:$(VersionMinor) /build:$(VersionBuild) /revision:$(VersionRevision)" WorkingDirectory="$(SourceDirectory)" /> + <Exec Command="FIND "$(VersionLabel)" ProtocolBuffers\Properties\AssemblyInfo.cs" WorkingDirectory="$(SourceDirectory)" /> + </Target> + + <Target Name="_GenerateSource" DependsOnTargets="_Prerequisites"> + <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="GenerateProjects;BuildTools;GenerateSource" Projects="$(MSBuildProjectDirectory)\build.csproj" /> + <Exec Command=""$(SnTool)" -T "$(ProtogenExePath)" > signkey.txt" WorkingDirectory="$(BuildTempDirectory)" /> + <!-- Make sure we are signing with the correct key --> + <Exec Command="FIND "55f7125234beb589" signkey.txt" WorkingDirectory="$(BuildTempDirectory)" /> + </Target> + + <Target Name="_Build" DependsOnTargets="_Prerequisites"> + <!-- Release Build --> + <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" /> + <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-release" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" /> + <!-- Debug Build --> + <MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" /> + <MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-full" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" /> + </Target> + + <Target Name="_HgLabel" DependsOnTargets="_Prerequisites"> + <Exec Command="$(HgTool) tag $(VersionLabel)" WorkingDirectory="$(ProjectDirectory)" />
+ <Exec Command="$(HgTool) commit -m "version $(VersionLabel)"" WorkingDirectory="$(ProjectDirectory)" />
+ <Exec Command="$(HgTool) archive $(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip" WorkingDirectory="$(ProjectDirectory)" /> + </Target> + + <Target Name="_HgPush" DependsOnTargets="_Prerequisites"> + <Exec Command="$(HgTool) push" WorkingDirectory="$(ProjectDirectory)" />
+ </Target> + + <Target Name="_PkgPush" DependsOnTargets="_Prerequisites"> + <PropertyGroup> + <UploadPackage>$(Python) "$(MSBuildProjectDirectory)\googlecode_upload.py" --project protobuf-csharp-port --user "$(GoogleUsername)" --password "$(GooglePassword)"</UploadPackage> + + <SourcePackage>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip</SourcePackage> + <ReleasePackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-binaries.zip</ReleasePackageBin> + <ReleasePackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-symbols.zip</ReleasePackageSyb> + <DebugPackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-binaries.zip</DebugPackageBin> + <DebugPackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-symbols.zip</DebugPackageSyb> + </PropertyGroup> + + <Error Condition="!Exists('$(SourcePackage)')" Text="File not found: $(SourcePackage)" /> + <Error Condition="!Exists('$(ReleasePackageBin)')" Text="File not found: $(ReleasePackageBin)" /> + <Error Condition="!Exists('$(ReleasePackageSyb)')" Text="File not found: $(ReleasePackageSyb)" /> + <Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageBin)')" Text="File not found: $(DebugPackageBin)" /> + <Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageSyb)')" Text="File not found: $(DebugPackageSyb)" /> + + <Exec WorkingDirectory="$(ProjectDirectory)" + Command="$(UploadPackage) --labels Type-Source,Featured --summary "Version $(VersionLabel) source" $(SourcePackage)" /> + + <Exec WorkingDirectory="$(ProjectDirectory)" + Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) release binaries only" $(ReleasePackageBin)" /> + <Exec WorkingDirectory="$(ProjectDirectory)" + Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) release binaries and symbols" $(ReleasePackageSyb)" /> + + <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' " + Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) all binaries" $(DebugPackageBin)" /> + <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' " + Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) all binaries and symbols" $(DebugPackageSyb)" /> + </Target> + + <Target Name="_NugetPack" DependsOnTargets="_Prerequisites"> + <Exec WorkingDirectory="$(MSBuildProjectDirectory)" + Command="$(NuGet) update -self" /> + <Exec WorkingDirectory="$(MSBuildProjectDirectory)" + Command="$(NuGet) pack Google.ProtocolBuffers.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" /> + <Exec WorkingDirectory="$(MSBuildProjectDirectory)" + Command="$(NuGet) pack Google.ProtocolBuffersLite.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" /> + </Target> + + <Target Name="_NugetPush" DependsOnTargets="_Prerequisites"> + <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).nupkg" ContinueOnError="true" /> + <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).nupkg" ContinueOnError="true" /> + + <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).symbols.nupkg" ContinueOnError="true" /> + <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).symbols.nupkg" ContinueOnError="true" /> + </Target> + +</Project> |