From 621aab6229a539202a3514864df2bf5578fdc741 Mon Sep 17 00:00:00 2001 From: Alexandros Kritikos Date: Sat, 30 Nov 2019 19:15:41 +0200 Subject: [PATCH] :green_heart: Adds basic CI configuration --- azure-pipelines.yml | 157 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 azure-pipelines.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..8a9c46c --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,157 @@ +resources: + repositories: + - repository: self + checkoutOptions: + submodules: true + lfs: true +trigger: + branches: + include: + - master + - develop + - feature/* + - bugfix/* + paths: + include: + - src/* + - tests/* +variables: + - group: Environment + +jobs: +- job: Setup + pool: + vmImage: windows-latest + steps: + - powershell: | + dotnet tool install --tool-path .. gitversion.tool + displayName: Installing Dotnet Tools + + - powershell: | + $git = $(../dotnet-gitversion /output json /showvariable NugetVersion) + echo "##vso[task.setvariable variable=gitVersion;isOutput=true]$(../dotnet-gitversion /output json /showvariable NugetVersion)" + name: versioning + displayName: Setting version from git + + - powershell: | + echo "Current version: $(versioning.gitVersion)" + displayName: Shows currently compiling version + +- job: Building + pool: + vmImage: ubuntu-latest + dependsOn: + - Setup + variables: + Version: $[ dependencies.Setup.outputs['versioning.gitVersion'] ] + steps: + - checkout: self + fetchDepth: 1 + + - task: DotNetCoreCLI@2 + displayName: Restoring nugets + inputs: + command: 'restore' + arguments: -Project2ProjectTimeOut 20 + verbosityRestore: Normal + + - task: DotNetCoreCLI@2 + displayName: Building Projects + inputs: + command: build + projects: src/*/*.csproj + configuration: $(BuildConfiguration) + arguments: -o $(build.artifactStagingDirectory)/build + versioningScheme: byEnvVar + versionEnvVar: Version + + - task: PublishBuildArtifacts@1 + displayName: Publish build artifacts + inputs: + PathtoPublish: $(build.artifactStagingDirectory)/build + ArtifactName: 'drop' + + - task: DotNetCoreCLI@2 + displayName: Packing as Nugets + inputs: + command: pack + searchPatternPack: 'src/*/*.csproj' + configuration: $(BuildConfiguration) + versioningScheme: byEnvVar + versionEnvVar: Version + verbosityPack: normal + packDirectory: $(build.artifactStagingDirectory)/nuget + + - task: PublishBuildArtifacts@1 + name: publishNuget + displayName: Publish nugets + inputs: + PathtoPublish: $(build.artifactStagingDirectory)/nuget + ArtifactName: 'nuget' + +- job: Testing + pool: + vmImage: ubuntu-latest + dependsOn: + - Setup + variables: + Version: $[ dependencies.Setup.outputs['versioning.gitVersion'] ] + steps: + - checkout: self + fetchDepth: 1 + + - task: DotNetCoreCLI@2 + name: dotnetRestore + displayName: Restoring nugets + inputs: + command: 'restore' + arguments: -Project2ProjectTimeOut 20 --packages "$(Build.BinariesDirectory)/.nuget) + verbosityRestore: Normal + + - task: DotNetCoreCLI@2 + name: dotnetBuild + displayName: Building Projects + inputs: + command: build + projects: src/*/*.*proj + configuration: $(BuildConfiguration) + versioningScheme: byEnvVar + versionEnvVar: Version + + - task: DotNetCoreCLI@2 + name: dotnetTest + displayName: Testing implementations + inputs: + command: test + projects: 'tests/*/*.*proj' + configuration: 'Debug' + testRunTitle: 'Running tests' + +- job: Publishing + pool: + vmImage: ubuntu-latest + dependsOn: + - Setup + - Building + - Testing + variables: + Version: $[ dependencies.Setup.outputs['versioning.gitVersion'] ] + steps: + - checkout: none + + - task: DownloadPipelineArtifact@2 + displayName: Downloading artifact + inputs: + artifactName: 'nuget' + targetPath: $(build.artifactStagingDirectory)/nuget + + - task: DotNetCoreCLI@2 + displayName: Pushing to nuget server + inputs: + workingDirectory: $(build.artifactStagingDirectory)/nuget + command: 'custom' + custom: nuget + arguments: > + push *.nupkg + -s $(KritikosNuget) + -k $(KritikosApiKey)