【问题标题】:How to stop a build that is currently running/being executed?如何停止当前正在运行/正在执行的构建?
【发布时间】:2016-09-06 23:25:11
【问题描述】:

如果 Bamboo 构建(当前正在运行)通过了某个用例,我会尝试停止它们。

我有一个需要停止的构建列表。现在,我想发送一个 REST 请求来停止构建,这与构建右上角的“停止构建”按钮非常相似(见图)。

在 REST API 文档中,我只看到了这个,它只会在排队时停止构建。

https://docs.atlassian.com/bamboo/REST/3.3-SNAPSHOT/

/queue/{projectKey}-{buildKey}-{buildNumber}

停止构建执行,但前提是构建尚未开始 - 所以如果在构建队列中等待。如果队列中不再存在构建,则方法无效。

我需要一种方法来停止 RUNNING 构建。

【问题讨论】:

  • 不幸的是,有一个bug in Bamboo Rest API。 “Actions --> Stop job”的行为与 Rest API 调用不同。 Bamboo 无法正确停止构建,它会继续运行直到所有子进程完成。

标签: rest build bamboo


【解决方案1】:

我能够通过我自己的自动化服务器找出我需要停止的 Bamboo 构建的名称。然后我可以通过直接点击 stopPlan 按钮代码来实现这一点。这是我写的Ruby方法:

# Get request to stop a build located at the given url
def stop_bamboo_build_request(build_key)
  logger.debug "Build Key: #{build_key}"
  uri = URI("#{Rails.configuration.bamboo_base_url}/build/admin/stopPlan.action?planKey=#{build_key}")

  # Create client
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER

  # Create Request
  req =  Net::HTTP::Get.new(uri)
  # Add Auth
  req.basic_auth(Rails.configuration.bamboo_username, Rails.configuration.bamboo_password)

  # Add headers
  req.add_field "X-Atlassian-Token", "no-check"

  # Fetch Request
  res = http.request(req)
  logger.debug "Response HTTP Status Code: #{res.code}"
  logger.debug "Response HTTP Response Body: #{res.body}"
rescue StandardError => e
  logger.debug "HTTP Request failed (#{e.message})"
end

【讨论】:

    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多