# 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.

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)

# Versioning Variables

# BuildCounterSeed: (Optional - Set in conjunction with VersionSuffix, will cause the build counter to begin at this value. Note that it is set once, to reset is an API call.)
# PackageVersion: (Optional - This can be used to explicitly set the whole version number to a specific version, i.e. 4.8.0-beta00005. It overrides all other version settings.)
# 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.)
# AssertsEnabled: 'true' (Optional - set to 'false' to run tests without asserts, which is less thorough. This can speed up testing and verify the application will run without asserts.)
# 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))]
- name: DocumentationArtifactName
  value: 'docs'
- name: DocumentationArtifactZipFileName
  value: 'documentation.zip'
- name: WebsiteArtifactName
  value: 'website'
- name: WebsiteArtifactZipFileName
  value: 'website.zip'  
- name: BinaryArtifactName
  value: 'testbinaries'
- name: NuGetArtifactName
  value: 'nuget'
- name: DebugArtifactName # For .pdb symbols
  value: 'debug'
- name: ReleaseArtifactName
  value: 'release'
- name: TestResultsArtifactName
  value: 'testresults'
- name: VersionArtifactName
  value: 'version'
- name: BuildNumberFileName
  value: 'buildNumber.txt'
- name: PackageVersionFileName
  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
  value: '$(Build.ArtifactStagingDirectory)/$(BinaryArtifactName)'
- name: NuGetArtifactDirectory # NuGet binaries directory
  value: '$(Build.ArtifactStagingDirectory)/$(NuGetArtifactName)'


stages:
- stage: Build_Stage
  displayName: 'Build Stage:'
  jobs:

  - job: Build
    pool:
      vmImage: 'windows-2019'

    variables:
      PublishTempDirectory: '$(Build.BinariesDirectory)/publish'

    steps:
    
    - checkout: self # self represents the repo where the initial Pipelines YAML file was found
      fetchDepth: 1  # the depth of commits to ask Git to fetch

    - powershell: |
        $configuration = if ($env:BUILDCONFIGURATION) { $env:BUILDCONFIGURATION } else { "Release" }
        Write-Host "##vso[task.setvariable variable=BuildConfiguration;]$configuration"
      displayName: 'Setup Default Variable Values'

    - task: UseDotNet@2
      displayName: 'Use .NET Core sdk 3.1.301'
      inputs:
        version: 3.1.301

    - powershell: |
        Import-Module "$(BuildDirectory)/psake.psm1"
        $generateBuildBat = if ($Env:ISRELEASE -eq 'true') { 'true' } else { 'false' }
        $parameters = @{}
        $properties = @{
            backup_files='false';
            publish_directory='$(PublishTempDirectory)';
            nuget_package_directory='$(NuGetArtifactDirectory)'
            # Lock the build.bat so it only builds this version in the release distribution
            generateBuildBat=$generateBuildBat
        }
        [string[]]$tasks = 'Pack'
        if ($Env:RunTests -ne 'false') {
            [string[]]$tasks = 'Pack','Publish'
        }
        Invoke-psake $(BuildDirectory)/build.ps1 -Task $tasks -properties $properties -parameters $parameters
        exit !($psake.build_success)
      displayName: 'PSake Build, Pack, and Publish'
    - template: 'build/azure-templates/show-all-environment-variables.yml'
        
    - 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: 'Persist Versions to Files'

    - pwsh: |
        # Generate a lucene.testsettings.json file for use with the test framework
        $assert = if ($Env:AssertsEnabled -ne 'false') { 'true' } else { 'false' }
        $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" +
            """assert"": ""$assert"",`n`t" +
            """tests"": {`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 Test Settings to lucene.testsettings.json'
      condition: and(succeeded(), ne(variables['RunTests'], 'false'))

    # 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
      displayName: 'Copy build.bat and Version.props Files to: /$(VersionArtifactName)'
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)'
        Contents: |
          build.bat
          Version.props
        TargetFolder: '$(Build.ArtifactStagingDirectory)/$(VersionArtifactName)'
      condition: and(succeeded(), eq(variables['IsRelease'], 'true'))
            
    - task: PublishPipelineArtifact@1
      displayName: 'Publish Artifact: $(VersionArtifactName)'
      inputs:
        targetPath: '$(Build.ArtifactStagingDirectory)/$(VersionArtifactName)'
        artifact: '$(VersionArtifactName)'
        publishLocation: 'pipeline'
    
    # Copy the .pdb files as build artifacts, which will 
    # later be used to push to the Azure Artifacts symbol server.
    - task: CopyFiles@2
      displayName: 'Copy .pdb Files to: /$(DebugArtifactName)'
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)'
        Contents: '**/bin/$(BuildConfiguration)/**/*.pdb'
        TargetFolder: '$(Build.ArtifactStagingDirectory)/$(DebugArtifactName)'

    - template: 'build/azure-templates/publish-test-binaries.yml'
      parameters:
        publishDirectory: $(PublishTempDirectory)
        framework: 'netcoreapp3.1'
        binaryArtifactName: '$(BinaryArtifactName)'
        testSettingsFilePath: '$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)'

    - template: 'build/azure-templates/publish-test-binaries.yml'
      parameters:
        publishDirectory: $(PublishTempDirectory)
        framework: 'netcoreapp2.1'
        binaryArtifactName: '$(BinaryArtifactName)'
        testSettingsFilePath: '$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)'

    - 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)'
      inputs:
        targetPath: '$(Build.ArtifactStagingDirectory)/$(NuGetArtifactName)'
        artifact: '$(NuGetArtifactName)'
        publishLocation: 'pipeline'
    
    - task: PublishPipelineArtifact@1
      displayName: 'Publish Artifact: $(DebugArtifactName)'
      inputs:
        targetPath: '$(Build.ArtifactStagingDirectory)/$(DebugArtifactName)'
        artifact: '$(DebugArtifactName)'
        publishLocation: 'pipeline'
        
  - job: Docs
    condition: and(succeeded(), eq(variables['GenerateDocs'], 'true'))
    pool:
      vmImage: 'vs2017-win2016'

    steps:
    - powershell: |
         $(Build.SourcesDirectory)/websites/apidocs/docs.ps1 -LuceneNetVersion $(PackageVersion) -Clean -BaseUrl https://lucenenet.apache.org/docs/
      errorActionPreference: 'continue'
      ignoreLASTEXITCODE: true
      failOnStderr: false
      displayName: 'Generate Documentation'

    - task: ArchiveFiles@2
      displayName: 'Zip Documenation Files'
      inputs:
        rootFolderOrFile: '$(Build.SourcesDirectory)/websites/apidocs/_site'
        includeRootFolder: false
        archiveFile: '$(Build.ArtifactStagingDirectory)/$(DocumentationArtifactName)/$(DocumentationArtifactZipFileName)'

    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: $(DocumentationArtifactName)'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(DocumentationArtifactName)'
        ArtifactName: '$(DocumentationArtifactName)'

  - job: Website
    condition: and(succeeded(), eq(variables['GenerateWebsite'], 'true'))
    pool:
      vmImage: 'vs2017-win2016'

    steps:
    - powershell: |
         $(Build.SourcesDirectory)/websites/site/site.ps1 0 1
      errorActionPreference: 'continue'
      ignoreLASTEXITCODE: true
      failOnStderr: false
      displayName: 'Generate Website'

    - task: ArchiveFiles@2
      displayName: 'Zip Website Files'
      inputs:
        rootFolderOrFile: '$(Build.SourcesDirectory)/websites/site/_site'
        includeRootFolder: false
        archiveFile: '$(Build.ArtifactStagingDirectory)/$(WebsiteArtifactName)/$(WebsiteArtifactZipFileName)'

    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: $(WebsiteArtifactName)'
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(WebsiteArtifactName)'
        ArtifactName: '$(WebsiteArtifactName)'


- stage: Test_Stage
  displayName: 'Test Stage:'
  jobs:
  - job: Test_netcoreapp3_1_x64
    condition: and(succeeded(), ne(variables['RunTests'], 'false'))
    strategy:
      matrix:
        Windows:
          osName: 'Windows'
          imageName: 'windows-2019'
          maximumParallelJobs: 8
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        Linux:
          osName: 'Linux'
          imageName: 'ubuntu-16.04'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        macOS:
          osName: 'macOS'
          imageName: 'macOS-10.14'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
    displayName: 'Test netcoreapp3.1,x64 on'
    pool:
      vmImage: $(imageName)
    steps:
    - template: 'build/azure-templates/run-tests-on-os.yml'
      parameters:
        osName: $(osName)
        framework: 'netcoreapp3.1'
        vsTestPlatform: 'x64'
        testResultsArtifactName: '$(TestResultsArtifactName)'
        maximumParallelJobs: $(maximumParallelJobs)
        maximumAllowedFailures: $(maximumAllowedFailures)

  - job: Test_netcoreapp3_1_x86 # Only run Nightly
    condition: and(succeeded(), ne(variables['RunTests'], 'false'), eq(variables['IsNightly'], 'true'))
    strategy:
      matrix:
        Windows:
          osName: 'Windows'
          imageName: 'windows-2019'
          maximumParallelJobs: 8
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        Linux:
          osName: 'Linux'
          imageName: 'ubuntu-16.04'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        macOS:
          osName: 'macOS'
          imageName: 'macOS-10.14'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
    displayName: 'Test netcoreapp3.1,x86 on'
    pool:
      vmImage: $(imageName)
    steps:
    - template: 'build/azure-templates/run-tests-on-os.yml'
      parameters:
        osName: $(osName)
        framework: 'netcoreapp3.1'
        vsTestPlatform: 'x86'
        testResultsArtifactName: '$(TestResultsArtifactName)'
        maximumParallelJobs: $(maximumParallelJobs)
        maximumAllowedFailures: $(maximumAllowedFailures)

  - job: Test_netcoreapp2_2_x64
    condition: and(succeeded(), ne(variables['RunTests'], 'false'))
    strategy:
      matrix:
        Windows:
          osName: 'Windows'
          imageName: 'windows-2019'
          maximumParallelJobs: 8
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        Linux:
          osName: 'Linux'
          imageName: 'ubuntu-16.04'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        macOS:
          osName: 'macOS'
          imageName: 'macOS-10.14'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
    displayName: 'Test netcoreapp2.1,x64 on'
    pool:
      vmImage: $(imageName)
    steps:
    - template: 'build/azure-templates/run-tests-on-os.yml'
      parameters:
        osName: $(osName)
        framework: 'netcoreapp2.1'
        vsTestPlatform: 'x64'
        testResultsArtifactName: '$(TestResultsArtifactName)'
        maximumParallelJobs: $(maximumParallelJobs)
        maximumAllowedFailures: $(maximumAllowedFailures)

  - job: Test_netcoreapp2_2_x86 # Only run Nightly
    condition: and(succeeded(), ne(variables['RunTests'], 'false'), eq(variables['IsNightly'], 'true'))
    strategy:
      matrix:
        Windows:
          osName: 'Windows'
          imageName: 'windows-2019'
          maximumParallelJobs: 8
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        Linux:
          osName: 'Linux'
          imageName: 'ubuntu-16.04'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
        macOS:
          osName: 'macOS'
          imageName: 'macOS-10.14'
          maximumParallelJobs: 7
          maximumAllowedFailures: 4 # Maximum allowed failures for a successful build
    displayName: 'Test netcoreapp2.1,x86 on'
    pool:
      vmImage: $(imageName)
    steps:
    - template: 'build/azure-templates/run-tests-on-os.yml'
      parameters:
        osName: $(osName)
        framework: 'netcoreapp2.1'
        vsTestPlatform: 'x86'
        testResultsArtifactName: '$(TestResultsArtifactName)'
        maximumParallelJobs: $(maximumParallelJobs)
        maximumAllowedFailures: $(maximumAllowedFailures)

  - job: Test_net48_Windows_x64
    condition: and(succeeded(), ne(variables['RunTests'], 'false'))
    displayName: 'Test net48,x64 on Windows'
    pool:
      vmImage: 'windows-2019'
    steps:
    - template: 'build/azure-templates/run-tests-on-os.yml'
      parameters:
        osName: 'Windows'
        framework: 'net48'
        vsTestPlatform: 'x64'
        testResultsArtifactName: '$(TestResultsArtifactName)'
        maximumParallelJobs: 8
        maximumAllowedFailures: 2 # Maximum allowed failures for a successful build

  - job: Test_net48_Windows_x86
    condition: and(succeeded(), ne(variables['RunTests'], 'false'))
    displayName: 'Test net48,x86 on Windows'
    pool:
      vmImage: 'windows-2019'
    steps:
    - template: 'build/azure-templates/run-tests-on-os.yml'
      parameters:
        osName: 'Windows'
        framework: 'net48'
        vsTestPlatform: 'x86'
        testResultsArtifactName: '$(TestResultsArtifactName)'
        maximumParallelJobs: 8
        maximumAllowedFailures: 5 # Maximum allowed failures for a successful build


- stage: Publish_Stage
  displayName: 'Publish Stage:'
  jobs:

  # Optional job to push to Azure Artifact feed. Just pass in
  # the GUID of the artifact feed as ArtifactFeedID to enable.
  - job: Publish_Azure_Artifacts
    condition: and(succeeded(), ne(variables['ArtifactFeedID'], ''))
    pool:
      vmImage: 'windows-2019'

    steps:
      # We checkout here because we need to publish the source code along with the symbols for debugging
    - checkout: self # self represents the repo where the initial Pipelines YAML file was found
      fetchDepth: 1  # the depth of commits to ask Git to fetch

    - template: 'build/azure-templates/show-all-environment-variables.yml'

    - task: DownloadPipelineArtifact@0
      displayName: 'Download Build Artifacts: $(VersionArtifactName)'
      inputs:
        artifactName: '$(VersionArtifactName)'
        targetPath: '$(System.DefaultWorkingDirectory)/$(VersionArtifactName)'

      # For debugging this pipeline
    - powershell: | 
        Get-ChildItem -Path $(System.DefaultWorkingDirectory)
    - powershell: | 
        Get-ChildItem -Path '$(VersionArtifactName)'

      # NOTE: We are setting Build.BuildNumber here to the NuGet package version to work around the limitation that
      # the version cannot be passed to the Index Sources & Publish Symbols task.
    - powershell: |
        $version = Get-Content '$(VersionArtifactName)/$(PackageVersionFileName)' -Raw
        Write-Host "##vso[task.setvariable variable=PackageVersion;]$version"
        Write-Host "##vso[build.updatebuildnumber]$version"
      displayName: 'Read PackageVersion from File to Build.BuildNumber'
    - template: 'build/azure-templates/show-all-environment-variables.yml'

    - template: 'build/azure-templates/publish-nuget-packages.yml'
      parameters:
        artifactFeedID: '$(ArtifactFeedID)'
        nugetArtifactName: '$(NuGetArtifactName)'
        debugArtifactName: '$(DebugArtifactName)'

- stage: Release_Stage
  displayName: 'Release Stage:'
  jobs:
  - job: Release
    condition: and(succeeded(), eq(variables['IsRelease'], 'true'))
    displayName: 'Build Release Artifacts for [VOTE]'
    pool:
      vmImage: 'windows-2019'

    steps:
    # We checkout here because we need to publish the source code along with the binaries per Apache's releae policy
    - checkout: self # self represents the repo where the initial Pipelines YAML file was found
      fetchDepth: 1  # the depth of commits to ask Git to fetch

    - template: 'build/azure-templates/show-all-environment-variables.yml'


    - task: DownloadPipelineArtifact@0
      displayName: 'Download Build Artifacts: $(NuGetArtifactName)'
      inputs:
        artifactName: '$(NuGetArtifactName)'
        targetPath: '$(Build.ArtifactStagingDirectory)/$(NuGetArtifactName)'


    - task: DownloadPipelineArtifact@0
      displayName: 'Download Build Artifacts: $(VersionArtifactName)'
      inputs:
        artifactName: '$(VersionArtifactName)'
        targetPath: '$(Build.ArtifactStagingDirectory)/$(VersionArtifactName)'
        
    - template: 'build/azure-templates/show-all-files.yml' # Uncomment for debugging

      # NOTE: We are setting Build.BuildNumber here to the NuGet package version to work around the limitation that
      # the version cannot be passed to the Index Sources & Publish Symbols task.
    - powershell: |
        $version = Get-Content '$(Build.ArtifactStagingDirectory)/$(VersionArtifactName)/$(PackageVersionFileName)' -Raw
        $vcsLabel = 'Lucene.Net_' + $version.Replace('.', '_').Replace('-', '_')
        Write-Host "##vso[task.setvariable variable=VCSLabel;]$vcsLabel"
        Write-Host "##vso[task.setvariable variable=PackageVersion;]$version"
        Write-Host "##vso[build.updatebuildnumber]$version"
      displayName: 'Build VCS Label and Rehydrate Version Variables'
    - powershell: |
        $files = 'build.bat','Version.props'
        foreach ($file in $files) {
            Copy-Item -Path "$(Build.ArtifactStagingDirectory)/$(VersionArtifactName)/$file" -Destination "$(Build.SourcesDirectory)/$file" -Force -ErrorAction Continue
        }
      displayName: 'Update build.bat and Version.props to build only version $(PackageVersion)'
    - template: 'build/azure-templates/show-all-environment-variables.yml'

    - task: CopyFiles@2
      displayName: 'Copy Source Code Files to: $(Build.ArtifactStagingDirectory)/srctemp'
      inputs:
        SourceFolder: '$(Build.SourcesDirectory)'
        Contents: |
         **
         !.git/**/*
         !branding/**/*
         !release/**/*
         !src/**/bin/**/*
         !src/**/obj/**/*
         branding/logo/lucene-net-icon-128x128.png
        TargetFolder: '$(Build.ArtifactStagingDirectory)/srctemp'

    - task: ArchiveFiles@2
      displayName: 'Archive Source Code Files'
      inputs:
        rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/srctemp'
        includeRootFolder: false
        archiveFile: '$(Build.ArtifactStagingDirectory)/$(ReleaseArtifactName)/Apache-Lucene.Net-$(PackageVersion).src.zip'

    - task: CopyFiles@2
      displayName: 'Copy License/Notice Files to: $(NuGetArtifactName)'
      inputs:
        SourceFolder: '$(Build.SourcesDirectory)'
        Contents: |
         LICENSE.txt
         NOTICE.txt
        TargetFolder: '$(Build.ArtifactStagingDirectory)/$(NuGetArtifactName)'

    - task: ArchiveFiles@2
      displayName: 'Archive Binary Files'
      inputs:
        rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/$(NuGetArtifactName)'
        includeRootFolder: false
        archiveFile: '$(Build.ArtifactStagingDirectory)/$(ReleaseArtifactName)/Apache-Lucene.Net-$(PackageVersion).bin.zip'

    - powershell: |
        $dir = '$(Build.ArtifactStagingDirectory)/$(ReleaseArtifactName)'
        if (!(Test-Path $dir)) { New-Item -ItemType Directory -Path "$dir" -Force }
        $nl = [Environment]::NewLine
        "TODO: Review: http://www.apache.org/legal/release-policy.html" + $nl + `
        "TODO: Tag Repository" + $nl + `
        "  commit: $(Build.SourceVersion)" + $nl + `
        "  tag: $(VCSLabel)" + $nl + `
        "TODO: Sign release artifacts (see https://www.apache.org/dev/release-signing.html)" + $nl + `
        "TODO: Push release artifacts to dev (https://dist.apache.org/repos/dist/dev/lucenenet/)" + $nl + `
        "TODO: Start release [VOTE] (see https://www.apache.org/foundation/voting.html)" + $nl | Out-File -FilePath "$dir/RELEASE-TODO.txt" -Force
      displayName: 'Write RELEASE-TODO.txt'

    - task: PublishPipelineArtifact@1
      displayName: 'Publish Artifact: $(ReleaseArtifactName)'
      inputs:
        targetPath: '$(Build.ArtifactStagingDirectory)/$(ReleaseArtifactName)'
        artifact:  '$(ReleaseArtifactName)'
        publishLocation: 'pipeline'

# LUCENENET TODO: Write VCS Label (git tag) automatically