2016-09-06 38 views
7

Próbuję zatrzymać kompilacje bambusa (które są obecnie uruchomione), jeśli przejdą przez pewien przypadek użycia.Atlasu Bamboo zatrzymaj kompilację, która jest aktualnie uruchomiona/jest wykonywana

Mam listę kompilacji, które muszę zatrzymać. Teraz chcę wysłać żądanie REST, aby zatrzymać kompilację bardzo podobną do przycisku "Stop Build" znajdującego się w prawym górnym rogu kompilacji (patrz zdjęcie). enter image description here

W dokumentacji interfejsu API REST widziałem tylko to, co zatrzymuje tylko kompilację, jeśli jest w kolejce.

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

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

Zatrzymaj budować wykonanie, jednak tylko wtedy, gdy budowa nie została jeszcze rozpoczęta - więc jeśli czeka w kolejce budowania. Jeśli kompilacja nie istnieje już w kolejce, metoda nie działa.

Potrzebuję sposobu, aby zatrzymać RUNNING builds. Każda pomoc byłaby bardzo cenna.

Odpowiedz

1

Udało mi się ustalić nazwy bambusa, które musiałem zatrzymać za pośrednictwem własnego serwera automatyzacji. Wtedy udało mi się to osiągnąć poprzez bezpośrednie naciśnięcie kodu przycisku stopPlan. Oto metoda ruby, którą napisałem:

# 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