Skip to content
8 changes: 4 additions & 4 deletions .pipelines/PowerShell-Release-Official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,10 @@ extends:
tsaOptionsFile: .config\tsaoptions.json

stages:
- stage: setReleaseTagAndUploadTools
displayName: 'Set Release Tag and Upload Tools'
- stage: setReleaseTagAndChangelog
displayName: 'Set Release Tag and Upload Changelog'
jobs:
- template: /.pipelines/templates/release-SetTagAndTools.yml@self
- template: /.pipelines/templates/release-SetTagAndChangelog.yml@self

- stage: msixbundle
displayName: 'Create MSIX Bundle'
Expand Down Expand Up @@ -284,7 +284,7 @@ extends:
- stage: PublishGitHubReleaseAndNuget
displayName: Publish GitHub and Nuget Release
dependsOn:
- setReleaseTagAndUploadTools
- setReleaseTagAndChangelog
- UpdateChangeLog
variables:
ob_release_environment: Production
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
jobs:
- job: SetTagAndTools
displayName: Set Tag and Tools
- job: setTagAndChangelog
displayName: Set Tag and Upload Changelog
condition: succeeded()
pool:
type: windows
Expand All @@ -19,32 +19,6 @@ jobs:
clean: true
env:
ob_restore_phase: true

- checkout: PSInternalTools
clean: true
env:
ob_restore_phase: true

- pwsh: |
New-Item -ItemType Directory -Path '$(Pipeline.Workspace)/ToolArtifact'
Get-ChildItem -Path '$(Build.SourcesDirectory)/Internal-PowerShellTeam-Tools/Scripts' -Filter 'GitHubRelease.psm1' -ErrorAction SilentlyContinue |
Copy-Item -Destination '$(Pipeline.Workspace)/ToolArtifact' -Verbose
displayName: Move GitHub Tool

- task: onebranch.pipeline.signing@1
displayName: Sign Tools
inputs:
command: 'sign'
signing_profile: internal_azure_service
files_to_sign: '*.ps1;*.psm1'
search_root: '$(Pipeline.Workspace)/ToolArtifact'

- pwsh: |
Write-Verbose -Verbose "Creating output directory for release tools: $(ob_outputDirectory)/ToolArtifact"
New-Item -Path $(ob_outputDirectory)/ToolArtifact -ItemType Directory -Force
Get-ChildItem -Path "$(Pipeline.Workspace)/ToolArtifact/*" -Recurse |
Copy-Item -Destination $(ob_outputDirectory)/ToolArtifact -Recurse -Verbose
displayName: Upload Tools

- pwsh: |
Write-Verbose -Verbose "Release Tag: $(OutputReleaseTag.releaseTag)"
Expand Down
43 changes: 34 additions & 9 deletions .pipelines/templates/release-githubNuget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ jobs:
templateContext:
inputs:
- input: pipelineArtifact
artifactName: drop_setReleaseTagAndUploadTools_SetTagAndTools
artifactName: drop_setReleaseTagAndChangelog_SetTagAndChangelog
- input: pipelineArtifact
pipeline: PSPackagesOfficial
artifactName: drop_upload_upload_packages
variables:
- template: ./variable/release-shared.yml@self
parameters:
RELEASETAG: $[ stageDependencies.setReleaseTagAndUploadTools.SetTagAndTools.outputs['OutputReleaseTag.releaseTag'] ]
RELEASETAG: $[ stageDependencies.setReleaseTagAndChangelog.setTagAndChangelog.outputs['OutputReleaseTag.releaseTag'] ]

steps:
- task: PowerShell@2
Expand Down Expand Up @@ -62,12 +62,10 @@ jobs:
displayName: List all files in the workspace

- task: PowerShell@2
condition: and(ne('${{ parameters.skipPublish }}', 'false'), succeeded())
inputs:
targetType: inline
pwsh: true
script: |
Import-module '$(Pipeline.Workspace)/ToolArtifact/GitHubRelease.psm1'
$releaseVersion = '$(ReleaseTag)' -replace '^v',''
Write-Verbose -Verbose "Available modules: "
Get-Module | Write-Verbose -Verbose
Expand All @@ -88,9 +86,38 @@ jobs:
$clContent = $changelog | Select-Object -Skip ($startLine-1) -First ($endLine - $startLine) | Out-String

Write-Verbose -Verbose "Selected content: `n$clContent"

$releaseNotesFilePath = "$(Pipeline.Workspace)/release-notes.md"
$clContent | Out-File -FilePath $releaseNotesFilePath -Encoding utf8

Write-Host "##vso[task.setvariable variable=ReleaseNotesFilePath;]$releaseNotesFilePath"

Publish-ReleaseDraft -Tag '$(ReleaseTag)' -Name '$(ReleaseTag) Release of PowerShell' -Description $clContent -User PowerShell -Repository PowerShell -PackageFolder "$(Pipeline.Workspace)/GitHubPackages" -Token $(GitHubReleasePat)
displayName: Publish Release Draft
#if name has prelease then make prerelease true as a variable
if ($releaseVersion -like '*-*') {
Write-Host "##vso[task.setvariable variable=IsPreRelease;]true"
} else {
Write-Host "##vso[task.setvariable variable=IsPreRelease;]false"
}
displayName: Set variables for GitHub release task

- pwsh: |
Write-Host "ReleaseNotes content:"
Get-Content "$(Pipeline.Workspace)/release-notes.md" -Raw | Out-String -width 9999 | Write-Host
displayName: Verify Release Notes

- task: GitHubRelease@1
inputs:
gitHubConnection: GitHubReleasePAT
repositoryName: PowerShell/PowerShell
target: master
assets: '$(Pipeline.Workspace)/GitHubPackages/*'
tagSource: 'userSpecifiedTag'
tag: '$(ReleaseTag)'
isDraft: true
addChangeLog: false
action: 'create'
releaseNotesFilePath: '$(ReleaseNotesFilePath)'
isPrerelease: '$(IsPreRelease)'

- job: NuGetPublish
displayName: Publish to NuGet
Expand All @@ -100,15 +127,13 @@ jobs:
os: windows
templateContext:
inputs:
- input: pipelineArtifact
artifactName: drop_setReleaseTagAndUploadTools_SetTagAndTools
- input: pipelineArtifact
pipeline: PSPackagesOfficial
artifactName: drop_upload_upload_packages
variables:
- template: ./variable/release-shared.yml@self
parameters:
VERSION: $[ stageDependencies.setReleaseTagAndUploadTools.SetTagAndTools.outputs['OutputVersion.Version'] ]
VERSION: $[ stageDependencies.setReleaseTagAndChangelog.SetTagAndChangelog.outputs['OutputVersion.Version'] ]

steps:
- template: release-install-pwsh.yml
Expand Down