Class: Danger::Bitrise
Overview
CI Setup
Add a script step to your workflow:
- script@1.1.2:
inputs:
- content: |-
bundle install
bundle exec danger
Token Setup
Add the DANGER_GITHUB_API_TOKEN to your workflow's Secret App Env Vars.
Bitbucket Server and Bitrise
Danger will read the environment variable GIT_REPOSITORY_URL to construct the Bitbucket Server API URL
finding the project and repo slug in the GIT_REPOSITORY_URL variable. This GIT_REPOSITORY_URL variable
comes from the App Settings tab for your Bitrise App. If you are manually setting a repo URL in the
Git Clone Repo step, you may need to set adjust this property in the settings tab, maybe even fake it.
The patterns used are (%r{\.com/(.*)}) and (%r{\.com:(.*)}) and .split(/\.git$|$/) to remove ".git" if the URL contains it.
Instance Attribute Summary
Attributes inherited from CI
#pull_request_id, #repo_slug, #repo_url
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(env) ⇒ Bitrise
constructor
A new instance of Bitrise.
- #repo_slug_asgiturl(url) ⇒ Object
- #repo_slug_from(url) ⇒ Object
- #supported_request_sources ⇒ Object
Methods inherited from CI
available_ci_sources, inherited, #supports?
Constructor Details
#initialize(env) ⇒ Bitrise
Returns a new instance of Bitrise.
50 51 52 53 54 55 |
# File 'lib/danger/ci_source/bitrise.rb', line 50 def initialize(env) self.pull_request_id = env["BITRISE_PULL_REQUEST"] self.repo_url = env["GIT_REPOSITORY_URL"] self.repo_slug = repo_slug_from(self.repo_url) end |
Class Method Details
.validates_as_ci?(env) ⇒ Boolean
33 34 35 |
# File 'lib/danger/ci_source/bitrise.rb', line 33 def self.validates_as_ci?(env) env.key? "BITRISE_IO" end |
.validates_as_pr?(env) ⇒ Boolean
37 38 39 |
# File 'lib/danger/ci_source/bitrise.rb', line 37 def self.validates_as_pr?(env) return !env["BITRISE_PULL_REQUEST"].to_s.empty? end |
Instance Method Details
#repo_slug_asgiturl(url) ⇒ Object
73 74 75 76 77 |
# File 'lib/danger/ci_source/bitrise.rb', line 73 def repo_slug_asgiturl(url) matcher_url = url repo_matches = matcher_url.match(%r{([/:])(([^/]+/)+[^/]+?)(\.git$|$)})[2] return repo_matches unless repo_matches.nil? end |
#repo_slug_from(url) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/danger/ci_source/bitrise.rb', line 57 def repo_slug_from(url) if url =~ URI::DEFAULT_PARSER.make_regexp # Try to parse the URL as a valid URI. This should cover the cases of http/https/ssh URLs. begin uri = URI.parse(url) return uri.path.sub(%r{^(/)}, "").sub(/(.git)$/, "") rescue URI::InvalidURIError # In case URL could not be parsed fallback to git URL parsing. repo_slug_asgiturl(url) end else # In case URL could not be parsed fallback to git URL parsing. git@github.com:organization/repo.git repo_slug_asgiturl(url) end end |
#supported_request_sources ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/danger/ci_source/bitrise.rb', line 41 def supported_request_sources @supported_request_sources ||= [ Danger::RequestSources::GitHub, Danger::RequestSources::GitLab, Danger::RequestSources::BitbucketServer, Danger::RequestSources::BitbucketCloud ] end |