@@ -411,9 +411,106 @@ extends:
411
411
Write-Verbose -Verbose "Copy completed"
412
412
displayName: Copy artifacts to release area
413
413
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
+
414
511
- 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))
417
514
variables :
418
515
- name : PackageVersion
419
516
value : $[ stageDependencies.BuildAndSign.SetPackageVersion.outputs['Package.Version'] ]
@@ -526,99 +623,3 @@ extends:
526
623
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
527
624
condition : succeeded()
528
625
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