Skip to content

Commit 39cb422

Browse files
Enable Code Signing (#274)
* Update badge URL to internal build definition * Update build to support code and package signing * Update process to use ESRP only
1 parent d6bc6c9 commit 39cb422

9 files changed

+84
-19
lines changed

ApiVersioning.sln

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ EndProject
2929
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{915BB224-B1D0-4E27-A348-67FCC77AAA44}"
3030
EndProject
3131
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "webapi", "webapi", "{F446ED94-368F-4F67-913B-16E82CA80DFC}"
32+
ProjectSection(SolutionItems) = preProject
33+
samples\webapi\directory.build.targets = samples\webapi\directory.build.targets
34+
EndProjectSection
3235
EndProject
3336
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnetcore", "aspnetcore", "{900DD210-8500-4D89-A05D-C9526935A719}"
3437
EndProject
@@ -102,13 +105,15 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Common.ApiExplorer", "src\C
102105
EndProject
103106
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{2BB57808-14AF-4209-9842-1D6E76A99C3F}"
104107
ProjectSection(SolutionItems) = preProject
108+
after.apiversioning.sln.targets = after.apiversioning.sln.targets
105109
build\code-analysis.props = build\code-analysis.props
106110
build\common.props = build\common.props
107111
build\file-version.targets = build\file-version.targets
108112
build\nuget.props = build\nuget.props
109113
build\nuget.targets = build\nuget.targets
110114
build\resource.targets = build\resource.targets
111115
build\signing.props = build\signing.props
116+
build\signing.targets = build\signing.targets
112117
EndProjectSection
113118
EndProject
114119
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{3BDDAF5E-4148-4D7F-9B9A-EA11D0110FEB}"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![VSTS Build Status](https://mrtechnocal.visualstudio.com/_apis/public/build/definitions/f0b1168c-671a-4dd1-ac55-2f0e25c4a405/1/badge)](https://mrtechnocal.visualstudio.com/ApiVersioning/_build/index?definitionId=1)
1+
[![VSTS Build Status](https://microsoft.visualstudio.com/_apis/public/build/definitions/8d47e068-03c8-4cdc-aa9b-fc6929290322/25012/badge)
22

33
# ASP.NET API Versioning
44

after.apiversioning.sln.targets

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
4+
<Import Project="build\signing.targets" />
5+
6+
<Target Name="AfterSolutionBuild" AfterTargets="Build">
7+
8+
<PropertyGroup>
9+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
10+
<BuildProperties>Configuration=$(Configuration)</BuildProperties>
11+
<BuildProperties Condition=" ('$(Platform)' != '') AND ('$(Platform)' != 'AnyCPU') AND ('$(Platform)' != 'Any CPU') ">$(BuildProperties);Platform=$(Platform)</BuildProperties>
12+
</PropertyGroup>
13+
14+
<ItemGroup>
15+
<Projects Include="src\**\*.csproj" />
16+
</ItemGroup>
17+
18+
<MSBuild Projects="@(Projects)" Targets="GetTargetPath" Properties="$(BuildProperties)" UnloadProjectsOnCompletion="true">
19+
<Output TaskParameter="TargetOutputs" ItemName="TargetFiles" />
20+
</MSBuild>
21+
22+
<PropertyGroup>
23+
<!-- transform list to pipe-separated values so we can forward it as a parameter using a build property -->
24+
<SigningProperties>
25+
SourceDir=$(MSBuildThisFileDirectory)\src;
26+
FilesToSign=@(TargetFiles->'%(Identity)','|')
27+
</SigningProperties>
28+
</PropertyGroup>
29+
30+
<MSBuild Projects ="$(MSBuildThisFileFullPath)" Targets="WriteCodeSigningFileList" Properties="$(SigningProperties)" />
31+
32+
</Target>
33+
34+
</Project>

build/common.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
<PropertyGroup Label="Common">
55
<Company>Microsoft Corporation</Company>
6-
<Authors>$(Company)</Authors>
7-
<Copyright>Copyright © 2016. $(Company). All rights reserved.</Copyright>
6+
<Authors>Microsoft</Authors>
7+
<Copyright>© $(Company). All rights reserved.</Copyright>
88
<NeutralLanguage>en</NeutralLanguage>
99
<DefaultLanguage>en-US</DefaultLanguage>
1010
</PropertyGroup>

build/file-version.targets

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33

4-
<PropertyGroup Label="File Version">
5-
<!-- replicates the behavior of 1.0.* -->
6-
<MajorAndMinorVersion>$(AssemblyVersion.Split(`.`)[0]).$(AssemblyVersion.Split(`.`)[1])</MajorAndMinorVersion>
7-
<DaylightSavingTime>$([System.DateTime]::Now.IsDaylightSavingTime())</DaylightSavingTime>
8-
<FileBuildNumber>$([System.DateTime]::Today.Subtract($([System.DateTime]::Parse("1/1/2000"))).ToString("%d"))</FileBuildNumber>
9-
<FileBuildRevision Condition=" '$(DaylightSavingTime)'=='True' " >$([System.Convert]::ToInt32($([MSBuild]::Divide($([System.DateTime]::Now.TimeOfDay.Subtract($([System.TimeSpan]::FromHours(1.0))).TotalSeconds),2))))</FileBuildRevision>
10-
<FileBuildRevision Condition=" '$(DaylightSavingTime)'=='False' " >$([System.Convert]::ToInt32($([MSBuild]::Divide($([System.DateTime]::Now.TimeOfDay.TotalSeconds),2))))</FileBuildRevision>
11-
<FileVersion>$(MajorAndMinorVersion).$(FileBuildNumber).$(FileBuildRevision)</FileVersion>
12-
</PropertyGroup>
4+
<PropertyGroup Label="File Version">
5+
<!-- replicates the behavior of 1.0.* -->
6+
<AssemblyVersion Condition=" '$(AssemblyVersion)' == '' ">1.0.0.0</AssemblyVersion>
7+
<MajorAndMinorVersion>$(AssemblyVersion.Split(`.`)[0]).$(AssemblyVersion.Split(`.`)[1])</MajorAndMinorVersion>
8+
<DaylightSavingTime>$([System.DateTime]::Now.IsDaylightSavingTime())</DaylightSavingTime>
9+
<FileBuildNumber>$([System.DateTime]::Today.Subtract($([System.DateTime]::Parse("1/1/2000"))).ToString("%d"))</FileBuildNumber>
10+
<FileBuildRevision Condition=" '$(DaylightSavingTime)'=='True' " >$([System.Convert]::ToInt32($([MSBuild]::Divide($([System.DateTime]::Now.TimeOfDay.Subtract($([System.TimeSpan]::FromHours(1.0))).TotalSeconds),2))))</FileBuildRevision>
11+
<FileBuildRevision Condition=" '$(DaylightSavingTime)'=='False' " >$([System.Convert]::ToInt32($([MSBuild]::Divide($([System.DateTime]::Now.TimeOfDay.TotalSeconds),2))))</FileBuildRevision>
12+
<FileVersion>$(MajorAndMinorVersion).$(FileBuildNumber).$(FileBuildRevision)</FileVersion>
13+
</PropertyGroup>
1314

1415
</Project>

build/nuget.props

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,12 @@
1212
<IncludeSource>true</IncludeSource>
1313
<IncludeBuildOutput>true</IncludeBuildOutput>
1414
<MinClientVersion>2.5</MinClientVersion>
15-
<PackageOutputPath>$(MSBuildThisFileDirectory)..\bin</PackageOutputPath>
15+
<PackageOutputPath Condition=" $(PackageOutputPath) == '' ">$(MSBuildThisFileDirectory)..\bin</PackageOutputPath>
1616
</PropertyGroup>
1717

1818
<ItemGroup Label="NuGet">
1919
<!-- allow build-specific, one-time release notes from the command-line without modifying the source project -->
2020
<ReleaseNotes Include="$(BuildReleaseNotes.Split('|'))" />
2121
</ItemGroup>
2222

23-
<PropertyGroup Condition=" '$(Configuration)' == 'Release' " Label="NuGet">
24-
<GenerateDocumentationFile>true</GenerateDocumentationFile>
25-
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
26-
</PropertyGroup>
27-
2823
</Project>

build/signing.targets

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
4+
<!-- REF: https://microsoft.sharepoint.com/teams/prss/esrp/info/ESRP%20Onboarding%20Wiki/Integrate%20the%20ESRP%20CodeSign%20Task%20into%20VSO.aspx -->
5+
<PropertyGroup>
6+
<SignConfigPath Condition=" '$(SignConfigPath)' == '' ">$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\bin'))</SignConfigPath>
7+
</PropertyGroup>
8+
9+
<Target Name="WriteCodeSigningFileList">
10+
11+
<ItemGroup>
12+
<FilesToSign Include="$(FilesToSign.Split('|'))" />
13+
</ItemGroup>
14+
15+
<MakeDir Directories="$(SignConfigPath)" Condition="!Exists('$(SignConfigPath)')" />
16+
<WriteLinesToFile File="$(SignConfigPath)\signing-file-list.txt" Encoding="ascii" Lines="@(FilesToSign->'%(Identity)'->Substring($(SourceDir.Length)),',')" Overwrite="true" />
17+
18+
</Target>
19+
20+
</Project>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
4+
<!-- ASP.NET Web API uses the older project style. Define an empty target for 'Pack' to avoid MSB4057 during solution builds. -->
5+
<Target Name="Pack" Condition="false" />
6+
7+
</Project>

src/directory.build.targets

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33

44
<PropertyGroup Label="Common">
5-
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
5+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
6+
<DocumentationFile Condition=" '$(DocumentationFile)' == '' " >bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
67
</PropertyGroup>
78

89
<ImportGroup Condition=" '$(MSBuildProjectExtension)' != '.shproj' ">
@@ -11,4 +12,6 @@
1112
<Import Project="..\build\nuget.targets" />
1213
</ImportGroup>
1314

15+
<Target Name="GetTargetPath" Outputs="$(TargetPath)" />
16+
1417
</Project>

0 commit comments

Comments
 (0)