2013-05-28 10 views
7

Czy możliwe jest, aby zadanie Jenkins zostało uruchomione przez artefakty kopiowania wtyczek z wielu zleceń?Kopiowanie artefaktów z wielu zleceń upstream na dołączenie do Jenkinsa

Próbuję skonfigurować konfigurację Jenkinsa za pomocą "diamentu" zadań: my-trigger uruchamia i spawnuje dwa zadania, my-fork1 i my-fork2, które mogą działać jednocześnie i przyjmować różne ilości czasu , a wtyczka Join ustawia zadanie my-join po zakończeniu obu rozwidleń.

Każda z opcji my-trigger, my-fork1 i my-fork2 tworzy artefakty odcisków palców (np. Pliki tekstowe).

Chcę skopiować artefakty z każdego z wcześniejszych zadań w my-join za pomocą narzędzia "Kopiuj artefakty z innego projektu", z parametrem "Która kompilacja" ustawionym na "Kompilacja podrzędna, która wyzwoliła to zadanie". Jednak widzę wyjścia jak to w konsoli my-przyłączyć:

budynku zdalnie na kompilacji maszynowym w obszarze roboczym/ścieżka/do/roboczy/my-przyłączyć

Skopiowano 1 artefakt z „my- wyzwalacz”build numer 63

Skopiowano 1 artefakt od "my-fork1" build numer 63

Nie można znaleźć kompilacji dla artefaktu odpis z: my-fork2

, a zadanie nie powiedzie się. W tym przypadku moja-fork2 zakończyła się jako pierwsza, więc moja-fork1 uruchomiła krok łączenia. Sądzę, że oznacza to, że my-join ma tylko zapis my-fork1 i my-trigger, ponieważ są one wcześniejsze. Jeśli moja-fork1 zakończy się pierwsza, to moja-fork2 rozpocznie połączenie, a zadanie nie powiedzie się, gdy próbujesz skopiować z mojego-fork1.

Jeśli zmienię konfigurację, aby skopiować artefakt z kompilacji "Najnowsza pomyślna kompilacja", to kompilacja się powiedzie, ale mój-wyzwalacz może być uruchamiany wiele razy z rzędu, więc nie byłoby żadnej gwarancji, że moje-dołączenie łączy powiązane artefakty .

Jak uzyskać krok łączenia, aby skopiować artefakty z wielu wideł w górę strumienia?

Uwaga: drugi punkt this question zdaje się pytać o to samo, ale jedyna odpowiedź tam nie odpowiada i została przyjęta.

Dzięki tensorproduct

Odpowiedz

9

Jeśli urządzenie buduje są parametryzowane z unikalnym dla każdego parametru Run of the join-diament, można użyć tego parametru we wtyczce CopyArtifact celu określenia, które budować skopiować z. Użytkownik powinien określić "Ostatni pomyślny build" i zakwalifikować go za pomocą parametru i wartości.

Mamy podobną sytuację, w której pracuję; wielokrotne równoczesne przebiegi łączenia-rombu. Parametr w kompilacji umożliwia dalszym zleceniom pobieranie poprawnych artefaktów z zadań nadrzędnych.

+0

Tak, dzięki za to. W końcu użyłem BUILD_TAG z budowania wyzwalania, aby ustawić parametr UNIQUE_ID wszystkich dalszych kompilacji i wykorzystałem to jako znacznik identyfikujący krok łączenia. – laffoyb

+0

Czy możesz podać dokładny ciąg znaków do użycia, aby to osiągnąć? Mam problemy ... – dstj

+0

Obawiam się, że nie pracuję w miejscu, w którym umieszczam tę poprawkę w miejscu, więc nie mam dokładnego ciągu do ręki. Zgodnie z moją najlepszą pamięcią, użyłem Parameterized Trigger Plugin, aby uruchomić dalsze kompilacje. Ustawiam parametr ręcznie za pomocą 'UNIQUE_ID = $ {BUILD_TAG}'. – laffoyb

0

krok po kroku ustawienia dostarczonego roztworu z Jasonem Swager:

Zależności projektu: diamentowe> fork-> diamond_ready

Project "widelec": parametr String "unique_id" (tylko nie manekina stosowane wewnątrz) (Tworzy artifcat i archiwizować artefakty)

Project "diamond_ready" parametr String: unique_id Kopiowanie artefakty z innego projektu Nazwa projektu: widelec filtry parametr: unique_id = $ {unique_id}

Project "diament": wyzwalania parametryzowane build na inny projekt Projekty budować: widelec Predefinded parametry: unique_id = $ {BUILD_TAG} Dołącz do wyzwalania : post-Dołącz Akcje: wyzwalania parametryczne opierają się na innych projektach projekty produkcji: diamond_ready predefiniowane parametry Generator: unique_id = $ {BUILD_TAG}

Powiązane problemy