This is an automated email from the ASF dual-hosted git repository. nightowl888 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/lucenenet.git
commit fc222302b25ddb48fc21b943fb8e5730fa02a17e Author: Shad Storhaug <[email protected]> AuthorDate: Tue Jul 14 05:49:47 2020 +0700 azure-pipelines.yml: Added build features for the test framework's system properties --- Lucene.Net.sln | 1 + azure-pipelines.yml | 97 ++++++++++++++++++------- build/azure-templates/publish-test-binaries.yml | 38 ++++++++++ 3 files changed, 108 insertions(+), 28 deletions(-) diff --git a/Lucene.Net.sln b/Lucene.Net.sln index 389ea17..aa712c3 100644 --- a/Lucene.Net.sln +++ b/Lucene.Net.sln @@ -21,6 +21,7 @@ MinimumVisualStudioVersion = 15.0.26730.8 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "azure-templates", "azure-templates", "{05CE3A39-40D4-452D-AFE0-E57E536A08C6}" ProjectSection(SolutionItems) = preProject build\azure-templates\publish-nuget-packages.yml = build\azure-templates\publish-nuget-packages.yml + build\azure-templates\publish-test-binaries.yml = build\azure-templates\publish-test-binaries.yml build\azure-templates\publish-test-results-for-test-projects.yml = build\azure-templates\publish-test-results-for-test-projects.yml build\azure-templates\publish-test-results.yml = build\azure-templates\publish-test-results.yml build\azure-templates\run-tests-on-os.yml = build\azure-templates\run-tests-on-os.yml diff --git a/azure-pipelines.yml b/azure-pipelines.yml index af14c19..1e10718 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -18,14 +18,13 @@ name: 'vNext$(rev:.r)' # Format for build number (will be overridden) # DevOps Setup: Define the following pipeline level variables in Azure DevOps build pipeline -# + # ArtifactFeedID: (Optional - set to your Azure DevOps Artifact (NuGet) feed. If not provided, publish job will be skipped.) # BuildConfiguration: (Optional. Defaults to 'Release') # BuildPlatform: (Optional. Defaults to 'Any CPU') # GenerateDocs: (Optional. Only builds documentation website if set to 'true'.) # GenerateWebsite: (Optional. Only builds lucene.net website if set to 'true'.) # IsRelease: (Optional. By default the Release job is disabled, setting this to 'true' will enable it) -# RunTests: 'true' (Optional - set to 'false' to disable test jobs - useful for debugging. If not provided, tests will be run.) # Versioning Variables @@ -34,6 +33,20 @@ name: 'vNext$(rev:.r)' # Format for build number (will be overridden) # PreReleaseCounterPattern: (Optional. Set to '0000000000' in ci pipeline or '00000' in release pipeline. The default is '0000000000'. This setting has no effect if VersionSuffix is ''.) # VersionSuffix: (Optional. Defaults to 'ci'. Set to 'beta' or 'rc' or '' in production pipeline.) +# Testing variables + +# RunTests: 'true' (Optional - set to 'false' to disable test jobs - useful for debugging. If not provided, tests will be run.) +# IsNightly: 'false' (Optional - set to 'true' to run additional tests for the nightly build) +# IsWeekly: 'false' (Optional - set to 'true' to run additional tests for the weekly build) +# RunSlowTests: 'true' (Optional - set to 'false' to skip slow tests to make testing time shorter) +# RunAwaitsFixTests: 'false' (Optional - set to 'true' to run flakey tests) +# Codec: 'random' (Optional - set to a specific codec to test the same codec throughout all tests) +# DocValuesFormat: 'random' (Optional - set to a specific doc values format to test the same codec throughout all tests) +# PostingsFormat: 'random' (Optional - set to a specific postings format to test the same codec throughout all tests) +# Directory: 'random' (Optional - set to a specific directory implementation to test the same codec throughout all tests) +# Verbose: 'false' (Optional - set to true for verbose logging output) +# Multiplier: '1' (Optional - the number of iterations to multiply applicable tests by) + variables: - name: BuildCounter value: $[counter(variables['VersionSuffix'],coalesce(variables['BuildCounterSeed'], 1250))] @@ -63,6 +76,8 @@ variables: value: 'packageVersion.txt' - name: FileVersionFileName value: 'fileVersion.txt' +- name: TestSettingsFileName + value: 'lucene.testsettings.json' - name: BuildDirectory # Where the build scripts and configs are value: '$(System.DefaultWorkingDirectory)/build' - name: PublishDirectory # Test binaries directory @@ -113,13 +128,39 @@ stages: displayName: 'PSake Build, Pack, and Publish' - template: 'build/azure-templates/show-all-environment-variables.yml' - - powershell: | + - pwsh: | $dir = '$(Build.ArtifactStagingDirectory)/$(VersionArtifactName)' if (!(Test-Path $dir)) { New-Item -ItemType Directory -Path "$dir" -Force } '$(PackageVersion)' | Out-File -FilePath "$dir/$(PackageVersionFileName)" -Force '$(FileVersion)' | Out-File -FilePath "$dir/$(FileVersionFileName)" -Force '$(Build.BuildNumber)' | Out-File -FilePath "$dir/$(BuildNumberFileName)" -Force - displayName: 'Write Versions to Files' + + # Generate a lucene.testsettings.json file for use with the test framework + $nightly = if ($Env:IsNightly -eq 'true') { 'true' } else { 'false' } + $weekly = if ($Env:IsWeekly -eq 'true') { 'true' } else { 'false' } + $slow = if ($Env:RunSlowTests -ne 'false') { 'true' } else { 'false' } + $awaitsFix = if ($Env:RunAwaitsFixTests -eq 'true') { 'true' } else { 'false' } + $codec = if ($Env:Codec -eq $null) { 'random' } else { $Env:Codec } + $docValuesFormat = if ($Env:DocValuesFormat -eq $null) { 'random' } else { $Env:DocValuesFormat } + $postingsFormat = if ($Env:PostingsFormat -eq $null) { 'random' } else { $Env:PostingsFormat } + $directory = if ($Env:Directory -eq $null) { 'random' } else { $Env:Directory } + $verbose = if ($Env:Verbose -eq 'true') { 'true' } else { 'false' } + $multiplier = if ($Env:Multiplier -eq $null) { '1' } else { $Env:Multiplier } + $fileText = "{`n`t""tests"":`n`t{`n`t`t" + + """nightly"": ""$nightly"",`n`t`t" + + """weekly"": ""$weekly"",`n`t`t" + + """slow"": ""$slow"",`n`t`t" + + """awaitsfix"": ""$awaitsFix"",`n`t`t" + + """codec"": ""$codec"",`n`t`t" + + """docvaluesformat"": ""$docValuesFormat"",`n`t`t" + + """postingsformat"": ""$postingsFormat"",`n`t`t" + + """directory"": ""$directory"",`n`t`t" + + """verbose"": ""$verbose"",`n`t`t" + + """multiplier"": ""$multiplier""`n`t" + + "}`n}" + Out-File -filePath "$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)" -encoding UTF8 -inputObject $fileText + displayName: 'Persist Variables to Files' + # If this is a release pipeline, copy the build.bat and Version.props files as version artifacts, which will # overwrite the build.bat and Version.props files of the release. - task: CopyFiles@2 @@ -148,30 +189,30 @@ stages: Contents: | **\**\bin\**\*.pdb TargetFolder: '$(Build.ArtifactStagingDirectory)/$(DebugArtifactName)' - - - task: PublishPipelineArtifact@1 - displayName: 'Publish Artifact: $(BinaryArtifactName)_netcoreapp3.1' - inputs: - targetPath: '$(PublishTempDirectory)\netcoreapp3.1' - artifact: '$(BinaryArtifactName)_netcoreapp3.1' - publishLocation: 'pipeline' - condition: and(succeeded(), ne(variables['RunTests'], 'false')) - - - task: PublishPipelineArtifact@1 - displayName: 'Publish Artifact: $(BinaryArtifactName)_netcoreapp2.1' - inputs: - targetPath: '$(PublishTempDirectory)\netcoreapp2.1' - artifact: '$(BinaryArtifactName)_netcoreapp2.1' - publishLocation: 'pipeline' - condition: and(succeeded(), ne(variables['RunTests'], 'false')) - - - task: PublishPipelineArtifact@1 - displayName: 'Publish Artifact: $(BinaryArtifactName)_net48' - inputs: - targetPath: '$(PublishTempDirectory)\net48' - artifact: '$(BinaryArtifactName)_net48' - publishLocation: 'pipeline' - condition: and(succeeded(), ne(variables['RunTests'], 'false')) + + - ${{ if ne(variables['RunTests'], 'false') }}: + - template: 'build/azure-templates/publish-test-binaries.yml' + parameters: + publishDirectory: $(PublishTempDirectory) + framework: 'netcoreapp3.1' + binaryArtifactName: '$(BinaryArtifactName)' + testSettingsFilePath: '$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)' + + - ${{ if ne(variables['RunTests'], 'false') }}: + - template: 'build/azure-templates/publish-test-binaries.yml' + parameters: + publishDirectory: $(PublishTempDirectory) + framework: 'netcoreapp2.1' + binaryArtifactName: '$(BinaryArtifactName)' + testSettingsFilePath: '$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)' + + - ${{ if ne(variables['RunTests'], 'false') }}: + - template: 'build/azure-templates/publish-test-binaries.yml' + parameters: + publishDirectory: $(PublishTempDirectory) + framework: 'net48' + binaryArtifactName: '$(BinaryArtifactName)' + testSettingsFilePath: '$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)' - task: PublishPipelineArtifact@1 displayName: 'Publish Artifact: $(NuGetArtifactName)' diff --git a/build/azure-templates/publish-test-binaries.yml b/build/azure-templates/publish-test-binaries.yml new file mode 100644 index 0000000..ae620f8 --- /dev/null +++ b/build/azure-templates/publish-test-binaries.yml @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# Copies the provided test framework configuration file +# to the binary publish subdirectory for the provided target +# framework, and then publishes to an pipeline artifact. + +parameters: + publishDirectory: '' # The path of the root publish staging directory where the binaries can be found $(PublishTempDirectory) + framework: '' # The target framework + binaryArtifactName: '' # The prefix of the binary artifact to publish $(BinaryArtifactName) + testSettingsFilePath: '$(Build.ArtifactStagingDirectory)/lucene.testsettings.json' #The name of the + +steps: +- pwsh: | + Copy-Item -Path "${{ parameters.testSettingsFilePath }}" -Destination "${{ parameters.publishDirectory }}/${{ parameters.framework }}/" -Force + displayName: 'Copy lucene.testsettings.json File to: ${{ parameters.publishDirectory }}/${{ parameters.framework }}' + +- task: PublishPipelineArtifact@1 + displayName: 'Publish Artifact: ${{ parameters.binaryArtifactName }}_${{ parameters.framework }}' + inputs: + targetPath: '${{ parameters.publishDirectory }}/${{ parameters.framework }}' + artifact: '${{ parameters.binaryArtifactName }}_${{ parameters.framework }}' + publishLocation: 'pipeline'
