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 can manually add GITHUB_REPO_SLUG and GITHUB_REPO_URL
as build parameters or by exporting them inside your Simple Command Runner.
As for GITHUB_PULL_REQUEST_ID, TeamCity provides the %teamcity.build.branch% variable which is in the format
PR_NUMBER/merge. You can slice the Pull Request ID out by doing the following:
branch="%teamcity.build.branch%"
export GITHUB_PULL_REQUEST_ID=(${branch//\// })
Or if you are using the pull request feature you can set an environment parameter called GITHUB_PULL_REQUEST_ID
to the value of: %teamcity.pullRequest.number
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.
BitBucket Cloud
You will need to add the following environment variables as build parameters or by exporting them inside your Simple Command Runner.
-
BITBUCKET_REPO_SLUG -
BITBUCKET_REPO_URL -
DANGER_BITBUCKETCLOUD_USERNAME -
DANGER_BITBUCKETCLOUD_PASSWORD
or
DANGER_BITBUCKETCLOUD_OAUTH_KEYDANGER_BITBUCKETCLOUD_OAUTH_SECRET
You will also need to set the BITBUCKET_BRANCH_NAME environment variable.
TeamCity provides %teamcity.build.branch%, which you can use at the top of your Simple Command Runner:
export BITBUCKET_BRANCH_NAME="%teamcity.build.branch%"
BitBucket Server
You will need to add the following environment variables as build parameters or by exporting them inside your Simple Command Runner.
DANGER_BITBUCKETSERVER_USERNAMEDANGER_BITBUCKETSERVER_PASSWORDDANGER_BITBUCKETSERVER_HOSTBITBUCKETSERVER_REPO_SLUGBITBUCKETSERVER_PULL_REQUEST_IDBITBUCKETSERVER_REPO_URL
Instance Attribute Summary
Attributes inherited from CI
#pull_request_id, #repo_slug, #repo_url
Class Method Summary collapse
- .validates_as_bitbucket_cloud_pr?(env) ⇒ Boolean
- .validates_as_bitbucket_server_pr?(env) ⇒ Boolean
- .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
111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/danger/ci_source/teamcity.rb', line 111 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) elsif self.class.validates_as_bitbucket_cloud_pr?(env) extract_bitbucket_variables!(env) elsif self.class.validates_as_bitbucket_server_pr?(env) extract_bitbucket_server_variables!(env) end end |
Class Method Details
.validates_as_bitbucket_cloud_pr?(env) ⇒ Boolean
90 91 92 |
# File 'lib/danger/ci_source/teamcity.rb', line 90 def validates_as_bitbucket_cloud_pr?(env) ["BITBUCKET_REPO_SLUG", "BITBUCKET_BRANCH_NAME", "BITBUCKET_REPO_URL"].all? { |x| env[x] && !env[x].empty? } end |
.validates_as_bitbucket_server_pr?(env) ⇒ Boolean
94 95 96 |
# File 'lib/danger/ci_source/teamcity.rb', line 94 def validates_as_bitbucket_server_pr?(env) ["BITBUCKETSERVER_REPO_SLUG", "BITBUCKETSERVER_PULL_REQUEST_ID", "BITBUCKETSERVER_REPO_URL"].all? { |x| env[x] && !env[x].empty? } end |
.validates_as_ci?(env) ⇒ Boolean
99 100 101 |
# File 'lib/danger/ci_source/teamcity.rb', line 99 def self.validates_as_ci?(env) env.key? "TEAMCITY_VERSION" end |
.validates_as_github_pr?(env) ⇒ Boolean
82 83 84 |
# File 'lib/danger/ci_source/teamcity.rb', line 82 def validates_as_github_pr?(env) ["GITHUB_PULL_REQUEST_ID", "GITHUB_REPO_URL"].all? { |x| env[x] && !env[x].empty? } end |
.validates_as_gitlab_pr?(env) ⇒ Boolean
86 87 88 |
# File 'lib/danger/ci_source/teamcity.rb', line 86 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
103 104 105 |
# File 'lib/danger/ci_source/teamcity.rb', line 103 def self.validates_as_pr?(env) validates_as_github_pr?(env) || validates_as_gitlab_pr?(env) || validates_as_bitbucket_cloud_pr?(env) || validates_as_bitbucket_server_pr?(env) end |
Instance Method Details
#supported_request_sources ⇒ Object
107 108 109 |
# File 'lib/danger/ci_source/teamcity.rb', line 107 def supported_request_sources @supported_request_sources ||= [Danger::RequestSources::GitHub, Danger::RequestSources::GitLab, Danger::RequestSources::BitbucketCloud, Danger::RequestSources::BitbucketServer] end |