Module: Rakit::Azure::DevOps
- Defined in:
- lib/rakit/azure/dev_ops.rb
Defined Under Namespace
Classes: Issue, Job, PipelineResult, PipelineRun, PipelineStatusFallback, Stage
Constant Summary collapse
- Generated =
Use generated proto PipelineStatus when available; otherwise fallback with same interface (success, errors, warnings).
defined?(Rakit::Azure::Generated) ? Rakit::Azure::Generated : nil
- API_VERSION =
"7.1"- BASE_URL =
"https://dev.azure.com"
Class Method Summary collapse
-
.get_pipeline_result(pipeline: nil) ⇒ PipelineResult
Returns a PipelineResult (proto: only runs) for the given pipeline.
-
.get_pipeline_status(pipeline: nil) ⇒ PipelineStatus
Returns the latest pipeline status (proto message PipelineStatus: success, errors, warnings).
-
.pipeline_result_pretty_json(result) ⇒ String
Returns pretty-printed JSON for a PipelineResult.
-
.pipeline_result_to_h(result) ⇒ Hash
Converts a PipelineResult (Struct or proto) to a hash recursively for JSON.
-
.pipeline_status_pretty_json(status) ⇒ String
Returns pretty-printed JSON for a PipelineStatus.
-
.pipeline_status_to_h(status) ⇒ Hash
Converts a PipelineStatus (Struct or proto) to a hash for JSON.
Class Method Details
.get_pipeline_result(pipeline: nil) ⇒ PipelineResult
Returns a PipelineResult (proto: only runs) for the given pipeline. For success/errors/warnings summary use get_pipeline_status. When pipeline is given, uses its org, project, pipeline_id, token (token may be an ENV var name). When pipeline is nil, uses ENV.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/rakit/azure/dev_ops.rb', line 91 def get_pipeline_result(pipeline: nil) org, project, pipeline_id, token = _resolve_pipeline_config(pipeline) if [org, project, pipeline_id, token].any?(&:nil?) || [org, project, pipeline_id, token].any?(&:empty?) return PipelineResult.new(runs: [], warnings: [(pipeline)]) end if _token_unresolved?(pipeline, token) return PipelineResult.new(runs: [], warnings: [(pipeline)]) end run = _list_runs(org, project, pipeline_id, token).first unless run return PipelineResult.new(runs: [], warnings: []) end timeline = _get_timeline_for_run(org, project, pipeline_id, token, run) runs = [_run_to_pipeline_run(run, timeline)] PipelineResult.new(runs: runs, warnings: []) rescue StandardError => _e PipelineResult.new(runs: [], warnings: []) end |
.get_pipeline_status(pipeline: nil) ⇒ PipelineStatus
Returns the latest pipeline status (proto message PipelineStatus: success, errors, warnings). When pipeline is given, uses its org, project, pipeline_id, token (token may be an ENV var name). When pipeline is nil, uses ENV: AZURE_DEVOPS_ORG, AZURE_DEVOPS_PROJECT, AZURE_DEVOPS_PIPELINE_ID, AZURE_DEVOPS_TOKEN.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/rakit/azure/dev_ops.rb', line 50 def get_pipeline_status(pipeline: nil) org, project, pipeline_id, token = _resolve_pipeline_config(pipeline) if [org, project, pipeline_id, token].any?(&:nil?) || [org, project, pipeline_id, token].any?(&:empty?) return _pipeline_status_new( success: false, errors: [], warnings: [(pipeline)], ) end if _token_unresolved?(pipeline, token) return _pipeline_status_new(success: false, errors: [], warnings: [(pipeline)]) end run = _list_runs(org, project, pipeline_id.to_s, token).first unless run return _pipeline_status_new(success: false, errors: ["No pipeline run found"], warnings: []) end timeline = _get_timeline_for_run(org, project, pipeline_id.to_s, token, run) success = _run_passed?(run) errors_str = _format_failed_steps(_failed_steps_details(timeline)) errors_str = _run_result_summary(run) if errors_str.to_s.strip.empty? && !success warnings_str = _format_warnings(_warning_details(timeline)) errors_list = errors_str.to_s.strip.empty? ? [] : errors_str.to_s.split("\n").map(&:strip).reject(&:empty?) errors_list = ["(no details)"] if errors_list.empty? && !success warnings_list = warnings_str.to_s.strip.empty? ? [] : warnings_str.to_s.split("\n").map(&:strip).reject(&:empty?) _pipeline_status_new(success: success, errors: errors_list, warnings: warnings_list) rescue StandardError => e _pipeline_status_new(success: false, errors: ["Pipeline status error: #{e.}"], warnings: []) end |
.pipeline_result_pretty_json(result) ⇒ String
Returns pretty-printed JSON for a PipelineResult.
124 125 126 |
# File 'lib/rakit/azure/dev_ops.rb', line 124 def pipeline_result_pretty_json(result) JSON.pretty_generate(pipeline_result_to_h(result)) end |
.pipeline_result_to_h(result) ⇒ Hash
Converts a PipelineResult (Struct or proto) to a hash recursively for JSON.
117 118 119 |
# File 'lib/rakit/azure/dev_ops.rb', line 117 def pipeline_result_to_h(result) _to_h_deep(result) end |
.pipeline_status_pretty_json(status) ⇒ String
Returns pretty-printed JSON for a PipelineStatus.
138 139 140 |
# File 'lib/rakit/azure/dev_ops.rb', line 138 def pipeline_status_pretty_json(status) JSON.pretty_generate(pipeline_status_to_h(status)) end |
.pipeline_status_to_h(status) ⇒ Hash
Converts a PipelineStatus (Struct or proto) to a hash for JSON.
131 132 133 |
# File 'lib/rakit/azure/dev_ops.rb', line 131 def pipeline_status_to_h(status) _to_h_deep(status) end |