diff --git a/azure-pipelines/get-tool-versions.yml b/azure-pipelines/get-tool-versions.yml index d408885..d6d68b5 100644 --- a/azure-pipelines/get-tool-versions.yml +++ b/azure-pipelines/get-tool-versions.yml @@ -20,26 +20,38 @@ variables: VmImage: 'ubuntu-18.04' stages: -- stage: Get_New_Versions +- stage: Find_New_Versions dependsOn: [] jobs: - - job: Get_Tool_Versions + - job: Find_New_Versions pool: name: $(PoolName) vmImage: $(VmImage) steps: - template: /azure-pipelines/templates/get-tool-versions-steps.yml +- stage: Check_New_Versions + dependsOn: Find_New_Versions + jobs: + - job: Check_New_Versions + pool: + name: $(PoolName) + vmImage: $(VmImage) + variables: + ToolVersions: $[ stageDependencies.Find_New_Versions.Find_New_Versions.outputs['Get_versions.TOOL_VERSIONS'] ] + steps: + - template: /azure-pipelines/templates/check-versions.yml + - stage: Trigger_Builds - dependsOn: Get_New_Versions - condition: and(succeeded(), ne(stageDependencies.Get_New_Versions.Get_Tool_Versions.outputs['Get_versions.TOOL_VERSIONS'], ''), ne(variables['WORKFLOW_FILE_NAME'], '')) + dependsOn: Check_New_Versions + condition: and(succeeded(), ne(variables['WORKFLOW_FILE_NAME'], '')) jobs: - deployment: Run_Builds pool: name: $(PoolName) vmImage: $(VmImage) variables: - ToolVersions: $[ stageDependencies.Get_New_Versions.Get_Tool_Versions.outputs['Get_versions.TOOL_VERSIONS'] ] + ToolVersions: $[ stageDependencies.Find_New_Versions.Find_New_Versions.outputs['Get_versions.TOOL_VERSIONS'] ] timeoutInMinutes: 180 environment: 'Get Available Tools Versions - Publishing Approval' strategy: diff --git a/azure-pipelines/templates/check-versions.yml b/azure-pipelines/templates/check-versions.yml new file mode 100644 index 0000000..6cf8969 --- /dev/null +++ b/azure-pipelines/templates/check-versions.yml @@ -0,0 +1,41 @@ +steps: +- task: PowerShell@2 + displayName: Check Versions + condition: and(succeeded(), eq(variables.ToolVersions, '')) + inputs: + TargetType: inline + script: | + throw "No new versions were found" + +- task: PowerShell@2 + displayName: 'Set PIPELINE_URL variable' + inputs: + TargetType: inline + script: | + $ToolName = "$(TOOL_NAME)" + if ($ToolName -eq "Python") { + $PipelineUrl = " " + } else { + $PipelineUrl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)" + } + Write-Host "##vso[task.setvariable variable=PIPELINE_URL]$PipelineUrl" + +- task: PowerShell@2 + displayName: 'Change build name' + inputs: + TargetType: inline + script: | + $newBuildName = "[FOUND] $(Build.BuildNumber)" + Write-Host "##vso[build.updatebuildnumber]$newBuildName" + +- task: PowerShell@2 + displayName: 'Send Slack notification' + inputs: + targetType: filePath + filePath: './get-new-tool-versions/send-slack-notification.ps1' + arguments: | + -Url "$(SLACK_CHANNEL_URL)" ` + -ToolName "$(TOOL_NAME)" ` + -ToolVersion "$(ToolVersions)" ` + -PipelineUrl "$(PIPELINE_URL)" ` + -ImageUrl "$(IMAGE_URL)" \ No newline at end of file diff --git a/azure-pipelines/templates/get-tool-versions-steps.yml b/azure-pipelines/templates/get-tool-versions-steps.yml index e6b160e..487e93e 100644 --- a/azure-pipelines/templates/get-tool-versions-steps.yml +++ b/azure-pipelines/templates/get-tool-versions-steps.yml @@ -6,35 +6,4 @@ steps: targetType: filePath filePath: './get-new-tool-versions/get-new-tool-versions.ps1' arguments: | - -ToolName "$(TOOL_NAME)" - -- task: PowerShell@2 - displayName: 'Set PIPELINE_URL variable' - condition: and(succeeded(), ne(variables['TOOL_NAME'], 'Python')) - inputs: - TargetType: inline - script: | - $PipelineUrl = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)" - Write-Host "##vso[task.setvariable variable=PIPELINE_URL]$PipelineUrl" - -- task: PowerShell@2 - displayName: 'Change build name' - condition: and(succeeded(), ne(variables['Get_versions.TOOL_VERSIONS'], '')) - inputs: - TargetType: inline - script: | - $newBuildName = "[FOUND] $(Build.BuildNumber)" - Write-Host "##vso[build.updatebuildnumber]$newBuildName" - -- task: PowerShell@2 - displayName: 'Send Slack notification' - condition: and(succeeded(), ne(variables['Get_versions.TOOL_VERSIONS'], '')) - inputs: - targetType: filePath - filePath: './get-new-tool-versions/send-slack-notification.ps1' - arguments: | - -Url "$(SLACK_CHANNEL_URL)" ` - -ToolName "$(TOOL_NAME)" ` - -ToolVersion "$(Get_versions.TOOL_VERSIONS)" ` - -PipelineUrl "${{ variables.PIPELINE_URL }}" ` - -ImageUrl "$(IMAGE_URL)" + -ToolName "$(TOOL_NAME)" \ No newline at end of file diff --git a/get-new-tool-versions/send-slack-notification.ps1 b/get-new-tool-versions/send-slack-notification.ps1 index 0c6e57e..050af3e 100644 --- a/get-new-tool-versions/send-slack-notification.ps1 +++ b/get-new-tool-versions/send-slack-notification.ps1 @@ -36,7 +36,7 @@ Import-Module $PSScriptRoot/helpers.psm1 -DisableNameChecking # Create JSON body $text = "The following versions of '$toolName' are available to upload: $toolVersion" -if ($PipelineUrl) { +if (-not ([string]::IsNullOrWhiteSpace($PipelineUrl))) { $text += "\nLink to the pipeline: $pipelineUrl" } $jsonBodyMessage = @"