From b96ee795774a8d110d21095d4a88f0fe976bf3a6 Mon Sep 17 00:00:00 2001 From: Brendan Kowitz Date: Tue, 9 Apr 2019 09:43:12 -0700 Subject: [PATCH] Packages source for pre-release fhir-net-api versions (#404) * Packages source for pre-release stu3 versions * Adds descriptions to build configurations --- build/.vsts-ci.yml | 34 +++++++++++++++--------------- build/.vsts-package-ci.yml | 33 ++++++++++++++++++++++++++++++ build/.vsts-pr.yml | 33 +++++++++++++++--------------- build/Update-Packages.ps1 | 26 +++++++++++++++++++++++ build/build.yml | 42 +++++++++++++------------------------- nuget.config | 1 + 6 files changed, 108 insertions(+), 61 deletions(-) create mode 100644 build/.vsts-package-ci.yml create mode 100644 build/Update-Packages.ps1 diff --git a/build/.vsts-ci.yml b/build/.vsts-ci.yml index b4d93fb340..145506f4c8 100644 --- a/build/.vsts-ci.yml +++ b/build/.vsts-ci.yml @@ -1,20 +1,20 @@ -# ASP.NET Core (.NET Framework) -# Build and test ASP.NET Core web applications targeting the full .NET Framework. -# Add steps that publish symbols, save build artifacts, and more: -# https://docs.microsoft.com/vsts/pipelines/languages/dotnet-core +# DESCRIPTION: +# Builds, tests and packages the solution for the CI build configuration. name: $(SourceBranchName)-$(Date:yyyyMMdd)$(Rev:-r) +variables: + buildConfiguration: 'Release' +jobs: +- job: Windows + pool: + vmImage: 'vs2017-win2016' + steps: + - template: build.yml -phases: -- template: build.yml - parameters: - name: Windows - queue: 'Hosted VS2017' - packageArtifacts: true - -- template: build.yml - parameters: - name: Linux - queue: 'Hosted Ubuntu 1604' - packageArtifacts: false - \ No newline at end of file +- job: Linux + pool: + vmImage: 'ubuntu-16.04' + steps: + - template: build.yml + parameters: + packageArtifacts: false \ No newline at end of file diff --git a/build/.vsts-package-ci.yml b/build/.vsts-package-ci.yml new file mode 100644 index 0000000000..fc6734c92d --- /dev/null +++ b/build/.vsts-package-ci.yml @@ -0,0 +1,33 @@ +# DESCRIPTION: +# This build configuration is used to test the latest alpha/beta packages for the fhir-net-api. + +name: vNext$(SourceBranchName)-$(Date:yyyyMMdd)$(Rev:-r) +variables: + buildConfiguration: 'Release' +jobs: +- job: Windows + pool: + vmImage: 'vs2017-win2016' + steps: + - task: NuGetToolInstaller@0 + displayName: 'Use NuGet 4.7.1' + inputs: + versionSpec: 4.7.1 + checkLatest: true + - task: PowerShell@2 + displayName: 'Get latest Hl7.Fhir version' + inputs: + pwsh: true + targetType: Inline + script: | + $FhirPackage = nuget list $(package.name) -Prerelease -Source https://www.myget.org/F/fhir-net-api/api/v3/index.jsonĀ | Out-String + Write-Host "##vso[task.setvariable variable=packageVersion]$($FhirPackage.Split()[1])" + - task: PowerShell@2 + displayName: 'Update $(package.name)' + inputs: + pwsh: true + targetType: filePath + filePath: build/Update-Packages.ps1 + arguments: -PackageName $(package.name) -PackageVersion $(packageVersion) + workingDirectory: $(Build.SourcesDirectory) + - template: build.yml diff --git a/build/.vsts-pr.yml b/build/.vsts-pr.yml index b538703656..5e56502d79 100644 --- a/build/.vsts-pr.yml +++ b/build/.vsts-pr.yml @@ -1,19 +1,20 @@ -# ASP.NET Core (.NET Framework) -# Build and test ASP.NET Core web applications targeting the full .NET Framework. -# Add steps that publish symbols, save build artifacts, and more: -# https://docs.microsoft.com/vsts/pipelines/languages/dotnet-core +# DESCRIPTION: +# Builds, tests and packages the solution for all PR requests. name: pr$(system.pullRequest.pullRequestNumber)-$(Date:yyyyMMdd)$(Rev:-r) +variables: + buildConfiguration: 'Release' +jobs: +- job: Windows + pool: + vmImage: 'vs2017-win2016' + steps: + - template: build.yml -phases: -- template: build.yml - parameters: - name: Windows - queue: 'Hosted VS2017' - packageArtifacts: true - -- template: build.yml - parameters: - name: Linux - queue: 'Hosted Ubuntu 1604' - packageArtifacts: false +- job: Linux + pool: + vmImage: 'ubuntu-16.04' + steps: + - template: build.yml + parameters: + packageArtifacts: false diff --git a/build/Update-Packages.ps1 b/build/Update-Packages.ps1 new file mode 100644 index 0000000000..18587c3c98 --- /dev/null +++ b/build/Update-Packages.ps1 @@ -0,0 +1,26 @@ +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$PackageVersion, + + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$PackageName +) + +Set-StrictMode -Version Latest + +$projects = Get-Childitem -Path *.csproj -File -Recurse +Write-Host "Updating $($projects)" + +foreach($file in $projects) { + [xml] $csproj = Get-Content $file + $packageReference = $csproj.Project.SelectNodes("ItemGroup/PackageReference") | Where-Object Include -eq $PackageName + + if ($null -ne $packageReference) { + Write-Host "Updating $($file)" + $packageReference.setAttribute('Version', $packageVersion) | Out-Null + $csproj.Save($file) | Out-Null + } +} \ No newline at end of file diff --git a/build/build.yml b/build/build.yml index 51465634b0..e618934aa4 100644 --- a/build/build.yml +++ b/build/build.yml @@ -1,35 +1,21 @@ parameters: # Default values - name: Windows - queue: 'Hosted VS2017' packageArtifacts: true -phases: -- phase: ${{ parameters.name }} - queue: '${{ parameters.queue }}' +steps: +- task: DotNetCoreInstaller@0 + inputs: + version: '2.2.103' - variables: - solution: '**/*.sln' - buildPlatform: 'Any CPU' - buildConfiguration: 'Release' +- script: dotnet build --configuration $(buildConfiguration) --version-suffix $(build.buildNumber) /warnaserror + displayName: 'dotnet build $(buildConfiguration)' - steps: +- task: DotNetCoreCLI@2 + displayName: 'dotnet test UnitTests' + inputs: + command: test + projects: '**/*UnitTests/*.csproj' + arguments: '--configuration $(buildConfiguration)' - - task: NuGetToolInstaller@0 - - - task: DotNetCoreInstaller@0 - inputs: - version: '2.2.103' - - - script: dotnet build --configuration $(buildConfiguration) --version-suffix $(build.buildNumber) /warnaserror - displayName: 'dotnet build $(buildConfiguration)' - - - task: DotNetCoreCLI@2 - displayName: 'dotnet test UnitTests' - inputs: - command: test - projects: '**/*UnitTests/*.csproj' - arguments: '--configuration $(buildConfiguration)' - - - ${{ if eq(parameters.packageArtifacts, 'true') }}: - - template: package.yml +- ${{ if eq(parameters.packageArtifacts, 'true') }}: + - template: package.yml diff --git a/nuget.config b/nuget.config index 28efad765a..fbe9e2afb6 100644 --- a/nuget.config +++ b/nuget.config @@ -7,6 +7,7 @@ +