pipeline-logging-functions.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. #!/usr/bin/env bash
  2. function Write-PipelineTelemetryError {
  3. local telemetry_category=''
  4. local force=false
  5. local function_args=()
  6. local message=''
  7. while [[ $# -gt 0 ]]; do
  8. opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
  9. case "$opt" in
  10. -category|-c)
  11. telemetry_category=$2
  12. shift
  13. ;;
  14. -force|-f)
  15. force=true
  16. ;;
  17. -*)
  18. function_args+=("$1 $2")
  19. shift
  20. ;;
  21. *)
  22. message=$*
  23. ;;
  24. esac
  25. shift
  26. done
  27. if [[ $force != true ]] && [[ "$ci" != true ]]; then
  28. echo "$message" >&2
  29. return
  30. fi
  31. if [[ $force == true ]]; then
  32. function_args+=("-force")
  33. fi
  34. message="(NETCORE_ENGINEERING_TELEMETRY=$telemetry_category) $message"
  35. function_args+=("$message")
  36. Write-PipelineTaskError ${function_args[@]}
  37. }
  38. function Write-PipelineTaskError {
  39. local message_type="error"
  40. local sourcepath=''
  41. local linenumber=''
  42. local columnnumber=''
  43. local error_code=''
  44. local force=false
  45. while [[ $# -gt 0 ]]; do
  46. opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
  47. case "$opt" in
  48. -type|-t)
  49. message_type=$2
  50. shift
  51. ;;
  52. -sourcepath|-s)
  53. sourcepath=$2
  54. shift
  55. ;;
  56. -linenumber|-ln)
  57. linenumber=$2
  58. shift
  59. ;;
  60. -columnnumber|-cn)
  61. columnnumber=$2
  62. shift
  63. ;;
  64. -errcode|-e)
  65. error_code=$2
  66. shift
  67. ;;
  68. -force|-f)
  69. force=true
  70. ;;
  71. *)
  72. break
  73. ;;
  74. esac
  75. shift
  76. done
  77. if [[ $force != true ]] && [[ "$ci" != true ]]; then
  78. echo "$@" >&2
  79. return
  80. fi
  81. local message="##vso[task.logissue"
  82. message="$message type=$message_type"
  83. if [ -n "$sourcepath" ]; then
  84. message="$message;sourcepath=$sourcepath"
  85. fi
  86. if [ -n "$linenumber" ]; then
  87. message="$message;linenumber=$linenumber"
  88. fi
  89. if [ -n "$columnnumber" ]; then
  90. message="$message;columnnumber=$columnnumber"
  91. fi
  92. if [ -n "$error_code" ]; then
  93. message="$message;code=$error_code"
  94. fi
  95. message="$message]$*"
  96. echo "$message"
  97. }
  98. function Write-PipelineSetVariable {
  99. if [[ "$ci" != true ]]; then
  100. return
  101. fi
  102. local name=''
  103. local value=''
  104. local secret=false
  105. local as_output=false
  106. local is_multi_job_variable=true
  107. while [[ $# -gt 0 ]]; do
  108. opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
  109. case "$opt" in
  110. -name|-n)
  111. name=$2
  112. shift
  113. ;;
  114. -value|-v)
  115. value=$2
  116. shift
  117. ;;
  118. -secret|-s)
  119. secret=true
  120. ;;
  121. -as_output|-a)
  122. as_output=true
  123. ;;
  124. -is_multi_job_variable|-i)
  125. is_multi_job_variable=$2
  126. shift
  127. ;;
  128. esac
  129. shift
  130. done
  131. value=${value/;/%3B}
  132. value=${value/\\r/%0D}
  133. value=${value/\\n/%0A}
  134. value=${value/]/%5D}
  135. local message="##vso[task.setvariable variable=$name;isSecret=$secret;isOutput=$is_multi_job_variable]$value"
  136. if [[ "$as_output" == true ]]; then
  137. $message
  138. else
  139. echo "$message"
  140. fi
  141. }
  142. function Write-PipelinePrependPath {
  143. local prepend_path=''
  144. while [[ $# -gt 0 ]]; do
  145. opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
  146. case "$opt" in
  147. -path|-p)
  148. prepend_path=$2
  149. shift
  150. ;;
  151. esac
  152. shift
  153. done
  154. export PATH="$prepend_path:$PATH"
  155. if [[ "$ci" == true ]]; then
  156. echo "##vso[task.prependpath]$prepend_path"
  157. fi
  158. }
  159. function Write-PipelineSetResult {
  160. local result=''
  161. local message=''
  162. while [[ $# -gt 0 ]]; do
  163. opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
  164. case "$opt" in
  165. -result|-r)
  166. result=$2
  167. shift
  168. ;;
  169. -message|-m)
  170. message=$2
  171. shift
  172. ;;
  173. esac
  174. shift
  175. done
  176. if [[ "$ci" == true ]]; then
  177. echo "##vso[task.complete result=$result;]$message"
  178. fi
  179. }