Überprüfen Sie, ob eine Datei in der Jenkins-Pipeline vorhanden ist

77

Ich versuche, einen Block auszuführen, wenn in meinem Jenkins-Arbeitsbereich ein Verzeichnis vorhanden ist und der Pipeline-Schritt "fileExists: Überprüfen, ob eine Datei vorhanden ist" im Arbeitsbereich nicht ordnungsgemäß zu funktionieren scheint.

Ich verwende Jenkins v 1.642 und Pipeline v 2.1. und versuchen, eine Bedingung wie zu haben

if ( fileExists 'test1' ) {
  //Some block
}

Welche anderen Alternativen habe ich in der Pipeline?

Balualways
quelle
Bitte beschreiben Sie das falsche Verhalten, das Sie beobachten:
izzekil

Antworten:

170

Sie müssen Klammern verwenden, wenn Sie den fileExistsSchritt in einer ifBedingung verwenden oder den zurückgegebenen Wert einer Variablen zuweisen

Variable verwenden:

def exists = fileExists 'file'

if (exists) {
    echo 'Yes'
} else {
    echo 'No'
}

Klammern verwenden:

if (fileExists('file')) {
    echo 'Yes'
} else {
    echo 'No'
}
Gergely Toth
quelle
1
def reportPath = build.getWorkspace (). child ("Report.txt") welches ist richtig? def existiert = fileExists reportPath ODER def existiert = fileExists 'reportPath'. In beiden Fällen wird die Meldung [Inhaltstoken konnte nicht gefunden werden (überprüfen Sie Ihre Verwendung): fileExists] angezeigt.
Sharon
1
Ich erhalte eine Fehlermeldung, wenn ich diese Syntax ( fileExistsin Klammern) versuche - "WorkflowScript: 90: Erwartet einen Schritt @ Zeile 90, Spalte 21", wobei ein Caret auf das zeigt if.
Marius Gedminas
1
Was ist mit dem Dateinamenvergleich? Verwendet diese Methode beim Vergleichen von Dateinamen einen Vergleich zwischen Groß- und Kleinschreibung? Wenn ja, wie ist es dann möglich, bei unempfindlicher Weise zu vergleichen?
Viktors Telle
3
Für deklarative Jenkins-Dateien können Sie fileExists (Datei: 'src / test / java') verwenden (z. B. für einen When-Ausdruck für Schritte in einer Phase)
gkephorus
3
@MariusGedminas Die if-Anweisung kann sich nicht innerhalb eines "Schritts" in einer Pipeline auf oberster Ebene befinden. Fügen Sie die if-Anweisung in ein Skript-Tag ein, um dies zu beheben. ZB Schritt {script {if (Bedingung) {doSomething ()}}}
John Phu Nguyen