class Publisher::Providers::Gitlab

Gitlab implementation

Public Class Methods

run_id() click to toggle source

Get ci run ID without creating instance of ci provider

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 11
def self.run_id
  @run_id ||= ENV["CI_PIPELINE_ID"]
end

Public Instance Methods

executor_info() click to toggle source

Get executor info

@return [Hash]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 25
def executor_info
  {
    name: "Gitlab",
    type: "gitlab",
    reportName: "AllureReport",
    url: server_url,
    reportUrl: report_url,
    buildUrl: build_url,
    buildOrder: run_id,
    buildName: build_name
  }
end
pr?() click to toggle source

Pull request run

@return [Boolean]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 18
def pr?
  (allure_project && allure_mr_iid) || ENV["CI_PIPELINE_SOURCE"] == "merge_request_event"
end

Private Instance Methods

add_comment() click to toggle source

Add comment with report url

@return [void]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 57
def add_comment
  return client.create_merge_request_comment(project, mr_iid, report_urls.comment_body) unless comment

  client.edit_merge_request_note(project, mr_iid, comment.id, report_urls.comment_body(comment.body))
end
allure_mr_iid() click to toggle source

Custom mr iid name

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 96
def allure_mr_iid
  @allure_mr_iid ||= env("ALLURE_MERGE_REQUEST_IID")
end
allure_project() click to toggle source

Custom repository name

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 89
def allure_project
  @allure_project ||= env("ALLURE_PROJECT_PATH")
end
allure_sha() click to toggle source

Custom sha

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 103
def allure_sha
  @allure_sha ||= env("ALLURE_COMMIT_SHA")
end
build_name() click to toggle source

Job name

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 138
def build_name
  @build_name ||= env(ALLURE_JOB_NAME) || env("CI_JOB_NAME")
end
build_url() click to toggle source

Build url

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 131
def build_url
  @build_url ||= env("CI_PIPELINE_URL")
end
client() click to toggle source

Get gitlab client

@return [Gitlab::Client]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 75
def client
  @client ||= begin
    raise("Missing GITLAB_AUTH_TOKEN environment variable!") unless env("GITLAB_AUTH_TOKEN")

    ::Gitlab::Client.new(
      endpoint: "#{server_url}/api/v4",
      private_token: env("GITLAB_AUTH_TOKEN")
    )
  end
end
comment() click to toggle source

Existing comment with allure urls

@return [Gitlab::ObjectifiedHash]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 66
def comment
  client.merge_request_comments(project, mr_iid).auto_paginate.detect do |comment|
    UrlSectionBuilder.match?(comment.body)
  end
end
env(name) click to toggle source

Return non empty environment variable value

@param [String] name @return [String, nil]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 156
def env(name)
  return unless ENV[name] && !ENV[name].empty?

  ENV[name]
end
mr_iid() click to toggle source

Merge request iid

@return [Integer]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 117
def mr_iid
  @mr_iid ||= allure_mr_iid || env("CI_MERGE_REQUEST_IID")
end
pr_description() click to toggle source

Current pull request description

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 43
def pr_description
  @pr_description ||= client.merge_request(project, mr_iid).description
end
project() click to toggle source

Gitlab project path

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 110
def project
  @project ||= allure_project || env("CI_MERGE_REQUEST_PROJECT_PATH") || env("CI_PROJECT_PATH")
end
server_url() click to toggle source

Server url

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 124
def server_url
  @server_url ||= env("CI_SERVER_URL")
end
sha_url() click to toggle source

Commit sha url

@return [String]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 145
def sha_url
  sha = allure_sha || env("CI_MERGE_REQUEST_SOURCE_BRANCH_SHA") || env("CI_COMMIT_SHA")
  short_sha = sha[0..7]

  "[#{short_sha}](#{server_url}/#{project}/-/merge_requests/#{mr_iid}/diffs?commit_id=#{sha})"
end
update_pr_description() click to toggle source

Update pull request description

@return [void]

# File lib/allure_report_publisher/lib/providers/gitlab.rb, line 50
def update_pr_description
  client.update_merge_request(project, mr_iid, description: report_urls.updated_pr_description(pr_description))
end