Class: Danger::TeamCity
Overview
### CI Setup
You need to go to your project settings. Then depending on the type of your build settings, you may need to add a new build step for Danger. You want to be able to run the command ‘bundle exec danger`, so the “Simple Command Runner” should be all you need to do that.
### Token + Environment Setup
#### GitHub
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`.
However, you will need to find a way to add the environment vars: ‘GITHUB_REPO_SLUG`, `GITHUB_PULL_REQUEST_ID` and `GITHUB_REPO_URL`. These are not added by default. You could do this via the GitHub API potentially.
#### GitLab
As this is self-hosted, you will need to add the ‘DANGER_GITLAB_API_TOKEN` to your build user’s ENV. The alternative is to pass in the token as a prefix to the command ‘DANGER_GITLAB_API_TOKEN=“123” bundle exec danger`.
However, you will need to find a way to add the environment vars: ‘GITLAB_REPO_SLUG`, `GITLAB_PULL_REQUEST_ID` and `GITLAB_REPO_URL`. These are not added by default. You could do this via the GitLab API potentially.
We would love some advice on improving this setup.
Instance Attribute Summary
Attributes inherited from CI
#pull_request_id, #repo_slug, #repo_url
Class Method Summary collapse
- .validates_as_ci?(env) ⇒ Boolean
- .validates_as_github_pr?(env) ⇒ Boolean
- .validates_as_gitlab_pr?(env) ⇒ Boolean
- .validates_as_pr?(env) ⇒ Boolean
Instance Method Summary collapse
-
#initialize(env) ⇒ TeamCity
constructor
A new instance of TeamCity.
- #supported_request_sources ⇒ Object
Methods inherited from CI
available_ci_sources, inherited, #supports?
Constructor Details
#initialize(env) ⇒ TeamCity
Returns a new instance of TeamCity.
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/danger/ci_source/teamcity.rb', line 53 def initialize(env) # NB: Unfortunately TeamCity doesn't provide these variables # automatically so you have to add these variables manually to your # project or build configuration if self.class.validates_as_github_pr?(env) extract_github_variables!(env) elsif self.class.validates_as_gitlab_pr?(env) extract_gitlab_variables!(env) end end |
Class Method Details
.validates_as_ci?(env) ⇒ Boolean
41 42 43 |
# File 'lib/danger/ci_source/teamcity.rb', line 41 def self.validates_as_ci?(env) env.key? "TEAMCITY_VERSION" end |
.validates_as_github_pr?(env) ⇒ Boolean
32 33 34 |
# File 'lib/danger/ci_source/teamcity.rb', line 32 def validates_as_github_pr?(env) ["GITHUB_PULL_REQUEST_ID", "GITHUB_REPO_URL", "GITHUB_REPO_URL"].all? { |x| env[x] && !env[x].empty? } end |
.validates_as_gitlab_pr?(env) ⇒ Boolean
36 37 38 |
# File 'lib/danger/ci_source/teamcity.rb', line 36 def validates_as_gitlab_pr?(env) ["GITLAB_REPO_SLUG", "GITLAB_PULL_REQUEST_ID", "GITLAB_REPO_URL"].all? { |x| env[x] && !env[x].empty? } end |
.validates_as_pr?(env) ⇒ Boolean
45 46 47 |
# File 'lib/danger/ci_source/teamcity.rb', line 45 def self.validates_as_pr?(env) validates_as_github_pr?(env) || validates_as_gitlab_pr?(env) end |
Instance Method Details
#supported_request_sources ⇒ Object
49 50 51 |
# File 'lib/danger/ci_source/teamcity.rb', line 49 def supported_request_sources @supported_request_sources ||= [Danger::RequestSources::GitHub, Danger::RequestSources::GitLab] end |