Skip to content

Commit cc66d96

Browse files
Restructure stages
1 parent 4f1c1fc commit cc66d96

File tree

1 file changed

+99
-98
lines changed

1 file changed

+99
-98
lines changed

.pipelines/DSC-Official.yml

Lines changed: 99 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)