diff --git a/build/azure-pipelines.yml b/build/azure-pipelines.yml index 5f97b7b5d4..2ac7972bfc 100644 --- a/build/azure-pipelines.yml +++ b/build/azure-pipelines.yml @@ -41,6 +41,10 @@ parameters: displayName: TestFilter used for release type builds on non windows agents type: string default: ' ' + - name: isNightly + displayName: 'Is nightly build (used for MyGet feed)' + type: boolean + default: false variables: nodeVersion: 20 @@ -93,6 +97,7 @@ stages: displayName: Use .NET $(dotnetVersion) inputs: version: $(dotnetVersion) + performMultiLevelLookup: true includePreviewVersions: $(dotnetIncludePreviewVersions) - task: DotNetCoreCLI@2 displayName: Run dotnet restore @@ -100,29 +105,12 @@ stages: command: restore projects: $(solution) - task: DotNetCoreCLI@2 - displayName: Run dotnet build + name: build + displayName: Run dotnet build and generate NuGet packages inputs: command: build projects: $(solution) - arguments: '--configuration $(buildConfiguration) --no-restore -p:ContinuousIntegrationBuild=true' - - script: | - version="$(Build.BuildNumber)" - echo "Version: $version" - - major="$(echo $version | cut -d '.' -f 1)" - echo "Major version: $major" - - echo "##vso[task.setvariable variable=majorVersion;isOutput=true]$major" - displayName: Set major version - name: determineMajorVersion - - script: dotnet pack $(solution) --configuration $(buildConfiguration) --no-build --property:PackageOutputPath=$(Build.ArtifactStagingDirectory)/nupkg - displayName: Run dotnet pack - - script: | - sha="$(Build.SourceVersion)" - sha=${sha:0:7} - buildnumber="$(Build.BuildNumber)_$(Build.BuildId)_$sha" - echo "##vso[build.updatebuildnumber]$buildnumber" - displayName: Update build number + arguments: '--configuration $(buildConfiguration) --no-restore --property:ContinuousIntegrationBuild=true --property:GeneratePackageOnBuild=true --property:PackageOutputPath=$(Build.ArtifactStagingDirectory)/nupkg' - task: PublishPipelineArtifact@1 displayName: Publish nupkg inputs: @@ -135,11 +123,11 @@ stages: artifactName: build_output - stage: Build_Docs - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.buildApiDocs}})) + condition: and(succeeded(), or(eq(dependencies.Build.outputs['A.build.NBGV_PublicRelease'], 'True'), ${{parameters.buildApiDocs}})) displayName: Prepare API Documentation dependsOn: Build variables: - umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['determineMajorVersion.majorVersion'] ] + umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['build.NBGV_VersionMajor'] ] jobs: # C# API Reference - job: @@ -196,7 +184,7 @@ stages: displayName: Use Node.js 10.15.x retryCountOnTaskFailure: 3 inputs: - versionSpec: 10.15.0 # Won't work with higher versions + versionSpec: 10.15.x # Won't work with higher versions - script: | npm ci --no-fund --no-audit --prefer-offline npx gulp docs @@ -252,6 +240,7 @@ stages: displayName: Use .NET $(dotnetVersion) inputs: version: $(dotnetVersion) + performMultiLevelLookup: true includePreviewVersions: $(dotnetIncludePreviewVersions) - task: DotNetCoreCLI@2 displayName: Run dotnet test @@ -264,6 +253,8 @@ stages: - stage: Integration displayName: Integration Tests dependsOn: Build + variables: + releaseTestFilter: eq(dependencies.Build.outputs['A.build.NBGV_PublicRelease'], 'True') jobs: # Integration Tests (SQLite) - job: @@ -288,6 +279,7 @@ stages: displayName: Use .NET $(dotnetVersion) inputs: version: $(dotnetVersion) + performMultiLevelLookup: true includePreviewVersions: $(dotnetIncludePreviewVersions) - task: DotNetCoreCLI@2 displayName: Run dotnet test Windows @@ -296,7 +288,7 @@ stages: command: test projects: '**/*.Tests.Integration.csproj' testRunTitle: Integration Tests SQLite - $(Agent.OS) - ${{ if or( parameters.forceReleaseTestFilter, startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')) }}: + ${{ if or(variables.releaseTestFilter, parameters.forceReleaseTestFilter) }}: arguments: '--configuration $(buildConfiguration) --no-build ${{parameters.integrationReleaseTestFilter}}' ${{ else }}: arguments: '--configuration $(buildConfiguration) ${{parameters.integrationNonReleaseTestFilter}}' @@ -310,7 +302,7 @@ stages: command: test projects: '**/*.Tests.Integration.csproj' testRunTitle: Integration Tests SQLite - $(Agent.OS) - ${{ if or( parameters.forceReleaseTestFilter, startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')) }}: + ${{ if or(variables.releaseTestFilter, parameters.forceReleaseTestFilter) }}: arguments: '--configuration $(buildConfiguration) --no-build ${{parameters.nonWindowsIntegrationReleaseTestFilter}}' ${{ else }}: arguments: '--configuration $(buildConfiguration) ${{parameters.nonWindowsIntegrationNonReleaseTestFilter}}' @@ -321,7 +313,7 @@ stages: # Integration Tests (SQL Server) - job: timeoutInMinutes: 120 - condition: or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.sqlServerIntegrationTests}}) + condition: or(eq(stageDependencies.Build.A.outputs['build.NBGV_PublicRelease'], 'True'), ${{parameters.sqlServerIntegrationTests}}) displayName: Integration Tests (SQL Server) strategy: matrix: @@ -332,7 +324,7 @@ stages: Linux: vmImage: 'ubuntu-latest' testDb: SqlServer - connectionString: 'Server=localhost,1433;User Id=sa;Password=$(SA_PASSWORD);' + connectionString: 'Server=localhost,1433;User Id=sa;Password=$(SA_PASSWORD);TrustServerCertificate=true' pool: vmImage: $(vmImage) variables: @@ -361,7 +353,7 @@ stages: command: test projects: '**/*.Tests.Integration.csproj' testRunTitle: Integration Tests SQL Server - $(Agent.OS) - ${{ if or( parameters.forceReleaseTestFilter, startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')) }}: + ${{ if or(variables.releaseTestFilter, parameters.forceReleaseTestFilter) }}: arguments: '--configuration $(buildConfiguration) --no-build ${{parameters.integrationReleaseTestFilter}}' ${{ else }}: arguments: '--configuration $(buildConfiguration) --no-build ${{parameters.integrationNonReleaseTestFilter}}' @@ -376,7 +368,7 @@ stages: command: test projects: '**/*.Tests.Integration.csproj' testRunTitle: Integration Tests SQL Server - $(Agent.OS) - ${{ if or( parameters.forceReleaseTestFilter, startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')) }}: + ${{ if or(variables.releaseTestFilter, parameters.forceReleaseTestFilter) }}: arguments: '--configuration $(buildConfiguration) --no-build ${{parameters.nonWindowsIntegrationReleaseTestFilter}}' ${{ else }}: arguments: '--configuration $(buildConfiguration) --no-build ${{parameters.nonWindowsIntegrationNonReleaseTestFilter}}' @@ -462,6 +454,7 @@ stages: displayName: Use .NET $(dotnetVersion) inputs: version: $(dotnetVersion) + performMultiLevelLookup: true includePreviewVersions: $(dotnetIncludePreviewVersions) - pwsh: | $sha = 'g$(Build.SourceVersion)'.substring(0, 8) @@ -537,7 +530,7 @@ stages: - Unit - Integration # - E2E # TODO: Enable when stable. - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.myGetDeploy}})) + condition: and(succeeded(), or(eq(dependencies.Build.outputs['A.build.NBGV_PublicRelease'], 'True'), ${{parameters.myGetDeploy}})) jobs: - job: displayName: Push to pre-release feed @@ -554,13 +547,16 @@ stages: command: 'push' packagesToPush: $(Build.ArtifactStagingDirectory)/**/*.nupkg nuGetFeedType: 'external' - publishFeedCredentials: 'MyGet - Pre-releases' + ${{ if eq(parameters.isNightly, true) }}: + publishFeedCredentials: 'MyGet - Umbraco Nightly' + ${{ else }}: + publishFeedCredentials: 'MyGet - Pre-releases' - stage: Deploy_NuGet displayName: NuGet release dependsOn: - Deploy_MyGet - Build_Docs - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.nuGetDeploy}})) + condition: and(succeeded(), or(eq(dependencies.Build.outputs['A.build.NBGV_PublicRelease'], 'True'), ${{parameters.nuGetDeploy}})) jobs: - job: displayName: Push to NuGet @@ -583,12 +579,12 @@ stages: pool: vmImage: 'windows-latest' # Apparently AzureFileCopy is windows only :( variables: - umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['determineMajorVersion.majorVersion'] ] + umbracoMajorVersion: $[ stageDependencies.Build.A.outputs['build.NBGV_VersionMajor'] ] displayName: Upload API Documention dependsOn: - Build - Deploy_NuGet - condition: and(succeeded(), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), ${{parameters.uploadApiDocs}})) + condition: and(succeeded(), or(eq(dependencies.Build.outputs['A.build.NBGV_PublicRelease'], 'True'), ${{parameters.uploadApiDocs}})) jobs: - job: displayName: Upload C# Docs diff --git a/build/nightly-build-trigger.yml b/build/nightly-build-trigger.yml index 1b70e6c9e5..7e128b2af7 100644 --- a/build/nightly-build-trigger.yml +++ b/build/nightly-build-trigger.yml @@ -8,13 +8,13 @@ schedules: displayName: Daily midnight build branches: include: - - v9/dev - v10/dev - v12/dev - v13/dev - v14/dev steps: +- checkout: none - task: TriggerBuild@4 inputs: definitionIsInCurrentTeamProject: true @@ -26,10 +26,10 @@ steps: useSameBranch: true waitForQueuedBuildsToFinish: false storeInEnvironmentVariable: false - templateParameters: 'sqlServerIntegrationTests: true, forceReleaseTestFilter: true' + templateParameters: 'sqlServerIntegrationTests: true, forceReleaseTestFilter: true, myGetDeploy: true, isNightly: true' authenticationMethod: 'OAuth Token' enableBuildInQueueCondition: false dependentOnSuccessfulBuildCondition: false dependentOnFailedBuildCondition: false checkbuildsoncurrentbranch: false - failTaskIfConditionsAreNotFulfilled: false \ No newline at end of file + failTaskIfConditionsAreNotFulfilled: false