2016-09-06 4 views
7

특정 유스 케이스를 통과하면 (현재 실행중인) 대나무 빌드를 중지하려고합니다.Atlassian Bamboo는 현재 실행 중이거나 실행중인 빌드를 중지합니다.

내가 멈추어야하는 빌드 목록이 있습니다. 이제는 빌드의 오른쪽 상단에있는 "빌드 중지"버튼과 매우 유사한 빌드를 중지하라는 REST 요청을 보내려고합니다 (이미지 참조). enter image description here

REST API 문서에서 대기열에있는 경우에만 빌드를 중지합니다.

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

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

정지 빌드가 아직 시작되지 않은 그러나 경우에만 실행을 구축 - 그렇다면 빌드 큐에서 기다리고 있습니다. 빌드가 큐에 더 이상 존재하지 않으면 메서드는 아무런 효과가 없습니다.

나는 멈추는 방법이 필요합니다. RUNNING 빌드. 어떤 도움이라도 대단히 감사 할 것입니다.

답변

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