class Danger::DangerfileBitbucketServerPlugin

Handles interacting with Bitbucket Server inside a Dangerfile. Provides a few functions which wrap ‘pr_json` and also through a few standard functions to simplify your code.

@example Warn when a PR is classed as work in progress

warn "PR is classed as Work in Progress" if bitbucket_server.pr_title.include? "[WIP]"

@example Declare a PR to be simple to avoid specific Danger rules

declared_trivial = (bitbucket_server.pr_title + bitbucket_server.pr_body).include?("#trivial")

@example Ensure that labels have been used on the PR

failure "Please add labels to this PR" if bitbucket_server.pr_labels.empty?

@example Ensure there is a summary for a PR

failure "Please provide a summary in the Pull Request description" if bitbucket_server.pr_body.length < 5

@example Only accept PRs to the develop branch

failure "Please re-submit this PR to develop, we may have already fixed your issue." if bitbucket_server.branch_for_base != "develop"

@example Highlight when a celebrity makes a pull request

message "Welcome, Danger." if bitbucket_server.pr_author == "dangermcshane"

@example Ensure that all PRs have an assignee

warn "This PR does not have any assignees yet." if bitbucket_server.pr_json[:reviewers].length == 0

@example Send a message with links to a collection of specific files

if git.modified_files.include? "config/*.js"
  config_files = git.modified_files.select { |path| path.include? "config/" }
  message "This PR changes #{ bitbucket_server.html_link(config_files) }"
end

@example Highlight with a clickable link if a Package.json is changed

warn "#{bitbucket_server.html_link("Package.json")} was edited." if git.modified_files.include? "Package.json"

@see danger/danger @tags core, bitbucket_server

Public Class Methods

instance_name() click to toggle source

The instance name used in the Dangerfile @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 60
def self.instance_name
  "bitbucket_server"
end
new(dangerfile) click to toggle source

So that this init can fail.

Calls superclass method
# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 51
def self.new(dangerfile)
  return nil if dangerfile.env.request_source.class != Danger::RequestSources::BitbucketServer

  super
end
new(dangerfile) click to toggle source
Calls superclass method
# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 64
def initialize(dangerfile)
  super(dangerfile)
  @bs = dangerfile.env.request_source
end

Public Instance Methods

base_commit() click to toggle source

@!group PR Commit Metadata The base commit to which the PR is going to be merged as a parent. @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 130
def base_commit
  @bs.pr_json[:toRef][:latestCommit].to_s
end
branch_for_base() click to toggle source

@!group PR Commit Metadata The branch to which the PR is going to be merged into. @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 106
def branch_for_base
  @bs.pr_json[:toRef][:displayId].to_s
end
branch_for_head() click to toggle source

@!group PR Commit Metadata The branch to which the PR is going to be merged from. @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 122
def branch_for_head
  @bs.pr_json[:fromRef][:displayId].to_s
end
head_commit() click to toggle source

@!group PR Commit Metadata The head commit to which the PR is requesting to be merged from. @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 138
def head_commit
  @bs.pr_json[:fromRef][:latestCommit].to_s
end
pr_author() click to toggle source

@!group PR Metadata The username of the author of the Pull Request. @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 98
def pr_author
  @bs.pr_json[:author][:user][:slug].to_s
end
pr_body()
Alias for: pr_description
pr_description() click to toggle source

@!group PR Metadata The body text of the Pull Request. @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 89
def pr_description
  @bs.pr_json[:description].to_s
end
Also aliased as: pr_body
pr_json() click to toggle source

@!group Bitbucket Server Misc The hash that represents the PR’s JSON. For an example of what this looks like see the [Danger Fixture’d one](raw.githubusercontent.com/danger/danger/master/spec/fixtures/bitbucket_server_api/pr_response.json). @return [Hash]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 73
def pr_json
  @bs.pr_json
end
pr_title() click to toggle source

@!group PR Metadata The title of the Pull Request. @return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 81
def pr_title
  @bs.pr_json[:title].to_s
end
update_pr_build_status(status, build_job_link, description) click to toggle source

@!group Bitbucket Server Misc Updates the PR with build status and build server job link. @param [String] status

SUCCESSFUL, FAILED and INPROGRESS

@param [String] build_job_link

Build server job link

@param [String] description

Build status description

@return [String]

# File lib/danger/danger_core/plugins/dangerfile_bitbucket_server_plugin.rb, line 182
def update_pr_build_status(status, build_job_link, description)
  @bs.update_pr_build_status(status, build_job_link, description)
end

Private Instance Methods