Class: Danger::DangerJenkins

Inherits:
Plugin
  • Object
show all
Defined in:
lib/jenkins/plugin.rb

Overview

Get access to Jenkins information right into your Dangerfile

Examples:

Configure credentials to access the Jenkins API

jenkins.user_id = YOUR_USER_ID
jenkins.api_token = YOUR_API_TOKEN

Print list of artifacts in the PR page

jenkins.print_artifacts

Print console output in the PR page

jenkins.print_console_output

Get access to the build properties

message "The spent #{jenkins.build.duration} time"

Customize how you want to present the console output

markdown "### Console output: \n\n #{jenkins.console_text}"

See Also:

  • thiagofelix/danger-jenkins

Constant Summary collapse

JENKINS_ICON =
'https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dangerfile) ⇒ DangerJenkins

Returns a new instance of DangerJenkins.



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/jenkins/plugin.rb', line 39

def initialize(dangerfile)
  super(dangerfile)

  @env = dangerfile.env
  @user_id = ENV['JENKINS_USER_ID']
  @api_token = ENV['JENKINS_API_TOKEN']
  @build_url = ENV['BUILD_URL']

  raise 'Invalid CI for Jenkins plugin.' unless jenkins?
  raise "Can't find current build" if @build_url.nil?
end

Instance Attribute Details

#api_tokenObject

API token to authenticate with Jenkins REST API

Returns:

  • String



37
38
39
# File 'lib/jenkins/plugin.rb', line 37

def api_token
  @api_token
end

#user_idObject

User to authenticate with Jenkins REST API

Returns:

  • String



32
33
34
# File 'lib/jenkins/plugin.rb', line 32

def user_id
  @user_id
end

Instance Method Details

#buildObject

Hash containing details about the build which triggered the danger process

Returns:

  • OpenStruct



55
56
57
# File 'lib/jenkins/plugin.rb', line 55

def build
  @current_build ||= fetch_current_build
end

#console_htmlObject

Console output in html format

Returns:

  • String



62
63
64
# File 'lib/jenkins/plugin.rb', line 62

def console_html
  @console_html_format ||= fetch_console(:html)
end

#console_textObject

Console output in text format

Returns:

  • String



69
70
71
# File 'lib/jenkins/plugin.rb', line 69

def console_text
  @console_text_format ||= fetch_console(:text)
end

This method returns an undefined value.

Adds a list of artifacts to the danger comment



77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/jenkins/plugin.rb', line 77

def print_artifacts
  artifacts = build.artifacts
  return if artifacts.empty?

  content = "### Jenkins artifacts:\n\n"
  content << "<img width='40' align='right' src='#{JENKINS_ICON}'></img>\n"

  artifacts.each do |artifact|
    content << "* #{artifact_link(artifact)}\n"
  end

  markdown content
end

This method returns an undefined value.

Adds a collapsable console output to danger comment



95
96
97
98
99
100
101
102
# File 'lib/jenkins/plugin.rb', line 95

def print_console_output
  content =  "### Jenkins console output:\n\n"
  content << '<details>'
  content << '<summary>Details</summary>'
  content << "<pre>#{console_html}</pre>"
  content << '</details>'
  markdown content
end