module TeamCityApi

Public Class Methods

create_build_config_vcs_root_config(vcsRootId) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source

Build Config Get/Create API

# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source

Project Get/Create API

# 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() click to toggle source
# 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) click to toggle source

VCS-Root Get/Create API

# 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) click to toggle source

Setup build configuration step

# 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) click to toggle source

Setup build feature step

# 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) click to toggle source

Setup build configuration parameters

# 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) click to toggle source

Setup build configuration settings

# 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) click to toggle source

Setup build trigger step

# 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) click to toggle source

Setup build configuration Vcs-Root

# 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) click to toggle source

Build trigger API

# 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