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



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

def initialize(env)
  self.repo_slug = self.class.extract_repo_slug(env)
  self.pull_request_id = env["CODEBUILD_SOURCE_VERSION"].split("/")[1]
  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



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

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

  env["CODEBUILD_SOURCE_REPO_URL"].gsub(/^.*?github\.com\/(.*?)\.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



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



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

def self.validates_as_pr?(env)
  return false unless url = self.extract_pr_url(env)
  url
end

Instance Method Details

#supported_request_sourcesObject



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

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