You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.5 KiB

  1. parameters:
  2. ProjectName: ''
  3. OpenShiftProject: ''
  4. AppName: ''
  5. OpenShiftServiceConnection: ''
  6. jobs:
  7. - job: Container_Build
  8. dependsOn: Restore_Build_Publish
  9. pool:
  10. vmImage: 'windows-latest'
  11. steps:
  12. - task: redhat.openshift-vsts.oc-setup-task.oc-setup@2
  13. displayName: 'oc-setup '
  14. inputs:
  15. openshiftService: $(OpenShiftServiceConnection)
  16. - script: 'oc project $(OpenShiftProject)'
  17. failOnStderr: true
  18. displayName: 'Set Project Context'
  19. - powershell: |
  20. $pinfo = New-Object System.Diagnostics.ProcessStartInfo
  21. $pinfo.FileName = "oc.exe"
  22. $pinfo.RedirectStandardError = $true
  23. $pinfo.RedirectStandardOutput = $true
  24. $pinfo.UseShellExecute = $false
  25. $pinfo.Arguments = "get buildConfig $(AppName)"
  26. $p = New-Object System.Diagnostics.Process
  27. $p.StartInfo = $pinfo
  28. $p.Start() | Out-Null
  29. $p.WaitForExit()
  30. $stdout = $p.StandardOutput.ReadToEnd()
  31. $stderr = $p.StandardError.ReadToEnd()
  32. Write-Host "stdout: $stdout"
  33. Write-Host "stderr: $stderr"
  34. Write-Host "exit code: " + $p.ExitCode
  35. $buildExists = $stdout.Contains("$(AppName)")
  36. Write-Host "##vso[task.setvariable variable=BuildExists;]$buildExists"
  37. displayName: 'Check for Existing Build'
  38. - task: DownloadPipelineArtifact@2
  39. inputs:
  40. artifact: drop
  41. - script: 'oc new-build --name=$(AppName) dotnet:3.1 --binary=true'
  42. failOnStderr: true
  43. displayName: 'Create OpenShift Build'
  44. condition: and(succeeded(), eq(variables['BuildExists'], False))
  45. - powershell: |
  46. $pinfo = New-Object System.Diagnostics.ProcessStartInfo
  47. $pinfo.FileName = "oc.exe"
  48. $pinfo.RedirectStandardError = $true
  49. $pinfo.RedirectStandardOutput = $true
  50. $pinfo.UseShellExecute = $false
  51. $pinfo.Arguments = "start-build $(AppName) --from-dir=$(ProjectName) --follow --wait"
  52. $p = New-Object System.Diagnostics.Process
  53. $p.StartInfo = $pinfo
  54. $p.Start() | Out-Null
  55. $p.WaitForExit()
  56. $stdout = $p.StandardOutput.ReadToEnd()
  57. $stderr = $p.StandardError.ReadToEnd()
  58. Write-Host "stdout: $stdout"
  59. Write-Host "stderr: $stderr"
  60. Write-Host "exit code: " + $p.ExitCode
  61. $binaryBuildHasErrors = $p.ExitCode -ne 0
  62. Write-Host "##vso[task.setvariable variable=BinaryBuildHasErrors;]$binaryBuildHasErrors"
  63. displayName: 'Start OpenShift Binary Build'
  64. failOnStderr: and(succeeded(), eq(variables['BinaryBuildHasErrors'], False))
  65. workingDirectory: '$(Pipeline.Workspace)'