mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-09 12:46:07 +10:00
Refactor CI helpers
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
module BuildsHelper
|
||||
def build_ref_link build
|
||||
gitlab_ref_link build.project, build.ref
|
||||
end
|
||||
|
||||
def build_compare_link build
|
||||
gitlab_compare_link build.project, build.commit.short_before_sha, build.short_sha
|
||||
end
|
||||
|
||||
def build_commit_link build
|
||||
gitlab_commit_link build.project, build.short_sha
|
||||
end
|
||||
|
||||
def build_url(build)
|
||||
ci_project_build_url(build.project, build)
|
||||
end
|
||||
end
|
||||
@@ -1,54 +0,0 @@
|
||||
module Ci
|
||||
module ApplicationHelper
|
||||
def loader_html
|
||||
image_tag 'ci/loader.gif', alt: 'Loading'
|
||||
end
|
||||
|
||||
def date_from_to(from, to)
|
||||
"#{from.to_s(:short)} - #{to.to_s(:short)}"
|
||||
end
|
||||
|
||||
def duration_in_words(finished_at, started_at)
|
||||
if finished_at && started_at
|
||||
interval_in_seconds = finished_at.to_i - started_at.to_i
|
||||
elsif started_at
|
||||
interval_in_seconds = Time.now.to_i - started_at.to_i
|
||||
end
|
||||
|
||||
time_interval_in_words(interval_in_seconds)
|
||||
end
|
||||
|
||||
def time_interval_in_words(interval_in_seconds)
|
||||
minutes = interval_in_seconds / 60
|
||||
seconds = interval_in_seconds - minutes * 60
|
||||
|
||||
if minutes >= 1
|
||||
"#{pluralize(minutes, "minute")} #{pluralize(seconds, "second")}"
|
||||
else
|
||||
"#{pluralize(seconds, "second")}"
|
||||
end
|
||||
end
|
||||
|
||||
def ci_icon_for_status(status)
|
||||
icon_name =
|
||||
case status
|
||||
when 'success'
|
||||
'check-square'
|
||||
when 'failed'
|
||||
'close'
|
||||
when 'running', 'pending'
|
||||
'clock-o'
|
||||
else
|
||||
'circle'
|
||||
end
|
||||
|
||||
icon(icon_name)
|
||||
end
|
||||
|
||||
def ci_status_with_icon(status)
|
||||
content_tag :span, class: "ci-status ci-#{status}" do
|
||||
ci_icon_for_status(status) + ' '.html_safe + status
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,19 +0,0 @@
|
||||
module Ci
|
||||
module BuildsHelper
|
||||
def build_ref_link build
|
||||
gitlab_ref_link build.project, build.ref
|
||||
end
|
||||
|
||||
def build_compare_link build
|
||||
gitlab_compare_link build.project, build.commit.short_before_sha, build.short_sha
|
||||
end
|
||||
|
||||
def build_commit_link build
|
||||
gitlab_commit_link build.project, build.short_sha
|
||||
end
|
||||
|
||||
def build_url(build)
|
||||
ci_project_build_url(build.project, build)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,11 +0,0 @@
|
||||
module Ci
|
||||
module IconsHelper
|
||||
def boolean_to_icon(value)
|
||||
if value.to_s == "true"
|
||||
content_tag :i, nil, class: 'fa fa-circle cgreen'
|
||||
else
|
||||
content_tag :i, nil, class: 'fa fa-power-off clgray'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,22 +0,0 @@
|
||||
module Ci
|
||||
module RunnersHelper
|
||||
def runner_status_icon(runner)
|
||||
unless runner.contacted_at
|
||||
return content_tag :i, nil,
|
||||
class: "fa fa-warning-sign",
|
||||
title: "New runner. Has not connected yet"
|
||||
end
|
||||
|
||||
status =
|
||||
if runner.active?
|
||||
runner.contacted_at > 3.hour.ago ? :online : :offline
|
||||
else
|
||||
:paused
|
||||
end
|
||||
|
||||
content_tag :i, nil,
|
||||
class: "fa fa-circle runner-status-#{status}",
|
||||
title: "Runner is #{status}, last contact was #{time_ago_in_words(runner.contacted_at)} ago"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,7 +0,0 @@
|
||||
module Ci
|
||||
module TriggersHelper
|
||||
def ci_build_trigger_url(project_id, ref_name)
|
||||
"#{Settings.gitlab_ci.url}/ci/api/v1/projects/#{project_id}/refs/#{ref_name}/trigger"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,15 +0,0 @@
|
||||
module Ci
|
||||
module UserHelper
|
||||
def user_avatar_url(user = nil, size = nil, default = 'identicon')
|
||||
size = 40 if size.nil? || size <= 0
|
||||
|
||||
if user.blank? || user.avatar_url.blank?
|
||||
'ci/no_avatar.png'
|
||||
elsif /^(http(s?):\/\/(www|secure)\.gravatar\.com\/avatar\/(\w*))/ =~ user.avatar_url
|
||||
Regexp.last_match[0] + "?s=#{size}&d=#{default}"
|
||||
else
|
||||
user.avatar_url
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -4,19 +4,7 @@ module CiStatusHelper
|
||||
end
|
||||
|
||||
def ci_status_icon(ci_commit)
|
||||
icon_name =
|
||||
case ci_commit.status
|
||||
when 'success'
|
||||
'check'
|
||||
when 'failed'
|
||||
'close'
|
||||
when 'running', 'pending'
|
||||
'clock-o'
|
||||
else
|
||||
'circle'
|
||||
end
|
||||
|
||||
icon(icon_name)
|
||||
ci_icon_for_status(ci_commit.status)
|
||||
end
|
||||
|
||||
def ci_status_color(ci_commit)
|
||||
@@ -31,4 +19,26 @@ module CiStatusHelper
|
||||
'gray'
|
||||
end
|
||||
end
|
||||
|
||||
def ci_status_with_icon(status)
|
||||
content_tag :span, class: "ci-status ci-#{status}" do
|
||||
ci_icon_for_status(status) + ' '.html_safe + status
|
||||
end
|
||||
end
|
||||
|
||||
def ci_icon_for_status(status)
|
||||
icon_name =
|
||||
case status
|
||||
when 'success'
|
||||
'check'
|
||||
when 'failed'
|
||||
'close'
|
||||
when 'running', 'pending'
|
||||
'clock-o'
|
||||
else
|
||||
'circle'
|
||||
end
|
||||
|
||||
icon(icon_name)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
module RunnersHelper
|
||||
def runner_status_icon(runner)
|
||||
unless runner.contacted_at
|
||||
return content_tag :i, nil,
|
||||
class: "fa fa-warning-sign",
|
||||
title: "New runner. Has not connected yet"
|
||||
end
|
||||
|
||||
status =
|
||||
if runner.active?
|
||||
runner.contacted_at > 3.hour.ago ? :online : :offline
|
||||
else
|
||||
:paused
|
||||
end
|
||||
|
||||
content_tag :i, nil,
|
||||
class: "fa fa-circle runner-status-#{status}",
|
||||
title: "Runner is #{status}, last contact was #{time_ago_in_words(runner.contacted_at)} ago"
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,27 @@
|
||||
module TimeHelper
|
||||
def duration_in_words(finished_at, started_at)
|
||||
if finished_at && started_at
|
||||
interval_in_seconds = finished_at.to_i - started_at.to_i
|
||||
elsif started_at
|
||||
interval_in_seconds = Time.now.to_i - started_at.to_i
|
||||
end
|
||||
|
||||
time_interval_in_words(interval_in_seconds)
|
||||
end
|
||||
|
||||
def time_interval_in_words(interval_in_seconds)
|
||||
minutes = interval_in_seconds / 60
|
||||
seconds = interval_in_seconds - minutes * 60
|
||||
|
||||
if minutes >= 1
|
||||
"#{pluralize(minutes, "minute")} #{pluralize(seconds, "second")}"
|
||||
else
|
||||
"#{pluralize(seconds, "second")}"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def date_from_to(from, to)
|
||||
"#{from.to_s(:short)} - #{to.to_s(:short)}"
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
module TriggersHelper
|
||||
def ci_build_trigger_url(project_id, ref_name)
|
||||
"#{Settings.gitlab_ci.url}/ci/api/v1/projects/#{project_id}/refs/#{ref_name}/trigger"
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Ci::RunnersHelper do
|
||||
describe RunnersHelper do
|
||||
it "returns - not contacted yet" do
|
||||
runner = FactoryGirl.build :ci_runner
|
||||
expect(runner_status_icon(runner)).to include("not connected yet")
|
||||
@@ -1,6 +1,6 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Ci::ApplicationHelper do
|
||||
describe TimeHelper do
|
||||
describe "#duration_in_words" do
|
||||
it "returns minutes and seconds" do
|
||||
intervals_in_words = {
|
||||
Reference in New Issue
Block a user