Module: TeamCityApi
- Defined in:
- lib/teamcity_api.rb
Class Method Summary collapse
- .create_build_config_vcs_root_config(vcsRootId) ⇒ Object
- .create_build_trigger_config(buildConfigurationId) ⇒ Object
- .create_new_build_configuration(projectId, inputFile, username, password) ⇒ Object
- .create_new_project(inputFile, username, password) ⇒ Object
- .create_new_vcs_root(inputFile, username, password) ⇒ Object
-
.get_build_configs_by_projectId(projectId, username, password) ⇒ Object
Build Config Get/Create API.
- .get_build_configs_by_projectId_and_build_configurationId(projectId, buildConfigurationId, username, password) ⇒ Object
- .get_build_status(projectId) ⇒ Object
-
.get_project_by_id(projectId, username, password) ⇒ Object
Project Get/Create API.
- .get_teamcity_creds ⇒ Object
-
.get_vcs_roots_by_id(vcsRootId, username, password) ⇒ Object
VCS-Root Get/Create API.
-
.set_build_configuration_build_step(buildConfigurationId, inputFile, username, password) ⇒ Object
Setup build configuration step.
-
.set_build_configuration_feature(buildConfigurationId, inputFile, username, password) ⇒ Object
Setup build feature step.
-
.set_build_configuration_parameter(buildConfigurationId, parameterName, parameterValue, username, password) ⇒ Object
Setup build configuration parameters.
-
.set_build_configuration_setting(buildConfigurationId, settingName, settingValue, username, password) ⇒ Object
Setup build configuration settings.
-
.set_build_configuration_trigger(buildConfigurationId, inputFile, username, password) ⇒ Object
Setup build trigger step.
-
.set_build_configuration_vcs_root(buildConfigurationId, vcsRootId, username, password) ⇒ Object
Setup build configuration Vcs-Root.
-
.trigger_build(buildConfigurationId, username, password) ⇒ Object
Build trigger API.
Class Method Details
.create_build_config_vcs_root_config(vcsRootId) ⇒ Object
178 179 180 181 182 183 |
# File 'lib/teamcity_api.rb', line 178 def TeamCityApi.create_build_config_vcs_root_config vcsRootId xml = Builder::XmlMarkup.new :indent => 2 xml.tag!("vcs-root-entry"){ xml.tag!("vcs-root", "id" => "#{vcsRootId}") } end |
.create_build_trigger_config(buildConfigurationId) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/teamcity_api.rb', line 36 def TeamCityApi.create_build_trigger_config buildConfigurationId xml = Builder::XmlMarkup.new :indent => 2 xml.build{ xml.triggeringOptions 'cleanSources' => 'true', 'rebuildAllDependencies' => 'true', 'queueAtTop' => 'true' xml.buildType 'id' => "#{buildConfigurationId}" } end |
.create_new_build_configuration(projectId, inputFile, username, password) ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/teamcity_api.rb', line 125 def TeamCityApi.create_new_build_configuration projectId, inputFile, username, password file = File.open("../spec/#{inputFile}", "r") requestContent = file.read uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new "/httpAuth/app/rest/projects/id:#{projectId}/buildTypes", {'Accept' => 'application/json'} request.body = requestContent request.content_type = 'application/json' request.basic_auth username, password response = http.request request # File handling will be removed and instead use Tempfile for better security target = open("../spec/CreateNewBuildConfigurationResponse", 'w') target.truncate(0) target.write(response.body) target.close end |
.create_new_project(inputFile, username, password) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/teamcity_api.rb', line 58 def TeamCityApi.create_new_project inputFile, username, password file = File.open("../spec/#{inputFile}", "r") requestContent = file.read uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new "/httpAuth/app/rest/projects", {'Accept' => 'application/json'} request.body = requestContent request.content_type = 'application/json' request.basic_auth username, password response = http.request request puts response.body end |
.create_new_vcs_root(inputFile, username, password) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/teamcity_api.rb', line 85 def TeamCityApi.create_new_vcs_root inputFile, username, password file = File.open("../spec/#{inputFile}", "r") requestContent = file.read uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new "/httpAuth/app/rest/vcs-roots", {'Accept' => 'application/json'} request.body = requestContent request.content_type = 'application/json' request.basic_auth username, password response = http.request request puts response.body end |
.get_build_configs_by_projectId(projectId, username, password) ⇒ Object
Build Config Get/Create API
99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/teamcity_api.rb', line 99 def TeamCityApi.get_build_configs_by_projectId projectId, username, password uri = URI.parse "http://teamcity.relayhealth.com" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Get.new "/app/rest/projects/id:#{projectId}/buildTypes", {'Accept' => 'application/json'} request.basic_auth username, password response = http.request request # File handling will be removed and instead use Tempfile for better security target = open("../spec/BuildConfigsByProjectId", 'w') target.truncate(0) target.write(response.body) target.close end |
.get_build_configs_by_projectId_and_build_configurationId(projectId, buildConfigurationId, username, password) ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/teamcity_api.rb', line 112 def TeamCityApi.get_build_configs_by_projectId_and_build_configurationId projectId, buildConfigurationId, username, password uri = URI.parse "http://teamcity.relayhealth.com" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Get.new "/app/rest/projects/id:#{projectId}/buildTypes/id:#{buildConfigurationId}", {'Accept' => 'application/json'} request.basic_auth username, password response = http.request request # File handling will be removed and instead use Tempfile for better security target = open("../spec/BuildConfigByProjectAndBuildConfigurationId", 'w') target.truncate(0) target.write(response.body) target.close end |
.get_build_status(projectId) ⇒ Object
224 225 226 227 228 229 230 231 232 |
# File 'lib/teamcity_api.rb', line 224 def TeamCityApi.get_build_status projectId # list queued builds per project uri = URI.parse 'http://teamcity.relayhealth.com' http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Get.new "/app/rest/buildQueue?locator=project:#{projectId}", {'Accept' => 'application/json'} creds = TeamCityApi.get_teamcity_creds request.basic_auth creds[0].delete("\n"), creds[1].delete("\n") response = http.request request end |
.get_project_by_id(projectId, username, password) ⇒ Object
Project Get/Create API
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/teamcity_api.rb', line 45 def TeamCityApi.get_project_by_id projectId, username, password uri = URI.parse "http://teamcity.relayhealth.com" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Get.new "/app/rest/projects/id:#{projectId}", {'Accept' => 'application/json'} request.basic_auth username, password response = http.request request # File handling will be removed and instead use Tempfile for better security target = open("../spec/ProjectConfigByProjectId", 'w') target.truncate(0) target.write(response.body) target.close end |
.get_teamcity_creds ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/teamcity_api.rb', line 10 def TeamCityApi.get_teamcity_creds file = File.open(Dir.pwd + '/spec/p.txt', 'r') content = file.read content.gsub!(/\r\n?/, "\n") line_num = 0 creds = [] content.each_line do |line| creds << line end creds end |
.get_vcs_roots_by_id(vcsRootId, username, password) ⇒ Object
VCS-Root Get/Create API
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/teamcity_api.rb', line 72 def TeamCityApi.get_vcs_roots_by_id vcsRootId, username, password uri = URI.parse "http://teamcity.relayhealth.com" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Get.new "/httpAuth/app/rest/vcs-roots/id:#{vcsRootId}", {'Accept' => 'application/json'} request.basic_auth username, password response = http.request request # File handling will be removed and instead use Tempfile for better security target = open("../spec/VcsRootConfigByVcsRootId", 'w') target.truncate(0) target.write(response.body) target.close end |
.set_build_configuration_build_step(buildConfigurationId, inputFile, username, password) ⇒ Object
Setup build configuration step
186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/teamcity_api.rb', line 186 def TeamCityApi.set_build_configuration_build_step buildConfigurationId, inputFile, username, password file = File.open("../spec/#{inputFile}", "r") requestContent = file.read uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new "/httpAuth/app/rest/buildTypes/id:#{buildConfigurationId}/steps/" request.body = requestContent request.content_type = 'application/xml' request.basic_auth username, password response = http.request request end |
.set_build_configuration_feature(buildConfigurationId, inputFile, username, password) ⇒ Object
Setup build feature step
199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/teamcity_api.rb', line 199 def TeamCityApi.set_build_configuration_feature buildConfigurationId, inputFile, username, password file = File.open("../spec/#{inputFile}", "r") requestContent = file.read uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new "/httpAuth/app/rest/buildTypes/id:#{buildConfigurationId}/features/" request.body = requestContent request.content_type = 'application/xml' request.basic_auth username, password response = http.request request end |
.set_build_configuration_parameter(buildConfigurationId, parameterName, parameterValue, username, password) ⇒ Object
Setup build configuration parameters
156 157 158 159 160 161 162 163 164 |
# File 'lib/teamcity_api.rb', line 156 def TeamCityApi.set_build_configuration_parameter buildConfigurationId, parameterName, parameterValue, username, password uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Put.new "/httpAuth/app/rest/buildTypes/id:#{buildConfigurationId}/parameters/#{parameterName}" request.body = parameterValue request.content_type = 'text/plain' request.basic_auth username, password response = http.request request end |
.set_build_configuration_setting(buildConfigurationId, settingName, settingValue, username, password) ⇒ Object
Setup build configuration settings
145 146 147 148 149 150 151 152 153 |
# File 'lib/teamcity_api.rb', line 145 def TeamCityApi.set_build_configuration_setting buildConfigurationId, settingName, settingValue, username, password uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Put.new "/httpAuth/app/rest/buildTypes/id:#{buildConfigurationId}/settings/#{settingName}" request.body = settingValue request.content_type = 'text/plain' request.basic_auth username, password response = http.request request end |
.set_build_configuration_trigger(buildConfigurationId, inputFile, username, password) ⇒ Object
Setup build trigger step
212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/teamcity_api.rb', line 212 def TeamCityApi.set_build_configuration_trigger buildConfigurationId, inputFile, username, password file = File.open("../spec/#{inputFile}", "r") requestContent = file.read uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new "/httpAuth/app/rest/buildTypes/id:#{buildConfigurationId}/triggers/" request.body = requestContent request.content_type = 'application/xml' request.basic_auth username, password response = http.request request end |
.set_build_configuration_vcs_root(buildConfigurationId, vcsRootId, username, password) ⇒ Object
Setup build configuration Vcs-Root
167 168 169 170 171 172 173 174 175 176 |
# File 'lib/teamcity_api.rb', line 167 def TeamCityApi.set_build_configuration_vcs_root buildConfigurationId, vcsRootId, username, password uri = URI.parse "http://localhost:9999/" http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new "/httpAuth/app/rest/buildTypes/id:#{buildConfigurationId}/vcs-root-entries/" request.body = create_build_config_vcs_root_config vcsRootId request.content_type = 'application/xml' request.basic_auth username, password response = http.request request end |
.trigger_build(buildConfigurationId, username, password) ⇒ Object
Build trigger API
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/teamcity_api.rb', line 23 def TeamCityApi.trigger_build buildConfigurationId, username, password puts "Triggering build configuration: #{buildConfigurationId} for #{username}..." configContent = create_build_trigger_config buildConfigurationId uri = URI.parse 'http://teamcity.relayhealth.com' http = Net::HTTP.new uri.host, uri.port request = Net::HTTP::Post.new '/httpAuth/app/rest/buildQueue' request.body = configContent request.content_type = 'application/xml' request.basic_auth username, password response = http.request request puts response end |