Wykonaj skrypt powłoki po kompilacji post w Jenkins


81

Próbuję wykonać skrypt powłoki, jeśli kompilacja przebiega pomyślnie lub kończy się niepowodzeniem po zakończeniu kompilacji w Jenkins. Nie widzę tej opcji po kompilacji, aby wykonać jakiś skrypt powłoki, z wyjątkiem uruchamiania celu.

Odpowiedzi:


67

Bardzo łatwo to zrobić za pomocą wtyczki Post build task .

Jenkins - opcja „Post build task”


48
Polecam ten PostBuildScript wtyczki zamiast tego po prostu uruchomienie skryptu. Jest to prostsze i bardziej niezawodne, jeśli nie musisz uwarunkować danych wyjściowych dziennika. Na przykład umożliwia uruchamianie dowolnych kroków kompilacji w akcjach po kompilacji.
Sampo

9
Zwróć również uwagę, że wtyczka Post Build Task umieszcza dane wyjściowe całej konsoli w pamięci, aby wykonać test warunkowy ... który może zająć dużo pamięci, jeśli setki zadań generują dużo danych wyjściowych ... Nasz mistrz Jenkinsa właśnie się zawiesił z powodu do tej wtyczki ...
grayaii

1
Wtyczka PostBuildScript została zawieszona.
Upen

@Upen Czy możesz podać link, który to potwierdza?
Vadim Kotov

10

Możesz także uruchamiać dowolne polecenia za pomocą Groovy Post Build - a to da ci dużą kontrolę nad ich uruchomieniem i tak dalej. Używamy tego do uruchamiania skryptu powłoki „palec winy” w przypadku nieudanych lub niestabilnych kompilacji.

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE")
  lastStableBuild = item.getLastStableBuild()
  lastStableDate = lastStableBuild.getTime()
  formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a")
  now = new Date()
  formattedNow = now.format("MM/dd/yyyy h:mm:ss a")
  command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"]
  manager.listener.logger.println "FOB Command: ${command}"
  manager.listener.logger.println command.execute().text
}

(Nasze polecenie przyjmuje ostatnią stabilną datę kompilacji i bieżący czas jako parametry, aby można było zbadać, kto mógł zepsuć kompilację, ale możesz uruchomić dowolne polecenia w podobny sposób)


6

Jeśli dobrze czytam twoje pytanie, chcesz uruchomić skrypt w części działań po kompilacji w kompilacji.

Sam używam wtyczki PostBuildScript do uruchamiania git clean -fxdpo zarchiwizowaniu artefaktów i opublikowaniu wyników testów przez kompilację. Moi niewolnicy Jenkins mają dyski SSD, więc nie mam pokoju, aby przechowywać wygenerowane pliki w obszarze roboczym.



1

Musiałbyś skonfigurować skrypt powłoki po kompilacji jako oddzielne zadanie Jenkinsa i uruchomić go jako krok po kompilacji. Wygląda na to, że będziesz musiał użyć sparametryzowanej wtyczki wyzwalacza, ponieważ standardowa opcja „Buduj inne projekty” działa tylko wtedy, gdy wyzwalanie kompilacji powiedzie się.


jak mogę wyzwolić skrypt, jeśli kompilacja nie powiedzie się wyłącznie na podstawie wykonywalnego skryptu powłoki, który mam w zadaniach? Dzięki
topgun

Myśląc o tym, łatwiej byłoby kontrolować sam skrypt kompilacji. Jakiego środowiska kompilacji używasz?
gareth_bowles
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.