Jenkins Paramerized Trigger + Copy Artefact

9

Pracuję nad skonfigurowaniem Jenkins do obsługi naszych kompilacji wersji. Wersja kompilacji składa się z instalatora systemu Windows, który zawiera niektóre pliki binarne, które muszą zostać zbudowane w systemie Linux.

Oto co mam do tej pory:

  • Część Windows i Linux są skonfigurowane jako osobne projekty Jenkins.
  • Projekt systemu Windows jest sparametryzowany, przy użyciu znacznika Subversion do kompilacji i wydania.
  • W ramach swojej kompilacji projekt Windows uruchamia kompilację tego samego znacznika Subversion dla projektu Linux (przy użyciu wtyczki Parameterized Trigger ), a następnie kopiuje artefakty z projektu Linux (przy użyciu wtyczki Copy Artefact ) do obszaru roboczego projektu Windows, aby mogą być zawarte w instalatorze Windows.

Gdzie utknąłem: w tej chwili skonfigurowano opcję Kopiuj artefakt, aby skopiować ostatnią udaną kompilację. Bardziej niezawodne wydaje się konfigurowanie Artefaktu Kopiowania, aby kopiował z dokładnej kompilacji, którą uruchomił Sparametryzowany Wyzwalacz, ale mam problem z ustaleniem, jak to zrobić. Istnieje opcja parametru „Selektor kompilacji”, który moim zdaniem ma na to pomóc, ale nie mogę zrozumieć, w jaki sposób należy go skonfigurować (a ślepe eksperymentowanie z różnymi możliwościami jest nieco bolesne, gdy kompilacja zajmuje godzinę lub dwa, aby znaleźć sukces lub porażkę).

Jak mam to skonfigurować? Jak działa selektor kompilacji?

Josh Kelley
źródło

Odpowiedzi:

11

Po zakończeniu wyzwalanej kompilacji będziesz mieć nową zmienną env ustawioną na numer kompilacji tej wyzwalanej kompilacji o nazwie TRIGGERED_BUILD_NUMBER_ <nazwa zadania>. Możesz użyć tego do specyficznego skopiowania artefaktów:

  1. Kompilacja systemu Windows (zwana „ WindowsBuild ”), wywołuje kompilację systemu Linux (zwaną „ LinuxBuild ”) za pomocą wtyczki Parameterized Trigger.

    Masz tę część, po prostu zaznacz opcję Blokuj, aż uruchomione projekty zakończą swoje kompilacje i oczywiście nie powiodą się, jeśli kompilacja Linux nie powiedzie się.

  2. Następnie w Kopiuj artefakty z innego etapu projektu :

    Nazwa projektu: LinuxBuild

    Która kompilacja: konkretna kompilacja

    Numer kompilacji: $ TRIGGERED_BUILD_NUMBER_LinuxBuild (wszystkie nazwy projektów mają znaki inne niż a-zA-Z lub 0-9 zastąpione przez _; wiele znaków jest skondensowanych w jednym _).

Byron Brummer
źródło
czy zmienną środowiskową „$ TRIGGERED_BUILD_NUMBER_ <downstreamjob>” należy ustawić ręcznie? Nie mogę go znaleźć w żadnej z powyższych zmiennych środowiskowych.
harish
1
Stwierdzono z wiki wtyczki, że $ TRIGGERED_BUILD_NUMBER_ <downstreamjob> jest ustawiany automatycznie, jeśli zaznaczono opcję „Blokuj, dopóki uruchamiane projekty nie zakończą swoich kompilacji”.
harish