debian-mirror-gitlab/lib/gitlab/data_builder/pipeline.rb

100 lines
3 KiB
Ruby
Raw Normal View History

2019-02-15 15:39:39 +05:30
# frozen_string_literal: true
2016-09-13 17:45:13 +05:30
module Gitlab
module DataBuilder
module Pipeline
extend self
def build(pipeline)
{
object_kind: 'pipeline',
object_attributes: hook_attrs(pipeline),
2019-12-04 20:38:33 +05:30
merge_request: pipeline.merge_request && merge_request_attrs(pipeline.merge_request),
2016-09-13 17:45:13 +05:30
user: pipeline.user.try(:hook_attrs),
project: pipeline.project.hook_attrs(backward: false),
commit: pipeline.commit.try(:hook_attrs),
2021-03-11 19:13:27 +05:30
builds: pipeline.builds.latest.map(&method(:build_hook_attrs))
2016-09-13 17:45:13 +05:30
}
end
def hook_attrs(pipeline)
{
id: pipeline.id,
2019-07-07 11:18:12 +05:30
ref: pipeline.source_ref,
2016-09-13 17:45:13 +05:30
tag: pipeline.tag,
sha: pipeline.sha,
before_sha: pipeline.before_sha,
2019-12-04 20:38:33 +05:30
source: pipeline.source,
2016-09-13 17:45:13 +05:30
status: pipeline.status,
2018-03-27 19:54:05 +05:30
detailed_status: pipeline.detailed_status(nil).label,
2017-09-10 17:25:29 +05:30
stages: pipeline.stages_names,
2016-09-13 17:45:13 +05:30
created_at: pipeline.created_at,
finished_at: pipeline.finished_at,
2018-12-05 23:21:45 +05:30
duration: pipeline.duration,
2021-06-08 01:23:25 +05:30
queued_duration: pipeline.queued_duration,
2018-12-05 23:21:45 +05:30
variables: pipeline.variables.map(&:hook_attrs)
2016-09-13 17:45:13 +05:30
}
end
2019-12-04 20:38:33 +05:30
def merge_request_attrs(merge_request)
{
id: merge_request.id,
iid: merge_request.iid,
title: merge_request.title,
source_branch: merge_request.source_branch,
source_project_id: merge_request.source_project_id,
target_branch: merge_request.target_branch,
target_project_id: merge_request.target_project_id,
state: merge_request.state,
2020-04-22 19:07:51 +05:30
merge_status: merge_request.public_merge_status,
2019-12-04 20:38:33 +05:30
url: Gitlab::UrlBuilder.build(merge_request)
}
end
2016-09-13 17:45:13 +05:30
def build_hook_attrs(build)
{
id: build.id,
stage: build.stage,
name: build.name,
status: build.status,
created_at: build.created_at,
started_at: build.started_at,
finished_at: build.finished_at,
2021-06-08 01:23:25 +05:30
duration: build.duration,
queued_duration: build.queued_duration,
2016-09-13 17:45:13 +05:30
when: build.when,
2017-08-17 22:00:37 +05:30
manual: build.action?,
2020-01-01 13:55:28 +05:30
allow_failure: build.allow_failure,
2016-09-13 17:45:13 +05:30
user: build.user.try(:hook_attrs),
runner: build.runner && runner_hook_attrs(build.runner),
artifacts_file: {
2019-07-07 11:18:12 +05:30
filename: build.artifacts_file&.filename,
2016-09-13 17:45:13 +05:30
size: build.artifacts_size
2021-04-17 20:07:23 +05:30
},
environment: environment_hook_attrs(build)
2016-09-13 17:45:13 +05:30
}
end
def runner_hook_attrs(runner)
{
id: runner.id,
description: runner.description,
2021-09-04 01:27:46 +05:30
runner_type: runner.runner_type,
2016-09-13 17:45:13 +05:30
active: runner.active?,
2021-09-04 01:27:46 +05:30
is_shared: runner.instance_type?,
2021-03-11 19:13:27 +05:30
tags: runner.tags&.map(&:name)
2016-09-13 17:45:13 +05:30
}
end
2021-04-17 20:07:23 +05:30
def environment_hook_attrs(build)
return unless build.has_environment?
{
name: build.expanded_environment_name,
action: build.environment_action
}
end
2016-09-13 17:45:13 +05:30
end
end
end