Skip to content

Commit

Permalink
Merge pull request #2878 from Azure/vabachu/merge-dev
Browse files Browse the repository at this point in the history
Merge dev into v3.x
  • Loading branch information
nytian authored Jul 26, 2024
2 parents 8ba1e24 + 87f7fba commit 63cbcf7
Show file tree
Hide file tree
Showing 48 changed files with 1,237 additions and 189 deletions.
59 changes: 59 additions & 0 deletions .github/workflows/validate-build-analyzer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Validate Build (analyzer)

on:
push:
branches:
- main
- dev
paths-ignore: [ '**.md' ]
pull_request:
branches:
- '*'
paths-ignore: [ '**.md' ]

env:
solution: WebJobs.Extensions.DurableTask.sln
config: Release
AzureWebJobsStorage: UseDevelopmentStorage=true

jobs:
build:
runs-on: windows-latest

steps:
- uses: actions/checkout@v3
with:
submodules: true

- name: Setup .NET
uses: actions/setup-dotnet@v3

- name: Set up .NET Core 3.1
uses: actions/setup-dotnet@v3
with:
dotnet-version: '3.1.x'

- name: Set up .NET Core 2.1
uses: actions/setup-dotnet@v3
with:
dotnet-version: '2.1.x'

- name: Restore dependencies
run: dotnet restore $solution

- name: Build
run: dotnet build $solution

# Install Azurite
- name: Set up Node.js (needed for Azurite)
uses: actions/setup-node@v3
with:
node-version: '18.x' # Azurite requires at least Node 18

- name: Install Azurite
run: npm install -g azurite

# Run tests
- name: Run Analyzer tests
run: azurite --silent --blobPort 10000 --queuePort 10001 --tablePort 10002 & dotnet test ./test/WebJobs.Extensions.DurableTask.Analyzers.Test/WebJobs.Extensions.DurableTask.Analyzers.Test.csproj

61 changes: 61 additions & 0 deletions .github/workflows/validate-build-e2e.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Validate Build (E2E tests)

on:
push:
branches:
- main
- dev
paths-ignore: [ '**.md' ]
pull_request:
branches:
- '*'
paths-ignore: [ '**.md' ]

env:
solution: WebJobs.Extensions.DurableTask.sln
config: Release
AzureWebJobsStorage: UseDevelopmentStorage=true

jobs:
build:
runs-on: windows-latest

steps:
- uses: actions/checkout@v3
with:
submodules: true

- name: Setup .NET
uses: actions/setup-dotnet@v3

- name: Set up .NET Core 3.1
uses: actions/setup-dotnet@v3
with:
dotnet-version: '3.1.x'

- name: Set up .NET Core 2.1
uses: actions/setup-dotnet@v3
with:
dotnet-version: '2.1.x'

- name: Restore dependencies
run: dotnet restore $solution

- name: Build
run: dotnet build $solution

# Install Azurite
- name: Set up Node.js (needed for Azurite)
uses: actions/setup-node@v3
with:
node-version: '18.x' # Azurite requires at least Node 18

- name: Install Azurite
run: npm install -g azurite

# Run tests
- name: Run FunctionsV2 tests (only DurableEntity_CleanEntityStorage test, which is flaky)
run: azurite --silent --blobPort 10000 --queuePort 10001 --tablePort 10002 & dotnet test ./test/FunctionsV2/WebJobs.Extensions.DurableTask.Tests.V2.csproj --filter "FullyQualifiedName~Microsoft.Azure.WebJobs.Extensions.DurableTask.Tests.DurableTaskEndToEndTests.DurableEntity_CleanEntityStorage"

- name: Run FunctionsV2 tests (all other E2E tests)
run: azurite --silent --blobPort 10000 --queuePort 10001 --tablePort 10002 & dotnet test ./test/FunctionsV2/WebJobs.Extensions.DurableTask.Tests.V2.csproj --filter "FullyQualifiedName~Microsoft.Azure.WebJobs.Extensions.DurableTask.Tests.DurableTaskEndToEndTests&FullyQualifiedName!~Microsoft.Azure.WebJobs.Extensions.DurableTask.Tests.DurableTaskEndToEndTests.DurableEntity_CleanEntityStorage"
62 changes: 62 additions & 0 deletions .github/workflows/validate-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Validate Build (except E2E tests)

on:
push:
branches:
- main
- dev
paths-ignore: [ '**.md' ]
pull_request:
branches:
- '*'
paths-ignore: [ '**.md' ]

env:
solution: WebJobs.Extensions.DurableTask.sln
config: Release
AzureWebJobsStorage: UseDevelopmentStorage=true

jobs:
build:
runs-on: windows-latest

steps:
- uses: actions/checkout@v3
with:
submodules: true

- name: Setup .NET
uses: actions/setup-dotnet@v3

- name: Set up .NET Core 3.1
uses: actions/setup-dotnet@v3
with:
dotnet-version: '3.1.x'

- name: Set up .NET Core 2.1
uses: actions/setup-dotnet@v3
with:
dotnet-version: '2.1.x'

- name: Restore dependencies
run: dotnet restore $solution

- name: Build
run: dotnet build $solution

# Install Azurite
- name: Set up Node.js (needed for Azurite)
uses: actions/setup-node@v3
with:
node-version: '18.x' # Azurite requires at least Node 18

- name: Install Azurite
run: npm install -g azurite

# Run tests
- name: Run FunctionsV2 tests (except E2E tests)
run: azurite --silent --blobPort 10000 --queuePort 10001 --tablePort 10002 & dotnet test ./test/FunctionsV2/WebJobs.Extensions.DurableTask.Tests.V2.csproj --filter "FullyQualifiedName!~Microsoft.Azure.WebJobs.Extensions.DurableTask.Tests.DurableTaskEndToEndTests"

- name: Run Worker Extension tests
run: azurite --silent --blobPort 10000 --queuePort 10001 --tablePort 10002 & dotnet test ./test/Worker.Extensions.DurableTask.Tests/Worker.Extensions.DurableTask.Tests.csproj

20 changes: 20 additions & 0 deletions eng/ci/code-mirror.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
trigger:
branches:
include:
# These are the branches we'll mirror to our internal ADO instance
# Keep this set limited as appropriate (don't mirror individual user branches).
- main
- dev

resources:
repositories:
- repository: eng
type: git
name: engineering
ref: refs/tags/release

variables:
- template: ci/variables/cfs.yml@eng

extends:
template: ci/code-mirror.yml@eng
36 changes: 36 additions & 0 deletions eng/ci/official-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
variables:
- template: ci/variables/cfs.yml@eng

trigger:
batch: true
branches:
include:
- main

# CI only, does not trigger on PRs.
pr: none

resources:
repositories:
- repository: 1es
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release
- repository: eng
type: git
name: engineering
ref: refs/tags/release

extends:
template: v1/1ES.Official.PipelineTemplate.yml@1es
parameters:
pool:
name: 1es-pool-azfunc
image: 1es-windows-2022
os: windows

stages:
- stage: BuildAndSign
dependsOn: []
jobs:
- template: /eng/templates/build.yml@self
105 changes: 105 additions & 0 deletions eng/templates/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
jobs:
- job: Build

templateContext:
outputs:
- output: pipelineArtifact
path: $(build.artifactStagingDirectory)
artifact: drop
sbomBuildDropPath: $(build.artifactStagingDirectory)
sbomPackageName: 'Durable Functions Extension SBOM'

steps:

# Configure all the .NET SDK versions we need
- task: UseDotNet@2
displayName: 'Use the .NET Core 2.1 SDK (required for build signing)'
inputs:
packageType: 'sdk'
version: '2.1.x'

- task: UseDotNet@2
displayName: 'Use the .NET Core 3.1 SDK'
inputs:
packageType: 'sdk'
version: '3.1.x'

- task: UseDotNet@2
displayName: 'Use the .NET 6 SDK'
inputs:
packageType: 'sdk'
version: '6.0.x'

# Start by restoring all the dependencies.
- task: DotNetCoreCLI@2
displayName: 'dotnet restore'
inputs:
command: restore
projects: '**/**/*.csproj'
feedsToUse: config
nugetConfigPath: 'nuget.config'

# Build durable-extension
- task: VSBuild@1
displayName: 'Build Durable Extension'
inputs:
solution: '**/WebJobs.Extensions.DurableTask.sln'
vsVersion: "16.0"
configuration: Release

- template: ci/sign-files.yml@eng
parameters:
displayName: Sign assemblies
folderPath: 'src/WebJobs.Extensions.DurableTask/bin/Release'
pattern: '*DurableTask.dll'
signType: dll

# dotnet pack
# Packaging needs to be a separate step from build.
# This will automatically pick up the signed DLLs.
- task: DotNetCoreCLI@2
displayName: 'dotnet pack WebJobs.Extensions.DurableTask.csproj'
inputs:
command: pack
packagesToPack: 'src/**/WebJobs.Extensions.DurableTask.csproj'
configuration: Release
packDirectory: 'azure-functions-durable-extension'
nobuild: true

# Remove redundant symbol package(s)
- script: |
echo *** Searching for .symbols.nupkg files to delete...
dir /s /b *.symbols.nupkg
echo *** Deleting .symbols.nupkg files...
del /S /Q *.symbols.nupkg
echo *** Listing remaining packages
dir /s /b *.nupkg
displayName: 'Remove Redundant Symbols Package(s)'
continueOnError: true
- template: ci/sign-files.yml@eng
parameters:
displayName: Sign NugetPackages
folderPath: $(build.artifactStagingDirectory)
pattern: '*.nupkg'
signType: nuget

# zip .NET in-proc perf tests
- task: DotNetCoreCLI@2
displayName: 'Zip .NET in-proc perf tests'
inputs:
command: 'publish'
publishWebProjects: false
projects: '$(System.DefaultWorkingDirectory)/test/PerfTests/DFPerfTests/**/*.csproj'
arguments: '-o $(System.DefaultWorkingDirectory)/test/PerfTests/DFPerfTests/Output'
zipAfterPublish: true
modifyOutputPath: true

# Move zip'ed .NET in-proc perf tests to the ADO publishing directory
- task: CopyFiles@2
inputs:
SourceFolder: '$(System.DefaultWorkingDirectory)/test/PerfTests/DFPerfTests/Output/'
Contents: '**'
TargetFolder: '$(System.DefaultWorkingDirectory)/azure-functions-durable-extension/'
1 change: 1 addition & 0 deletions nuget.config
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

<configuration>
<packageSources>
<clear/>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="AzureFunctionsTempStaging" value="https://pkgs.dev.azure.com/azfunc/e6a70c92-4128-439f-8012-382fe78d6396/_packaging/AzureFunctionsTempStaging/nuget/v3/index.json" />
<add key="durabletask" value="https://pkgs.dev.azure.com/durabletaskframework/734e7913-2fab-4624-a174-bc57fe96f95d/_packaging/durabletask/nuget/v3/index.json" />
Expand Down
Loading

0 comments on commit 63cbcf7

Please sign in to comment.