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

109 lines
3 KiB
Ruby
Raw Normal View History

2019-02-15 15:39:39 +05:30
# frozen_string_literal: true
2015-12-23 02:04:40 +05:30
module Gitlab
2016-09-13 17:45:13 +05:30
module DataBuilder
module Build
extend self
2015-12-23 02:04:40 +05:30
def build(build)
project = build.project
commit = build.pipeline
2015-12-23 02:04:40 +05:30
user = build.user
2017-08-17 22:00:37 +05:30
author_url = build_author_url(build.commit, commit)
2023-01-13 00:05:48 +05:30
data = {
2015-12-23 02:04:40 +05:30
object_kind: 'build',
ref: build.ref,
tag: build.tag,
before_sha: build.before_sha,
sha: build.sha,
# TODO: should this be not prefixed with build_?
# Leaving this way to have backward compatibility
build_id: build.id,
build_name: build.name,
2022-10-11 01:57:18 +05:30
build_stage: build.stage_name,
2015-12-23 02:04:40 +05:30
build_status: build.status,
2021-04-29 21:17:54 +05:30
build_created_at: build.created_at,
2015-12-23 02:04:40 +05:30
build_started_at: build.started_at,
build_finished_at: build.finished_at,
build_duration: build.duration,
2021-06-08 01:23:25 +05:30
build_queued_duration: build.queued_duration,
build_allow_failure: build.allow_failure,
2018-11-20 20:47:30 +05:30
build_failure_reason: build.failure_reason,
2020-01-01 13:55:28 +05:30
pipeline_id: commit.id,
runner: build_runner(build.runner),
2015-12-23 02:04:40 +05:30
# TODO: do we still need it?
project_id: project.id,
2018-03-27 19:54:05 +05:30
project_name: project.full_name,
2015-12-23 02:04:40 +05:30
2020-03-13 15:44:24 +05:30
user: user.try(:hook_attrs),
2015-12-23 02:04:40 +05:30
commit: {
2020-01-01 13:55:28 +05:30
# note: commit.id is actually the pipeline id
2015-12-23 02:04:40 +05:30
id: commit.id,
2023-03-17 16:20:25 +05:30
name: commit.name,
2015-12-23 02:04:40 +05:30
sha: commit.sha,
message: commit.git_commit_message,
author_name: commit.git_author_name,
author_email: commit.git_author_email,
2017-08-17 22:00:37 +05:30
author_url: author_url,
2015-12-23 02:04:40 +05:30
status: commit.status,
duration: commit.duration,
started_at: commit.started_at,
2017-09-10 17:25:29 +05:30
finished_at: commit.finished_at
2015-12-23 02:04:40 +05:30
},
repository: {
name: project.name,
url: project.url_to_repo,
description: project.description,
homepage: project.web_url,
git_http_url: project.http_url_to_repo,
git_ssh_url: project.ssh_url_to_repo,
visibility_level: project.visibility_level
2021-04-17 20:07:23 +05:30
},
environment: build_environment(build)
2015-12-23 02:04:40 +05:30
}
2023-01-13 00:05:48 +05:30
data[:retries_count] = build.retries_count if Feature.enabled?(:job_webhook_retries_count, project)
data
2015-12-23 02:04:40 +05:30
end
2017-08-17 22:00:37 +05:30
private
def build_author_url(commit, pipeline)
author = commit.try(:author)
author ? Gitlab::Routing.url_helpers.user_url(author) : "mailto:#{pipeline.git_author_email}"
end
2020-01-01 13:55:28 +05:30
def build_runner(runner)
return unless runner
{
id: runner.id,
description: runner.description,
2021-09-04 01:27:46 +05:30
runner_type: runner.runner_type,
2020-01-01 13:55:28 +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)
2020-01-01 13:55:28 +05:30
}
end
2021-04-17 20:07:23 +05:30
def build_environment(build)
2023-01-13 00:05:48 +05:30
return unless build.has_environment_keyword?
2021-04-17 20:07:23 +05:30
{
name: build.expanded_environment_name,
action: build.environment_action
}
end
2015-12-23 02:04:40 +05:30
end
end
end