GNU/Linux >> Znalost Linux >  >> Linux

neselže sestavení jenkins, pokud selže spuštění shellu

Chcete-li zastavit další provádění při příkazu selže:

command || exit 0

Chcete-li pokračovat ve spuštění při příkazu selže:

command || true


Jenkins provádí kroky sestavení shellu pomocí /bin/sh -xe ve výchozím stavu. -x znamená vytisknout každý provedený příkaz. -e znamená ukončení se selháním, pokud některý z příkazů ve skriptu selhal.

Takže si myslím, že to, co se stalo ve vašem případě, je váš příkaz git exit s 1 a kvůli výchozímu -e param, shell vyzvedne výstupní kód jiný než 0, ignoruje zbytek skriptu a označí krok jako neúspěšný. Můžeme to potvrdit, pokud zde zveřejníte svůj skript kroku sestavení.

Pokud je to váš případ, můžete zkusit zadat #!/bin/sh takže skript bude proveden bez volby; nebo proveďte set +e nebo cokoli podobného nad krokem sestavení, abyste toto chování přepsali.

Upraveno:Další věc, kterou je třeba poznamenat, je, že pokud poslední příkaz ve vašem shell skriptu vrací kód jiný než 0 , bude celý krok sestavení i při tomto nastavení stále označen jako neúspěšný. V tomto případě můžete jednoduše zadat true příkaz na konci, aby se tomu zabránilo.

Další související otázka


Pokud není co tlačit, git vrátí stav ukončení 1. Krok vytvoření shellu je označen jako neúspěšný. Můžete použít příkaz OR || (dvojité potrubí).

git commit -m 'some messasge' || echo 'Commit failed. There is probably nothing to commit.'

To znamená, že provede druhý argument, pokud první selže (vrácený návratový stav> 0). Druhý příkaz vždy vrátí 0. Když není co tlačit (ukončit stav 1 -> provést druhý příkaz), echo vrátí 0 a krok sestavování pokračuje.

Chcete-li označit sestavení jako nestabilní, můžete použít krok po sestavení Jenkins Text Finder. Může procházet výstupem konzole, odpovídat vzoru (vašemu echu) a označit sestavení jako nestabilní.


Linux
  1. Skuteční správci systému sudo nedělají

  2. Provést příkaz ve vzdáleném aktivním terminálu?

  3. Provést příkaz v definovaném rozsahu adresářů?

  1. Jak provést příkaz v prostředí Shell bez jeho uložení do historie? [Tipy pro Linux]

  2. Provést příkaz Nohup se vstupem?

  3. Spustit příkaz shell v jenkins jako uživatel root?

  1. Provést příkaz Shell po události kliknutí na webové stránce?

  2. Proveďte příkaz, kde je nalezen soubor?

  3. Proč popen() vyvolá shell k provedení procesu?