2016-09-06 54 views
7

特定のユースケースに合格すると(現在実行中の)竹ビルドを停止しようとしています。Atlassian Bambooは、現在実行中/実行中のビルドを停止します。

私は停止する必要があるビルドのリストを持っています。ビルドの右上にある「ビルドを停止」ボタン(画像参照)と非常によく似たビルドを停止するためのRESTリクエストを送信します。 enter image description here

REST APIのドキュメントでは、ビルドがキューに登録されている場合にのみビルドを停止します。

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

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

停止ビルドがまだ開始されていないが場合にのみ、実行を構築する - ビルドキューで待機しているかのよう。ビルドがキューにもう存在しない場合、メソッドは何の効果もありません。

私は停止する方法が必要です実行中ビルド。どんな助けでも大歓迎です。

答えて

1

自分のオートメーションサーバー経由で停止する必要があった竹ビルドの名前を知ることができました。それからstopPlanボタンコードを直接押すことでこれを達成できました。ここに私が書いたルビーメソッドがあります:

# 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 
関連する問題