Skip to content

Commit d31f502

Browse files
authored
Refactoring/organization of release steps (#125)
- Allow for per-package release notes via `RELEASENOTES.md` - Organize common release targets - packaging and versioning - Update ESRP signing task, drops need for netcoreapp 2.1
1 parent 15d530c commit d31f502

24 files changed

+162
-82
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## v1.0.1
4+
5+
### Microsoft.DurableTask.Client
6+
7+
- Fix incorrect bounds check on `PurgeResult`
8+
- Address typo for `DurableTaskClient.GetInstancesAsync` (incorrectly pluralized)
9+
- Added `GetInstanceAsync`
10+
- Hide `GetInstancesAsync` from editor
11+
312
## v1.0.0
413

514
- Added `SuspendInstanceAsync` and `ResumeInstanceAsync` to `DurableTaskClient`.

azure-pipelines-release.yml

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,15 @@ pool:
77
demands:
88
- ImageOverride -equals MMS2022TLS
99

10+
variables:
11+
project: 'src/dirs.proj'
12+
1013
steps:
1114
- checkout: self
1215
submodules: true
1316

1417
- task: UseDotNet@2
15-
displayName: 'Use the .NET Core 2.1 SDK (required for build signing)'
16-
inputs:
17-
packageType: 'sdk'
18-
version: '2.1.x'
19-
20-
- task: UseDotNet@2
21-
displayName: 'Use the .NET 6 SDK'
18+
displayName: 'Install .NET SDK'
2219
inputs:
2320
packageType: 'sdk'
2421
useGlobalJson: true
@@ -29,27 +26,27 @@ steps:
2926
inputs:
3027
command: restore
3128
verbosityRestore: Minimal
32-
projects: 'src/dirs.proj'
29+
projects: $(project)
3330

3431
# Build source directory
3532
- task: DotNetCoreCLI@2
3633
displayName: 'Build'
3734
inputs:
3835
command: build
3936
arguments: --no-restore -c release -p:FileVersionRevision=$(Build.BuildId) -p:ContinuousIntegrationBuild=true
40-
projects: 'src/dirs.proj'
37+
projects: $(project)
4138

4239
# Authenticode sign all the DLLs with the Microsoft certificate.
4340
# This appears to be an in-place signing job, which is convenient.
44-
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
41+
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
4542
displayName: 'ESRP CodeSigning: Authenticode'
4643
inputs:
4744
ConnectedServiceName: 'ESRP Service'
4845
FolderPath: 'out/bin'
4946
Pattern: 'Microsoft.DurableTask.*.dll'
5047
signConfigType: inlineSignParams
5148
inlineOperation: |
52-
[
49+
[
5350
{
5451
"KeyCode": "CP-230012",
5552
"OperationCode": "SigntoolSign",
@@ -88,34 +85,34 @@ steps:
8885
configuration: release
8986
nobuild: true
9087
packDirectory: $(build.artifactStagingDirectory)
91-
packagesToPack: 'src/dirs.proj'
88+
packagesToPack: $(project)
9289

9390
# Digitally sign all the nuget packages with the Microsoft certificate.
9491
# This appears to be an in-place signing job, which is convenient.
95-
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
92+
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
9693
displayName: 'ESRP CodeSigning: Nupkg'
9794
inputs:
9895
ConnectedServiceName: 'ESRP Service'
9996
FolderPath: $(build.artifactStagingDirectory)
10097
Pattern: '*.nupkg'
10198
signConfigType: inlineSignParams
10299
inlineOperation: |
103-
[
100+
[
104101
{
105-
"KeyCode": "CP-401405",
106-
"OperationCode": "NuGetSign",
107-
"Parameters": {},
108-
"ToolName": "sign",
109-
"ToolVersion": "1.0"
102+
"KeyCode": "CP-401405",
103+
"OperationCode": "NuGetSign",
104+
"Parameters": {},
105+
"ToolName": "sign",
106+
"ToolVersion": "1.0"
110107
},
111108
{
112-
"KeyCode": "CP-401405",
113-
"OperationCode": "NuGetVerify",
114-
"Parameters": {},
115-
"ToolName": "sign",
116-
"ToolVersion": "1.0"
109+
"KeyCode": "CP-401405",
110+
"OperationCode": "NuGetVerify",
111+
"Parameters": {},
112+
"ToolName": "sign",
113+
"ToolVersion": "1.0"
117114
}
118-
]
115+
]
119116
120117
# Make the nuget packages available for download in the ADO portal UI
121118
- publish: $(build.artifactStagingDirectory)

eng/targets/Release.props

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<Project>
2+
3+
<!--
4+
Release.props: props relating to the release integrity of our product.
5+
- Nuget packaging props
6+
- Versioning props
7+
-->
8+
9+
<!-- Common NuGet settings -->
10+
<PropertyGroup>
11+
<Authors>Microsoft</Authors>
12+
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
13+
<RepositoryUrl>https://github.com/microsoft/durabletask-dotnet</RepositoryUrl>
14+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
15+
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl>
16+
<PackageTags>Microsoft Durable Task Orchestration Workflow Activity Reliable DTFx</PackageTags>
17+
</PropertyGroup>
18+
19+
<PropertyGroup>
20+
<VersionPrefix>1.0.1</VersionPrefix>
21+
</PropertyGroup>
22+
23+
</Project>

eng/targets/Release.targets

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<Project>
2+
3+
<!--
4+
Release.targets: targets relating to the release integrity of our product.
5+
- Nuget packaging targets
6+
- Versioning targets
7+
-->
8+
9+
<PropertyGroup>
10+
<ReleaseNotesFile Condition="'$(ReleaseNotesFile)' == ''">RELEASENOTES.md</ReleaseNotesFile>
11+
<BeforePack>$(BeforePack);GetReleaseNotes;AddCommonReleaseNotes</BeforePack>
12+
<PackageReadmeFile Condition="Exists('README.md')">README.md</PackageReadmeFile>
13+
</PropertyGroup>
14+
15+
<!-- Embed the SBOM manifest, which is generated as part of the "official" build -->
16+
<ItemGroup Condition="'$(Configuration)'=='Release'">
17+
<Content Include="..\..\_manifest\**" Pack="true" PackagePath="content/SBOM">
18+
<Pack>true</Pack>
19+
<PackagePath>content/SBOM</PackagePath>
20+
</Content>
21+
</ItemGroup>
22+
23+
<ItemGroup Condition="Exists('README.md')">
24+
<Content Include="README.md" Pack="true" PackagePath="/" />
25+
</ItemGroup>
26+
27+
<!-- This target lets us define a release notes file per package. -->
28+
<Target Name="GetReleaseNotes" Condition="'$(PackageReleaseNotes)' == '' and Exists('$(ReleaseNotesFile)')">
29+
<PropertyGroup>
30+
<PackageReleaseNotes>$([System.IO.File]::ReadAllText('$(ReleaseNotesFile)'))</PackageReleaseNotes>
31+
</PropertyGroup>
32+
</Target>
33+
34+
<Target Name="AddCommonReleaseNotes">
35+
<PropertyGroup>
36+
<PackageReleaseNotes>
37+
See $(RepositoryUrl)/releases/tag/v$(Version)
38+
39+
$(PackageReleaseNotes)
40+
</PackageReleaseNotes>
41+
</PropertyGroup>
42+
</Target>
43+
44+
</Project>

src/Abstractions/Abstractions.csproj

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66
<EnableStyleCop>true</EnableStyleCop>
77
</PropertyGroup>
88

9-
<!-- Version info -->
10-
<PropertyGroup>
11-
<VersionPrefix>1.0.0</VersionPrefix>
12-
</PropertyGroup>
13-
149
<ItemGroup>
1510
<PackageReference Include="Microsoft.Azure.DurableTask.Core" Version="2.11.1" />
1611
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="6.0.0" />

src/Abstractions/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Abstractions for `Microsoft.DurableTask`. This package is for the core types used to define orchestrations and activities that are ran as part of Durable Task Framework.
2+
3+
Commonly used types:
4+
- `TaskOrchestrator<TInput, TOutput>`
5+
- `TaskActivity<TInput, TOutput>`
6+
7+
For more information, see https://github.com/microsoft/durabletask-dotnet

src/Client/Core/Client.csproj

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ The client is responsible for interacting with orchestrations from outside the w
88
<EnableStyleCop>true</EnableStyleCop>
99
</PropertyGroup>
1010

11-
<!-- Version info -->
12-
<PropertyGroup>
13-
<VersionPrefix>1.0.0</VersionPrefix>
14-
</PropertyGroup>
15-
1611
<ItemGroup>
1712
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
1813
</ItemGroup>

src/Client/Core/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Client abstractions for `Microsoft.DurableTask`. A `DurableTaskClient` is used for interacting with a task hub. Including starting new orchestrations, retrieving orchestration details, sending events to orchestrations, etc. This package does not include a concrete client implementation. Instead a separate client package must be used, such as `Microsoft.DurableTask.Client.Grpc`.
2+
3+
Commonly used types:
4+
- `DurableTaskClient`
5+
- `DurableTaskClientOptions`
6+
- `IDurableTaskClientProvider`
7+
- `IDurableTaskClientBuilder`
8+
9+
For more information, see https://github.com/microsoft/durabletask-dotnet

src/Client/Core/RELEASENOTES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- Fix incorrect bounds check on `PurgeResult`
2+
- Address typo for `DurableTaskClient.GetInstancesAsync` (incorrectly pluralized)
3+
- Added `GetInstanceAsync`
4+
- Hide `GetInstancesAsync` from editor

src/Client/Grpc/Client.Grpc.csproj

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66
<EnableStyleCop>true</EnableStyleCop>
77
</PropertyGroup>
88

9-
<!-- Version info -->
10-
<PropertyGroup>
11-
<VersionPrefix>1.0.0</VersionPrefix>
12-
</PropertyGroup>
13-
149
<ItemGroup>
1510
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0" />
1611
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="6.0.0" />

0 commit comments

Comments
 (0)