Class: Danger::CodeBuild

Inherits:
CI
  • Object
show all
Defined in:
lib/danger/ci_source/code_build.rb

Overview

### CI Setup

In CodeBuild, make sure to correctly forward CODEBUILD_BUILD_ID, CODEBUILD_SOURCE_VERSION, CODEBUILD_SOURCE_REPO_URL and DANGER_GITHUB_API_TOKEN.

### Token Setup

Add your ‘DANGER_GITHUB_API_TOKEN` to your project. Edit -> Environment -> Additional configuration -> Create a parameter

Instance Attribute Summary

Attributes inherited from CI

#pull_request_id, #repo_slug, #repo_url

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from CI

available_ci_sources, inherited, #supports?

Constructor Details

#initialize(env) ⇒ CodeBuild

Returns a new instance of CodeBuild.



26
27
28
29
30
# File 'lib/danger/ci_source/code_build.rb', line 26

def initialize(env)
  self.repo_slug = self.class.extract_repo_slug(env)
  self.pull_request_id = env["CODEBUILD_SOURCE_VERSION"].split("/")[1].to_i
  self.repo_url = self.class.extract_repo_url(env)
end

Class Method Details

.extract_pr_url(env) ⇒ Object



46
47
48
49
50
51
52
53
54
55
# File 'lib/danger/ci_source/code_build.rb', line 46

def self.extract_pr_url(env)
  return nil unless env.key? "CODEBUILD_SOURCE_VERSION"
  return nil unless env.key? "CODEBUILD_SOURCE_REPO_URL"
  return nil unless env["CODEBUILD_SOURCE_VERSION"].split("/").length == 2

  _source_origin, pr_number = env["CODEBUILD_SOURCE_VERSION"].split("/")
  github_repo_url = env["CODEBUILD_SOURCE_REPO_URL"].gsub(/\.git$/, "")

  "#{github_repo_url}/pull/#{pr_number}"
end

.extract_repo_slug(env) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/danger/ci_source/code_build.rb', line 32

def self.extract_repo_slug(env)
  return nil unless env.key? "CODEBUILD_SOURCE_REPO_URL"

  gh_host = env["DANGER_GITHUB_HOST"] || "github.com"

  env["CODEBUILD_SOURCE_REPO_URL"].gsub(%r{^.*?#{Regexp.escape(gh_host)}\/(.*?)(\.git)?$}, '\1')
end

.extract_repo_url(env) ⇒ Object



40
41
42
43
44
# File 'lib/danger/ci_source/code_build.rb', line 40

def self.extract_repo_url(env)
  return nil unless env.key? "CODEBUILD_SOURCE_REPO_URL"

  env["CODEBUILD_SOURCE_REPO_URL"].gsub(/\.git$/, "")
end

.validates_as_ci?(env) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/danger/ci_source/code_build.rb', line 14

def self.validates_as_ci?(env)
  env.key? "CODEBUILD_BUILD_ID"
end

.validates_as_pr?(env) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/danger/ci_source/code_build.rb', line 18

def self.validates_as_pr?(env)
  !!self.extract_pr_url(env)
end

Instance Method Details

#supported_request_sourcesObject



22
23
24
# File 'lib/danger/ci_source/code_build.rb', line 22

def supported_request_sources
  @supported_request_sources ||= [Danger::RequestSources::GitHub]
end