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
The following commit(s) were added to refs/heads/master by this push:
new 7f1247484 Publish projects to individual folders rather than
publishing the whole solution to one folder (fixes #974) (#975)
7f1247484 is described below
commit 7f1247484d91c0271a0104a8f6485ec263470a36
Author: Shad Storhaug <[email protected]>
AuthorDate: Sun Oct 20 19:01:51 2024 +0700
Publish projects to individual folders rather than publishing the whole
solution to one folder (fixes #974) (#975)
* .build/runbuild.ps1: Removed zipPublishedArtifacts and
publishedArtifactZipFileName parameters because they are not in use
* .build/runbuild.ps1: Changed publish command to put the output into
project-specific folders. --output for publish is no longer supported. See:
https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/7.0/solution-level-output-no-longer-valid
* run-tests-on-os.yml: Don't copy the test binaries. We put them in
separate directories during publish instead.
* azure-pipelines.yml: Removed publish from the PSake run. We will be
publishing in the pipeline, instead.
* publish-test-binaries.yml: Added dotnet publish command to build the test
binaries before uploading as artifacts and to delete them after uploaded to
save disk space.
* LuceneDocsPlugins.csproj: Don't publish if not on net8.0
* lucene-cli.csproj: Don't publish if not net8.0 or net6.0
* azure-pipelines.yml: Added task to delete nuget artifacts from the build
agent after they have been published to the pipeline
* azure-pipelines.yml: Cleaned up environment variable usage
* .github/workflows: Removed Lucene-Net-Dependency-Conflict-Warning.yml,
since we are now publishing projects to individual directories. See:
https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/7.0/solution-level-output-no-longer-valid
* azure-pipelines.yml: Setup BuildPlatform env variable for current pipeline
---
.build/azure-templates/publish-test-binaries.yml | 32 ++++++++++++-
.build/azure-templates/run-tests-on-os.yml | 11 +----
.build/runbuild.ps1 | 22 ++-------
.../Lucene-Net-Dependency-Conflict-Warning.yml | 45 -------------------
Directory.Build.targets | 4 ++
azure-pipelines.yml | 52 +++++++++++++---------
.../LuceneDocsPlugins/LuceneDocsPlugins.csproj | 1 +
src/dotnet/tools/lucene-cli/lucene-cli.csproj | 4 +-
8 files changed, 74 insertions(+), 97 deletions(-)
diff --git a/.build/azure-templates/publish-test-binaries.yml
b/.build/azure-templates/publish-test-binaries.yml
index 436b8c090..870aca691 100644
--- a/.build/azure-templates/publish-test-binaries.yml
+++ b/.build/azure-templates/publish-test-binaries.yml
@@ -1,4 +1,4 @@
-# Licensed to the Apache Software Foundation (ASF) under one
+# 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
@@ -26,8 +26,33 @@ parameters:
framework: '' # The target framework
binaryArtifactName: '' # The prefix of the binary artifact to publish
$(BinaryArtifactName)
testSettingsFilePath:
'$(Build.ArtifactStagingDirectory)/lucene.testsettings.json' #The name of the
lucene test settings file
+ solution: '$(Build.SourcesDirectory)/Lucene.Net.sln'
+ configration: '$(BuildConfiguration)' # The build configuration
+ platform: '$(BuildPlatform)' # The build platform
steps:
+- pwsh: |
+ $solution = "${{ parameters.solution }}"
+ $configuration = "${{ parameters.configration }}"
+ $framework = "${{ parameters.framework }}"
+ $publishDirectory = "${{ parameters.publishDirectory }}"
+ Write-Host "solution: $solution"
+ Write-Host "configuration: $configuration"
+ Write-Host "framework: $framework"
+ Write-Host "publishDirectory: $publishDirectory"
+ &dotnet publish "${{ parameters.solution }}" --configuration "${{
parameters.configration }}" --framework: "${{ parameters.framework }}"
--no-build --no-restore --verbosity normal /p:TestFrameworks=true
/p:Platform="${{ parameters.platform }}" /p:AlternatePublishRootDirectory="${{
parameters.publishDirectory }}"
+ displayName: 'Publish Projects for ${{ parameters.framework }}'
+ condition: and(succeeded(), ne(variables['RunTests'], 'false'))
+
+#- task: DotNetCoreCLI@2
+# displayName: 'Publish Projects for ${{ parameters.framework }}'
+# inputs:
+# command: custom
+# projects: '**/*.sln'
+# custom: publish
+# arguments: '--configuration "${{ parameters.configuration }}"
--framework: "${{ parameters.framework }}" --no-build --no-restore --verbosity
normal /p:TestFrameworks=true /p:Platform="${{ parameters.platform }}"
/p:AlternatePublishRootDirectory="${{ parameters.publishDirectory }}"'
+# condition: and(succeeded(), ne(variables['RunTests'], 'false'))
+
- pwsh: |
Copy-Item -Path "${{ parameters.testSettingsFilePath }}" -Destination "${{
parameters.publishDirectory }}/${{ parameters.framework }}/" -Force
displayName: 'Copy lucene.testsettings.json File to: ${{
parameters.publishDirectory }}/${{ parameters.framework }}'
@@ -40,3 +65,8 @@ steps:
artifact: '${{ parameters.binaryArtifactName }}_${{ parameters.framework
}}'
publishLocation: 'pipeline'
condition: and(succeeded(), ne(variables['RunTests'], 'false'))
+
+- pwsh: |
+ Remove-Item -Path "${{ parameters.publishDirectory }}/${{
parameters.framework }}/*" -Recurse -Force
+ displayName: 'Delete temp publish location: ${{ parameters.publishDirectory
}}/${{ parameters.framework }}'
+ condition: and(succeeded(), ne(variables['RunTests'], 'false'))
diff --git a/.build/azure-templates/run-tests-on-os.yml
b/.build/azure-templates/run-tests-on-os.yml
index a6d771d80..9ebbb55a4 100644
--- a/.build/azure-templates/run-tests-on-os.yml
+++ b/.build/azure-templates/run-tests-on-os.yml
@@ -205,15 +205,6 @@ steps:
if (!(Test-Path "$testResultDirectory")) {
New-Item "$testResultDirectory" -ItemType Directory -Force
}
- # Test binaries are copied to a temp directory so locking behavior
of other processes doesn't interfere with this test run
- $tempTestDirectory = "$tempDirectory/$framework/$testName"
- if (!(Test-Path "$tempTestDirectory")) {
- New-Item "$tempTestDirectory" -ItemType Directory -Force
- }
- $testTarget = "$tempTestDirectory/$($testBinary.Name)"
- $sourceDirectory = $testBinary.Directory.FullName
-
- Copy-Item -Path "$sourceDirectory/*" -Destination
"$tempTestDirectory" -Recurse -Force
if ($isNightly -ne 'true' -and $isWeekly -ne 'true') {
$blameHangTimeout = "--blame-hang-timeout 15minutes"
@@ -223,7 +214,7 @@ steps:
Write-Host "Running with $blameHangTimeout"
- $testExpression = "dotnet test ""$testTarget"" --framework
""$framework"" --blame --no-build --no-restore" + `
+ $testExpression = "dotnet test ""$($testBinary.FullName)""
--framework ""$framework"" --blame --no-build --no-restore" + `
" --logger:""console;verbosity=normal""
--logger:""trx;LogFileName=$testResultsFileName""" + `
" --results-directory:""$testResultDirectory""" + `
" --blame-hang --blame-hang-dump-type mini $blameHangTimeout"
diff --git a/.build/runbuild.ps1 b/.build/runbuild.ps1
index 35f5abe66..4fad5efe5 100644
--- a/.build/runbuild.ps1
+++ b/.build/runbuild.ps1
@@ -44,8 +44,6 @@ properties {
[string]$platform = $(if ($platform) { $platform } else { if
($env:BuildPlatform) { $env:BuildPlatform } else { "Any CPU" } }) #NOTE: Pass
in as a parameter (not a property) or environment variable to override
[bool]$backupFiles = $true
[bool]$prepareForBuild = $true
- [bool]$zipPublishedArtifacts = $false
- [string]$publishedArtifactZipFileName = "artifact.zip"
[int]$maximumParallelJobs = 8
@@ -195,12 +193,7 @@ task Publish -depends Compile -description "This task uses
dotnet publish to pac
try {
$frameworksToTest = Get-FrameworksToTest
-
- if ($zipPublishedArtifacts) {
- $outDirectory = New-TemporaryDirectory
- } else {
- $outDirectory = $publishDirectory
- }
+ $outDirectory = $publishDirectory
foreach ($framework in $frameworksToTest) {
@@ -211,15 +204,14 @@ task Publish -depends Compile -description "This task
uses dotnet publish to pac
}
$logPath = "$outDirectory/$framework"
- $outputPath = "$logPath"
# Do this first so there is no conflict
- Ensure-Directory-Exists $outputPath
+ Ensure-Directory-Exists $logPath
Write-Host "Configuration: $configuration"
- $expression = "dotnet publish `"$solutionFile`" --configuration
`"$configuration`" --framework `"$framework`" --output `"$outputPath`""
- $expression = "$expression --no-build --no-restore --verbosity
Normal /p:TestFrameworks=true /p:Platform=`"$platform`""
+ $expression = "dotnet publish `"$solutionFile`" --configuration
`"$configuration`" --framework `"$framework`""
+ $expression = "$expression --no-build --no-restore --verbosity
Normal /p:TestFrameworks=true /p:Platform=`"$platform`"
/p:AlternatePublishRootDirectory=`"$outDirectory`""
$expression = "$expression > `"$logPath/dotnet-publish.log`" 2>
`"$logPath/dotnet-publish-error.log`""
$scriptBlock = {
@@ -246,12 +238,6 @@ task Publish -depends Compile -description "This task uses
dotnet publish to pac
# Getting the information back from the jobs (time consuming)
#Get-Job | Receive-Job
- if ($zipPublishedArtifacts) {
- Ensure-Directory-Exists $publishDirectory
- Add-Type -assembly "System.IO.Compression.Filesystem"
-
[System.IO.Compression.ZipFile]::CreateFromDirectory($outDirectory,
"$publishDirectory/$publishedArtifactZipFileName")
- }
-
$success = $true
} finally {
#if ($success -ne $true) {
diff --git a/.github/workflows/Lucene-Net-Dependency-Conflict-Warning.yml
b/.github/workflows/Lucene-Net-Dependency-Conflict-Warning.yml
deleted file mode 100644
index d8da6c9dd..000000000
--- a/.github/workflows/Lucene-Net-Dependency-Conflict-Warning.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-# 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.
-
-# References:
-# https://stackoverflow.com/a/58704739
-#
https://docs.github.com/en/actions/security-guides/automatic-token-authentication
-
-name: 'Lucene.Net Dependency Conflict Warning'
-
-on:
- pull_request:
- paths:
- - '.build/dependencies.props'
- - 'src/**/*.csproj'
-
-jobs:
-
- comment:
- runs-on: ubuntu-latest
- steps:
- - name: Add warning comment to PR
- env:
- URL: ${{ github.event.pull_request.comments_url }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- curl \
- -X POST \
- $URL \
- -H "Content-Type: application/json" \
- -H "Authorization: token $GITHUB_TOKEN" \
- --data '{ "body": ":warning: **IMPORTANT:** This PR may contain
changes to dependency versions. The GitHub Actions test runner is not set up to
detect dependency version conflicts between projects. To ensure the changes do
not cause dependency conflicts, [run the tests for these changes in Azure
DevOps](https://github.com/apache/lucenenet#azure-devops) before accepting this
pull request. :warning:" }'
diff --git a/Directory.Build.targets b/Directory.Build.targets
index 966808152..35988f656 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -22,6 +22,10 @@
<Import Project=".build/dependencies.props"
Condition="Exists('.build/dependencies.props')" />
+ <PropertyGroup Label="Solution-level Publish to Project-specific Directory">
+ <PublishDir Condition="'$(AlternatePublishRootDirectory)' !=
''">$(AlternatePublishRootDirectory)/$(TargetFramework)/$(MSBuildProjectName)/</PublishDir>
+ </PropertyGroup>
+
<!-- Features in .NET 6.x, .NET 7.x, and .NET 8.x only -->
<PropertyGroup Condition=" $(TargetFramework.StartsWith('net6.')) Or
$(TargetFramework.StartsWith('net7.')) Or
$(TargetFramework.StartsWith('net8.')) ">
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 2bd5a7267..9c8282fda 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -101,9 +101,6 @@ stages:
pool:
vmImage: 'windows-2019'
- variables:
- PublishTempDirectory: '$(Build.ArtifactStagingDirectory)/publish'
-
steps:
- checkout: self # self represents the repo where the initial Pipelines
YAML file was found
@@ -112,6 +109,8 @@ stages:
- pwsh: |
$configuration = if ($env:BUILDCONFIGURATION) {
$env:BUILDCONFIGURATION } else { "Release" }
Write-Host "##vso[task.setvariable
variable=BuildConfiguration;]$configuration"
+ $platform = if ($env:BUILDPLATFORM) { $env:BUILDPLATFORM } else { "Any
CPU" }
+ Write-Host "##vso[task.setvariable variable=BuildPlatform;]$platform"
$isRelease = if ($env:ISRELEASE -eq 'true') { 'true' } else { 'false' }
Write-Host "##vso[task.setvariable variable=IsRelease;]$isRelease"
$isNightly = if ($env:ISNIGHTLY -eq 'true') { 'true' } else { 'false' }
@@ -132,16 +131,12 @@ stages:
$parameters = @{}
$properties = @{
backupFiles='false';
- publishDirectory='$(PublishTempDirectory)';
nugetPackageDirectory='$(NuGetArtifactDirectory)'
}
[string[]]$tasks = @($primaryCommand)
- if ($env:RunTests -ne 'false') {
- [string[]]$tasks = $primaryCommand,'Publish'
- }
Invoke-Psake $(BuildDirectory)/runbuild.ps1 -Task $tasks -properties
$properties -parameters $parameters
exit !($psake.build_success)
- displayName: 'PSake Build, Pack, and Publish'
+ displayName: 'PSake Build and Pack'
#- template: '.build/azure-templates/show-all-environment-variables.yml' #
Uncomment for debugging
@@ -213,14 +208,6 @@ stages:
TargetFolder: '$(Build.ArtifactStagingDirectory)/$(DebugArtifactName)'
condition: and(succeeded(), ne(variables['ArtifactFeedID'], ''))
- - task: PublishPipelineArtifact@1
- displayName: 'Publish Artifact: $(NuGetArtifactName)'
- inputs:
- targetPath: '$(Build.ArtifactStagingDirectory)/$(NuGetArtifactName)'
- artifact: '$(NuGetArtifactName)'
- publishLocation: 'pipeline'
- condition: and(succeeded(), ne(variables['RunPack'], 'false'))
-
- task: PublishPipelineArtifact@1
displayName: 'Publish Artifact: $(DebugArtifactName)'
inputs:
@@ -229,40 +216,63 @@ stages:
publishLocation: 'pipeline'
condition: and(succeeded(), ne(variables['ArtifactFeedID'], ''))
+ - task: PublishPipelineArtifact@1
+ displayName: 'Publish Artifact: $(NuGetArtifactName)'
+ inputs:
+ targetPath: '$(NuGetArtifactDirectory)'
+ artifact: '$(NuGetArtifactName)'
+ publishLocation: 'pipeline'
+ condition: and(succeeded(), ne(variables['RunPack'], 'false'))
+
+ - pwsh: |
+ Remove-Item -Path "$(NuGetArtifactDirectory)/*" -Recurse -Force
+ displayName: 'Delete temp publish location: $(NuGetArtifactDirectory)'
+ condition: and(succeeded(), ne(variables['RunPack'], 'false'))
+
- template: '.build/azure-templates/publish-test-binaries.yml'
parameters:
- publishDirectory: $(PublishTempDirectory)
+ publishDirectory: $(PublishDirectory)
framework: 'net8.0'
binaryArtifactName: '$(BinaryArtifactName)'
testSettingsFilePath:
'$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)'
+ configration: '$(BuildConfiguration)'
+ platform: '$(BuildPlatform)'
- template: '.build/azure-templates/publish-test-binaries.yml'
parameters:
- publishDirectory: $(PublishTempDirectory)
+ publishDirectory: $(PublishDirectory)
framework: 'net6.0'
binaryArtifactName: '$(BinaryArtifactName)'
testSettingsFilePath:
'$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)'
+ configration: '$(BuildConfiguration)'
+ platform: '$(BuildPlatform)'
- template: '.build/azure-templates/publish-test-binaries.yml'
parameters:
- publishDirectory: $(PublishTempDirectory)
+ publishDirectory: $(PublishDirectory)
framework: 'net5.0'
binaryArtifactName: '$(BinaryArtifactName)'
testSettingsFilePath:
'$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)'
+ configration: '$(BuildConfiguration)'
+ platform: '$(BuildPlatform)'
- template: '.build/azure-templates/publish-test-binaries.yml'
parameters:
- publishDirectory: $(PublishTempDirectory)
+ publishDirectory: $(PublishDirectory)
framework: 'net472'
binaryArtifactName: '$(BinaryArtifactName)'
testSettingsFilePath:
'$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)'
+ configration: '$(BuildConfiguration)'
+ platform: '$(BuildPlatform)'
- template: '.build/azure-templates/publish-test-binaries.yml'
parameters:
- publishDirectory: $(PublishTempDirectory)
+ publishDirectory: $(PublishDirectory)
framework: 'net48'
binaryArtifactName: '$(BinaryArtifactName)'
testSettingsFilePath:
'$(Build.ArtifactStagingDirectory)/$(TestSettingsFileName)'
+ configration: '$(BuildConfiguration)'
+ platform: '$(BuildPlatform)'
- job: Docs
condition: and(succeeded(), eq(variables['GenerateDocs'], 'true'))
diff --git a/src/docs/LuceneDocsPlugins/LuceneDocsPlugins.csproj
b/src/docs/LuceneDocsPlugins/LuceneDocsPlugins.csproj
index 5e7db5f2f..75e2664d5 100644
--- a/src/docs/LuceneDocsPlugins/LuceneDocsPlugins.csproj
+++ b/src/docs/LuceneDocsPlugins/LuceneDocsPlugins.csproj
@@ -38,6 +38,7 @@ under the License.
<PropertyGroup Label="Assembly Publishing">
<IsPublishable>true</IsPublishable>
+ <IsPublishable Condition="'$(TargetFramework)' !=
'net8.0'">false</IsPublishable>
</PropertyGroup>
<PropertyGroup Label="Assembly Signing">
diff --git a/src/dotnet/tools/lucene-cli/lucene-cli.csproj
b/src/dotnet/tools/lucene-cli/lucene-cli.csproj
index 21b398da8..73a1446b0 100644
--- a/src/dotnet/tools/lucene-cli/lucene-cli.csproj
+++ b/src/dotnet/tools/lucene-cli/lucene-cli.csproj
@@ -27,8 +27,8 @@
<TargetFrameworks>net8.0;net6.0</TargetFrameworks>
<RollForward Condition=" $(TargetFramework.StartsWith('net8.'))
">Major</RollForward>
- <IsPublishable>true</IsPublishable>
- <IsPublishable
Condition="$(TargetFramework.StartsWith('net4'))">false</IsPublishable>
+ <IsPublishable>false</IsPublishable>
+ <IsPublishable Condition="'$(TargetFramework)' == 'net8.0' Or
'$(TargetFramework)' == 'net6.0'">true</IsPublishable>
<PackAsTool>true</PackAsTool>
<ToolCommandName>lucene</ToolCommandName>