Ich habe eine Gradle-Build-Datei, in der sich eine der Aufgaben in docker einloggt. In dieser Aufgabe möchte ich, dass der Benutzer / CI die Parameter docker_username, docker_password und docker_email bereitstellt.
%Vor% Die Ausführung von gradle loginDockerHub -Pdocker_username=vad1mo ...
funktioniert wie erwartet.
Aber wenn ich zum Beispiel gradle build
führe, bekomme ich den Fehler:
Die Eigenschaft 'docker_username' für Task ': loginDockerHub' konnte nicht gefunden werden.
Ich würde diesen Fehler bei der Ausführung von gradle loginDockerHub
erwarten, ohne den Parameter -P anzugeben, aber nicht bei anderen Tasks, die nicht auf die Parameter docker_username / password zugreifen.
Wie kann ich optionale Parameter für meine loginDockerHub
Aufgabe in Gradle haben, die den Parameter für keine andere Aufgabe zwingend machen.
Sie können prüfen, ob die Eigenschaft existiert und wenn keine Standard zurückgegeben wird.
%Vor%Update: Ab Gradle 2.13 können Sie das etwas vereinfachen.
%Vor%Ich konnte keine Lösung für das Problem finden. Diese Beschreibung enthielt einen Hinweis darauf, Aktionen innerhalb einer Aufgabe zu deklarieren. Das Shell-Exec in die Action-Task zu bringen, hat das Verhalten, das ich erwartet habe, weil Aktionen ausgewertet werden, wenn die Task ausgeführt wird.
%Vor% Wenn loginDockerHub
ausgeführt wird, ohne die Parameter docker_*
anzugeben, wird ein Fehler ausgegeben. Die Ausführung einer anderen Aufgabe funktioniert wie erwartet.
Ich musste dies tun und wollte nicht, dass mein Build mit einem Fehler fehlschlug. Ich habe es dadurch gelöst:
%Vor%Sie könnten die erste Zeile erweitern, um nach docker_password, docker_email usw. zu suchen.
Tags und Links gradle build.gradle