diff --git a/IgniteUI.png b/IgniteUI.png new file mode 100644 index 0000000..20091a4 Binary files /dev/null and b/IgniteUI.png differ diff --git a/Infragistics.QueryBuilder.Executor.csproj b/Infragistics.QueryBuilder.Executor.csproj index 102ae96..68f937c 100644 --- a/Infragistics.QueryBuilder.Executor.csproj +++ b/Infragistics.QueryBuilder.Executor.csproj @@ -4,12 +4,36 @@ net9.0 enable enable + Infragistics.QueryBuilder.Executor + Infragistics Inc. + Infragistics Inc. + Infragistics Inc. + A .NET 9 library for dynamic, strongly-typed query building and execution over Entity Framework Core data sources. Supports advanced filtering, projection, and SQL generation. + 1.0.0.0 + We want to generate the version attributes at runtime and we need this flag enabled for that<--> + true + true + false + MIT + Infragistics + ReadMe.md + https://github.com/IgniteUI/Infragistics.QueryBuilder.Executor + https://github.com/IgniteUI/Infragistics.QueryBuilder.Executor + git + https://github.com/IgniteUI/Infragistics.QueryBuilder.Executor + Infragistics;App Builder;Ignite UI;Filtering;Query;Query Builder;Models + IgniteUI.png + + + True + + diff --git a/azure-pipelines/build-and-publish.yml b/azure-pipelines/build-and-publish.yml new file mode 100644 index 0000000..4426eaa --- /dev/null +++ b/azure-pipelines/build-and-publish.yml @@ -0,0 +1,124 @@ +trigger: + tags: + include: + - '*' +# This pipeline is meant to build & deploy upon tagging. It's not meant to be a part of PR validation. +pr: none + +name: $(Build.SourceBranchName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r) + +variables: +- group: Code_Signing_Certificate_2023_2026 +- name: prId + value: $[coalesce(variables['System.PullRequest.PullRequestId'], '000')] +- name: prIteration + value: $[counter(variables['prId'], 1)] +- name: buildConfiguration + value: Release +- name: releaseTag + value: $(Build.SourceBranchName) + +stages: +- stage: BuildAndPublish + condition: succeeded() + jobs: + - job: BuildAndSign + pool: + vmImage: 'windows-latest' + + steps: + - checkout: self + fetchDepth: 0 + + - task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: '9.x' + + - task: DownloadSecureFile@1 + name: cert + inputs: + secureFile: 'code-signing-certificate-2023-2026.pfx' + + - task: DotNetCoreCLI@2 + displayName: 'Build Project' + inputs: + command: 'build' + projects: 'Infragistics.QueryBuilder.Executor.csproj' + arguments: > + -c $(buildConfiguration) + /p:Version=$(releaseTag) + + - powershell: | + $outputDir = "$(Build.SourcesDirectory)\bin\$(buildConfiguration)\net9.0" + Write-Host "Listing contents of: $outputDir" + if (-Not (Test-Path $outputDir)) { + Write-Error "Output folder not found: $outputDir" + exit 1 + } + Get-ChildItem $outputDir -Recurse | ForEach-Object { + Write-Host $_.FullName + } + displayName: 'Debug: List build output contents' + + - powershell: | + $dllFolder = "$(Build.SourcesDirectory)\bin\$(buildConfiguration)\net9.0" + Write-Host "Signing DLLs in folder: $dllFolder" + + $signtoolPath = "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\signtool.exe" + Write-Host "Using signtool at: $signtoolPath" + + $dllFiles = Get-ChildItem -Path $dllFolder -Filter *.dll -Recurse + foreach ($dll in $dllFiles) { + Write-Host "Signing $($dll.FullName)..." + & $signtoolPath sign /f $(cert.secureFilePath) /p $env:CERT_PASS /tr $(SigningCertificateTimestampUrl) /td sha256 /fd sha256 $dll.FullName + + if ($LASTEXITCODE -ne 0) { + Write-Error "Signing failed for $($dll.FullName)" + exit 1 + } + } + displayName: 'Sign all DLL files with PFX certificate' + env: + CERT_PASS: $(SigningCertificatePassword) + + - powershell: | + $packageOutputDir = "$(Build.ArtifactStagingDirectory)\nuget" + $packageVersion = "$(releaseTag)" + + Write-Host "Packing project from existing build output..." + dotnet pack ./Infragistics.QueryBuilder.Executor.csproj ` + --no-build ` + --configuration $(buildConfiguration) ` + -p:PackageVersion=$packageVersion ` + -o $packageOutputDir + + if ($LASTEXITCODE -ne 0) { + Write-Error "dotnet pack failed" + exit 1 + } + displayName: 'Pack NuGet Package using PowerShell' + + - task: PowerShell@2 + displayName: 'Sign NuGet package' + env: + CERT_PASS: $(SigningCertificatePassword) + inputs: + targetType: 'inline' + script: | + nuget.exe sign $(Build.ArtifactStagingDirectory)\nuget\*.nupkg -CertificatePath $(cert.secureFilePath) -CertificatePassword $env:CERT_PASS -Timestamper $(SigningCertificateTimestampUrl) + + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/nuget' + ArtifactName: 'NuGetPackage' + publishLocation: 'Container' + displayName: 'Publish NuGet Package as Build Artifact' + + - task: NuGetCommand@2 + inputs: + command: 'push' + packagesToPush: '$(Build.ArtifactStagingDirectory)/nuget/*.nupkg' + nuGetFeedType: 'external' + publishFeedCredentials: 'NuGet.Org' + displayName: 'Publish to NuGet.org'