Class: Danger::XcodeServer

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

Overview

### CI Setup

If you’re bold enough to use Xcode Bots. You will need to use [Buildasaur](github.com/czechboy0/Buildasaur) in order to work with Danger. This will set up your build environment for you, as the name of the bot contains all of the environment variables that Danger needs to work.

With Buildasaur set up, you can edit your job to add ‘bundle exec danger` as a post-action build script.

### Token Setup

As this is self-hosted, you will need to add the ‘DANGER_GITHUB_API_TOKEN` to your build user’s ENV. The alternative is to pass in the token as a prefix to the command ‘DANGER_GITHUB_API_TOKEN=“123” bundle exec danger`.`.

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) ⇒ XcodeServer

Returns a new instance of XcodeServer.



37
38
39
40
41
42
43
44
45
46
# File 'lib/danger/ci_source/xcode_server.rb', line 37

def initialize(env)
  bot_name = env["XCS_BOT_NAME"]
  return if bot_name.nil?

  repo_matches = bot_name.match(/\[(.+)\]/)
  self.repo_slug = repo_matches[1] unless repo_matches.nil?
  pull_request_id_matches = bot_name.match(/#(\d+)/)
  self.pull_request_id = pull_request_id_matches[1] unless pull_request_id_matches.nil?
  self.repo_url = GitRepo.new.origins # Xcode Server doesn't provide a repo url env variable :/
end

Class Method Details

.validates_as_ci?(env) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/danger/ci_source/xcode_server.rb', line 20

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

.validates_as_pr?(env) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
# File 'lib/danger/ci_source/xcode_server.rb', line 24

def self.validates_as_pr?(env)
  value = env["XCS_BOT_NAME"]
  !value.nil? && value.include?("BuildaBot")
end

Instance Method Details

#supported_request_sourcesObject



29
30
31
32
33
34
35
# File 'lib/danger/ci_source/xcode_server.rb', line 29

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