diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 8885601..256b704 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,6 +2,7 @@ # Start with a minimal pipeline that you can customize to build and deploy your code. # Add steps that build, run tests, deploy, and more: # https://aka.ms/yaml +name: $(Rev:r) trigger: branches: @@ -15,8 +16,6 @@ trigger: - LICENSE.TXT - README.md -name: $(Rev:r) - jobs: - job: Windows @@ -27,68 +26,15 @@ jobs: buildConfiguration: Release steps: - - pwsh: | - Write-Output 'BUILD_PR=$(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) BUILD_ID=$(BUILD.BUILDNUMBER)' - displayName: "Echo the build variables" - - - pwsh: | - [string]$latestTag=iex 'git describe --tags --abbrev=0' - [string]$version="v$latestTag.$(BUILD.BUILDNUMBER)" - Write-Output "##vso[build.updatebuildnumber]$version" - displayName: "Set buld task name" - - - task: UseDotNet@2 - displayName: "Add dotnet core 2.1" - inputs: - version: 2.1.x - packageType: sdk - includePreviewVersions: false - - - task: UseDotNet@2 - displayName: "Use dotnet core 3.1" - inputs: - version: 3.1.x - packageType: sdk - includePreviewVersions: true - - - task: DotNetCoreCLI@2 - displayName: "Restore packages" - inputs: - command: "restore" - projects: "HoneycombSerilogSink.sln" - - - task: DotNetCoreCLI@2 - displayName: "Build" - env: - BUILD_PR: $(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) - BUILD_ID: $(BUILD.BUILDNUMBER) - inputs: - command: "build" - projects: "HoneycombSerilogSink.sln" - arguments: '-c $(buildConfiguration)' - - - task: DotNetCoreCLI@2 - displayName: 'Test' - inputs: - command: 'test' - projects: 'HoneycombSerilogSink.sln' - arguments: '--no-restore --no-build -c $(buildConfiguration) --collect "Code coverage"' - - - task: DotNetCoreCLI@2 - displayName: 'Package' - env: - BUILD_PR: $(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) - BUILD_ID: $(BUILD.BUILDNUMBER) - inputs: - command: 'pack' - arguments: '.\src\Honeycomb.Serilog.Sink\Honeycomb.Serilog.Sink.csproj --output $(Build.ArtifactStagingDirectory) --configuration $(buildConfiguration) --no-build' - - - task: PublishBuildArtifacts@1 - displayName: 'Publish built artifacts' - env: - BUILD_PR: $(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) - BUILD_ID: $(BUILD.BUILDNUMBER) - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)' - ArtifactName: 'nuget' - publishLocation: 'Container' + - pwsh: | + displayName: "Echo the build variables" + + - pwsh: | + [string]$latestTag=iex 'git describe --tags --abbrev=0' + [string]$version="v$latestTag.$(BUILD.BUILDNUMBER)" + Write-Output 'BUILD_PR=$(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) BUILD_ID=$(BUILD.BUILDNUMBER)' + Write-Output "##vso[task.setvariable variable=releaseTag]$latestTag" + Write-Host "##vso[build.updatebuildnumber]$version" + displayName: "Set buld task name" + + - template: ci/templates/build-and-package.yml \ No newline at end of file diff --git a/ci/templates/build-and-package.yml b/ci/templates/build-and-package.yml new file mode 100644 index 0000000..ffef347 --- /dev/null +++ b/ci/templates/build-and-package.yml @@ -0,0 +1,57 @@ +steps: + +- task: UseDotNet@2 + displayName: "Add dotnet core 2.1" + inputs: + version: 2.1.x + packageType: sdk + includePreviewVersions: false + +- task: UseDotNet@2 + displayName: "Use dotnet core 3.1" + inputs: + version: 3.1.x + packageType: sdk + includePreviewVersions: true + +- task: DotNetCoreCLI@2 + displayName: "Restore packages" + inputs: + command: "restore" + projects: "HoneycombSerilogSink.sln" + +- task: DotNetCoreCLI@2 + displayName: "Build" + env: + BUILD_PR: $(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) + BUILD_ID: $(BUILD.BUILDNUMBER) + inputs: + command: "build" + projects: "HoneycombSerilogSink.sln" + arguments: '-c $(buildConfiguration)' + +- task: DotNetCoreCLI@2 + displayName: 'Test' + inputs: + command: 'test' + projects: 'HoneycombSerilogSink.sln' + arguments: '--no-restore --no-build -c $(buildConfiguration) --collect "Code coverage"' + +- task: DotNetCoreCLI@2 + displayName: 'Package' + env: + BUILD_PR: $(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) + BUILD_ID: $(BUILD.BUILDNUMBER) + inputs: + command: 'pack' + arguments: '.\src\Honeycomb.Serilog.Sink\Honeycomb.Serilog.Sink.csproj --output $(Build.ArtifactStagingDirectory) --configuration $(buildConfiguration) --no-build' + +- task: PublishBuildArtifacts@1 + displayName: 'Publish built artifacts' + env: + BUILD_PR: $(SYSTEM.PULLREQUEST.PULLREQUESTNUMBER) + BUILD_ID: $(BUILD.BUILDNUMBER) + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'nuget' + publishLocation: 'Container' \ No newline at end of file diff --git a/release-pipeline.yml b/release-pipeline.yml new file mode 100644 index 0000000..6984b54 --- /dev/null +++ b/release-pipeline.yml @@ -0,0 +1,47 @@ +# Add steps that build, run tests, deploy, and more: +# https://aka.ms/yaml + +trigger: + tags: + include: + - "*" + +pr: none + +pool: + vmImage: 'windows-latest' + +steps: +- pwsh: | + [string]$latestTag=iex 'git describe --tags --abbrev=0' + [string]$version="v$latestTag.$(BUILD.BUILDNUMBER)" + Write-Output "##vso[task.setvariable variable=releaseTag]$latestTag" + Write-Output "##vso[task.setvariable variable=version]$version" + displayName: "Set buld task name" + +- template: ci/templates/build-and-package.yml + +- pwsh: | + Write-Host "##vso[build.updatebuildnumber]$(latestTag)" + +- task: NuGetAuthenticate@0 + inputs: + nuGetServiceConnections: 'HoneycombSinkNugetFeed' + +- task: NuGetCommand@2 + displayName: 'Push package to nuget' + inputs: + command: push + nuGetFeedType: external + publishFeedCredentials: HoneycombSinkNugetFeed + +- task: GitHubRelease@1 + inputs: + gitHubConnection: GithubServiceConnection + repositoryName: '$(Build.Repository.Name)' + action: 'edit' + target: '$(Build.SourceVersion)' + releaseNotesSource: 'inline' + changeLogCompareToRelease: 'lastFullRelease' + changeLogType: 'commitBased' + tag: $(latestTag)