@@ -411,9 +411,106 @@ extends:
411411 Write-Verbose -Verbose "Copy completed"
412412 displayName: Copy artifacts to release area
413413
414+ - stage : Validation
415+ dependsOn : ['ReleasePreparation', 'ReleaseUniversalPackage']
416+ condition : and(succeeded(), ne(variables['Build.Reason'], 'Schedule'))
417+ jobs :
418+ - job : ValidationJob
419+ displayName : Validation job
420+ pool :
421+ type : agentless
422+ steps :
423+ - task : ManualValidation@0
424+ displayName : Wait for manual validation
425+ inputs :
426+ notifyUsers : $(Build.RequestedForEmail)
427+ instructions : Please validate the build artifacts before proceeding to release.
428+ timeoutInMinutes : 1440
429+
430+ - stage : Release
431+ dependsOn : ['BuildAndSign', 'Validation', 'ReleasePreparation']
432+ condition : and(succeeded(), ne(variables['Build.Reason'], 'Schedule'), eq(variables.officialBuild, true))
433+ variables :
434+ - name : PackageVersion
435+ value : $[ stageDependencies.BuildAndSign.SetPackageVersion.outputs['Package.Version'] ]
436+ - name : ob_release_environment
437+ value : ${{ iif ( parameters.OfficialBuild, 'Production', 'Test' ) }}
438+ jobs :
439+ - job : ReleaseJob
440+ displayName : Release job
441+ pool :
442+ type : release
443+ os : windows
444+ templateContext :
445+ inputs :
446+ - input : pipelineArtifact
447+ artifactName : drop_ReleasePreparation_ReleasePreparationJob
448+
449+ steps :
450+ - task : PowerShell@2
451+ displayName : Capture downloaded artifacts and Version for release
452+ inputs :
453+ targetType : ' inline'
454+ script : |
455+ Write-Verbose -Verbose "Release version: $(PackageVersion)"
456+
457+ $artifacts = Get-ChildItem "$(Pipeline.Workspace)" -Recurse -Include '*.zip', '*.tar.gz', '*.msixbundle', '*.MD'
458+
459+ $artifacts | ForEach-Object {
460+ Write-Verbose -Verbose "Found artifact: $($_.FullName)"
461+ }
462+
463+ $ChangeLogDirectory = New-Item -ItemType Directory -Path "$(Pipeline.Workspace)/ChangeLog" -Force -ErrorAction Ignore
464+ Write-Host "##vso[task.setvariable variable=ChangeLogDirectory]$ChangeLogDirectory"
465+ Copy-Item -Path "$(Pipeline.Workspace)/releasePrep/CHANGELOG.md" -Destination $ChangeLogDirectory -Force -Verbose
466+
467+ $GitHubReleaseDirectory = New-Item -ItemType Directory -Path "$(Pipeline.Workspace)/GitHubRelease" -Force -ErrorAction Ignore
468+ Write-Host "##vso[task.setvariable variable=GitHubReleaseDirectory]$GitHubReleaseDirectory"
469+ $artifacts | ForEach-Object {
470+ Copy-Item -Path $_.FullName -Destination $GitHubReleaseDirectory -Force -Verbose
471+ }
472+
473+ if (-not '$(PackageVersion)') {
474+ throw "PackageVersion variable is not set. Cannot proceed with release."
475+ }
476+
477+ $packageVersion = '$(PackageVersion)'
478+ if ($packageVersion -like '*-*') {
479+ Write-Verbose -Verbose "Pre-release version detected: $packageVersion"
480+ Write-Host "##vso[task.setvariable variable=IsPreRelease]true"
481+ }
482+ else {
483+ Write-Verbose -Verbose "Stable release version detected: $packageVersion"
484+ Write-Host "##vso[task.setvariable variable=IsPreRelease]false"
485+ }
486+
487+ $githubReleaseVersion = "v$packageVersion"
488+ Write-Verbose -Verbose "GitHub Release version: $githubReleaseVersion"
489+
490+ Write-Host "##vso[task.setvariable variable=GitHubReleaseVersion]$githubReleaseVersion"
491+
492+ - task : GitHubRelease@1
493+ displayName : Create GitHub release
494+ inputs :
495+ gitHubConnection : github.com_SteveL-MSFT
496+ repositoryName : PowerShell/DSC
497+ target : main
498+ action : create
499+ title : $(GitHubReleaseVersion)
500+ assets : |
501+ $(GitHubReleaseDirectory)\*.zip
502+ $(GitHubReleaseDirectory)\*.tar.gz
503+ addChangeLog : true
504+ changeLogType : commitBased
505+ releaseNotesFilePath : ' $(ChangeLogDirectory)\CHANGELOG.md'
506+ tagSource : ' userSpecifiedTag'
507+ tag : ' $(GitHubReleaseVersion)'
508+ isDraft : true
509+ isPreRelease : ' $(IsPreRelease)'
510+
414511 - stage : ReleaseUniversalPackage
415- dependsOn : ['ReleasePreparation ']
416- # condition: and(succeeded(), ne(variables['Build.Reason'], 'Schedule'), eq(variables.officialBuild, true))
512+ dependsOn : ['Release ']
513+ condition : and(succeeded(), ne(variables['Build.Reason'], 'Schedule'), eq(variables.officialBuild, true))
417514 variables :
418515 - name : PackageVersion
419516 value : $[ stageDependencies.BuildAndSign.SetPackageVersion.outputs['Package.Version'] ]
@@ -526,99 +623,3 @@ extends:
526623 az artifacts universal publish --organization https://dev.azure.com/PowerShell/ --project PowerShell --feed PowerShell-Universal --name microsoft.dsc-macos --version $packageVersion --description "Microsoft Desired State Configuration (DSC) - Universal Package" --path "$(MacOSDirectory)" --scope project --verbose
527624 condition : succeeded()
528625
529- - stage : Validation
530- dependsOn : ['ReleasePreparation', 'ReleaseUniversalPackage']
531- condition : and(succeeded(), ne(variables['Build.Reason'], 'Schedule'))
532- jobs :
533- - job : ValidationJob
534- displayName : Validation job
535- pool :
536- type : agentless
537- steps :
538- - task : ManualValidation@0
539- displayName : Wait for manual validation
540- inputs :
541- notifyUsers : $(Build.RequestedForEmail)
542- instructions : Please validate the build artifacts before proceeding to release.
543- timeoutInMinutes : 1440
544-
545- - stage : Release
546- dependsOn : ['BuildAndSign', 'Validation', 'ReleasePreparation']
547- condition : and(succeeded(), ne(variables['Build.Reason'], 'Schedule'), eq(variables.officialBuild, true))
548- variables :
549- - name : PackageVersion
550- value : $[ stageDependencies.BuildAndSign.SetPackageVersion.outputs['Package.Version'] ]
551- - name : ob_release_environment
552- value : ${{ iif ( parameters.OfficialBuild, 'Production', 'Test' ) }}
553- jobs :
554- - job : ReleaseJob
555- displayName : Release job
556- pool :
557- type : release
558- os : windows
559- templateContext :
560- inputs :
561- - input : pipelineArtifact
562- artifactName : drop_ReleasePreparation_ReleasePreparationJob
563-
564- steps :
565- - task : PowerShell@2
566- displayName : Capture downloaded artifacts and Version for release
567- inputs :
568- targetType : ' inline'
569- script : |
570- Write-Verbose -Verbose "Release version: $(PackageVersion)"
571-
572- $artifacts = Get-ChildItem "$(Pipeline.Workspace)" -Recurse -Include '*.zip', '*.tar.gz', '*.msixbundle', '*.MD'
573-
574- $artifacts | ForEach-Object {
575- Write-Verbose -Verbose "Found artifact: $($_.FullName)"
576- }
577-
578- $ChangeLogDirectory = New-Item -ItemType Directory -Path "$(Pipeline.Workspace)/ChangeLog" -Force -ErrorAction Ignore
579- Write-Host "##vso[task.setvariable variable=ChangeLogDirectory]$ChangeLogDirectory"
580- Copy-Item -Path "$(Pipeline.Workspace)/releasePrep/CHANGELOG.md" -Destination $ChangeLogDirectory -Force -Verbose
581-
582- $GitHubReleaseDirectory = New-Item -ItemType Directory -Path "$(Pipeline.Workspace)/GitHubRelease" -Force -ErrorAction Ignore
583- Write-Host "##vso[task.setvariable variable=GitHubReleaseDirectory]$GitHubReleaseDirectory"
584- $artifacts | ForEach-Object {
585- Copy-Item -Path $_.FullName -Destination $GitHubReleaseDirectory -Force -Verbose
586- }
587-
588- if (-not '$(PackageVersion)') {
589- throw "PackageVersion variable is not set. Cannot proceed with release."
590- }
591-
592- $packageVersion = '$(PackageVersion)'
593- if ($packageVersion -like '*-*') {
594- Write-Verbose -Verbose "Pre-release version detected: $packageVersion"
595- Write-Host "##vso[task.setvariable variable=IsPreRelease]true"
596- }
597- else {
598- Write-Verbose -Verbose "Stable release version detected: $packageVersion"
599- Write-Host "##vso[task.setvariable variable=IsPreRelease]false"
600- }
601-
602- $githubReleaseVersion = "v$packageVersion"
603- Write-Verbose -Verbose "GitHub Release version: $githubReleaseVersion"
604-
605- Write-Host "##vso[task.setvariable variable=GitHubReleaseVersion]$githubReleaseVersion"
606-
607- - task : GitHubRelease@1
608- displayName : Create GitHub release
609- inputs :
610- gitHubConnection : github.com_SteveL-MSFT
611- repositoryName : PowerShell/DSC
612- target : main
613- action : create
614- title : $(GitHubReleaseVersion)
615- assets : |
616- $(GitHubReleaseDirectory)\*.zip
617- $(GitHubReleaseDirectory)\*.tar.gz
618- addChangeLog : true
619- changeLogType : commitBased
620- releaseNotesFilePath : ' $(ChangeLogDirectory)\CHANGELOG.md'
621- tagSource : ' userSpecifiedTag'
622- tag : ' $(GitHubReleaseVersion)'
623- isDraft : true
624- isPreRelease : ' $(IsPreRelease)'
0 commit comments