parent
ad7b9d114e
commit
832b08e238
8 changed files with 213 additions and 145 deletions
@ -1,98 +0,0 @@ |
||||
REM @ECHO OFF |
||||
@PUSHD %~dp0 |
||||
@IF "%1" == "version" @GOTO VERSION |
||||
@IF "%1" == "build" @GOTO BUILD |
||||
@IF "%1" == "fpush" @GOTO FILEPUSH |
||||
@IF "%1" == "nupush" @GOTO NUGETPUSH |
||||
@IF "%1" == "push" @GOTO PUSH |
||||
@GOTO HELP |
||||
|
||||
:VERSION |
||||
IF NOT EXIST "..\build_temp\" MD "..\build_temp\" |
||||
hg log -l 1 --template "Revision: {rev}" > ..\build_temp\revision.txt |
||||
CMD.exe /Q /C "CD .. && lib\StampVersion.exe /major:2 /minor:4 /build:1 /revision:build_temp\revision.txt" |
||||
@TYPE ..\src\ProtocolBuffers\Properties\AssemblyInfo.cs | FIND "AssemblyFileVersion" |
||||
@ECHO. |
||||
@ECHO NEXT: Use the above version number to run "%0 build {Version}" |
||||
@ECHO. |
||||
@GOTO EXIT |
||||
|
||||
:BUILD |
||||
@IF "%2" == "" @GOTO HELP |
||||
IF EXIST "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\sn.exe" SET WIN7SDK_DIR=C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\ |
||||
|
||||
IF NOT EXIST "..\release-key" hg clone https://bitbucket.org/rknapp/protobuf-csharp-port-keyfile ..\release-key |
||||
|
||||
MD "%2" |
||||
CMD.exe /Q /C "BuildAll.bat /verbosity:minimal "/p:AssemblyOriginatorKeyFile=%~dp0..\release-key\Google.ProtocolBuffers.snk" |
||||
|
||||
COPY /y ..\build_output\release-binaries.zip %2\protobuf-csharp-port-%2-release-binaries.zip |
||||
COPY /y ..\build_output\full-binaries.zip %2\protobuf-csharp-port-%2-full-binaries.zip |
||||
|
||||
..\lib\NuGet.exe pack Google.ProtocolBuffers.nuspec -Symbols -Version %2 -NoPackageAnalysis -OutputDirectory %2 |
||||
..\lib\NuGet.exe pack Google.ProtocolBuffersLite.nuspec -Symbols -Version %2 -NoPackageAnalysis -OutputDirectory %2 |
||||
|
||||
hg archive %2\protobuf-csharp-port-%2-source.zip |
||||
|
||||
"%WIN7SDK_DIR%sn.exe" -T ..\build_output\v2.0\Release\Google.ProtocolBuffers.dll |
||||
@ECHO. |
||||
@ECHO *********************************************************** |
||||
@ECHO IMPORTANT: Verify the above key output is: 55f7125234beb589 |
||||
@ECHO *********************************************************** |
||||
@ECHO. |
||||
@ECHO NEXT: Verify the output in %~dp0\%2 and then run "%0 push %2" |
||||
@ECHO. |
||||
@GOTO EXIT |
||||
|
||||
:PUSH |
||||
@IF "%2" == "" @GOTO HELP |
||||
|
||||
hg commit -m "version %2" |
||||
hg tag %2 |
||||
hg push |
||||
@ECHO. |
||||
@ECHO NEXT: Verify the repository state and run "%0 fpush %2 {google-code-user} {google-code-password}" |
||||
@ECHO. |
||||
@GOTO EXIT |
||||
|
||||
:FILEPUSH |
||||
@IF "%2" == "" @GOTO HELP |
||||
@IF "%3" == "" @GOTO HELP |
||||
@IF "%4" == "" @GOTO HELP |
||||
SET GOOGLEUPLOAD=python.exe googlecode_upload.py --project protobuf-csharp-port --user "%3" --password "%4" |
||||
|
||||
%GOOGLEUPLOAD% --labels Type-Source,Featured --summary "Version %2 source" %2\protobuf-csharp-port-%2-source.zip |
||||
%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries (all configurations)" %2\protobuf-csharp-port-%2-full-binaries.zip |
||||
%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries (release only)" %2\protobuf-csharp-port-%2-release-binaries.zip |
||||
|
||||
@SET GOOGLEUPLOAD= |
||||
@ECHO. |
||||
@ECHO NEXT: Verify the uploads and run "%0 nupush %2" |
||||
@ECHO. |
||||
@GOTO EXIT |
||||
|
||||
:NUGETPUSH |
||||
|
||||
..\lib\NuGet.exe push "%2\Google.ProtocolBuffers.%2.nupkg" |
||||
..\lib\NuGet.exe push "%2\Google.ProtocolBuffersLite.%2.nupkg" |
||||
..\lib\NuGet.exe push "%2\Google.ProtocolBuffers.%2.symbols.nupkg" |
||||
..\lib\NuGet.exe push "%2\Google.ProtocolBuffersLite.%2.symbols.nupkg" |
||||
|
||||
@ECHO. |
||||
@ECHO NEXT: Verify the nuget packages at http://nuget.org |
||||
@ECHO. |
||||
@GOTO EXIT |
||||
|
||||
:HELP |
||||
@ECHO. |
||||
@ECHO Available commands, run in the following order: |
||||
@ECHO 1. %0 version |
||||
@ECHO 2. %0 build {version from step 1} |
||||
@ECHO 3. %0 push {version from step 1} |
||||
@ECHO 4. %0 fpush {version from step 1} {google-code-user} {google-code-password} |
||||
@ECHO 5. %0 nupush {version from step 1} |
||||
@ECHO. |
||||
@GOTO EXIT |
||||
|
||||
:EXIT |
||||
@POPD |
@ -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> |
Binary file not shown.
Loading…
Reference in new issue