Laden...

[Erledigt | gelöst] TFS 2017 - Build lässt sich nicht mehr als 1 mal kopieren

Erstellt von Killerkrümel vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.042 Views
K
Killerkrümel Themenstarter:in
166 Beiträge seit 2008
vor 5 Jahren
[Erledigt | gelöst] TFS 2017 - Build lässt sich nicht mehr als 1 mal kopieren

Hallo Community,

ich habe einen TFS 2017, auf welchem ich gerne folgendes erreichen möchte:

Schritt 1: Download der Artefakte des letzten Build und Kopieren auf FileShare
Schritt 2: Download und kopieren der ReleaseDateien auf NetzwerkRechner

Schritt 1 klappt.
Schritt 2 nicht.

Die Konfiguration:
1 Artefakt meines Builds.
1 Umgebung für den Schritt "Publish Build Artifacts"
1 Umgebung für den Schritt "Copy Files"

Die Fehlermeldung:
2018-09-06T13:02:10.3040280Z Artifact Type: FileShare
2018-09-06T13:02:10.3097124Z ##> Fehlermeldung:

Downloading artifacts failed: System.UriFormatException: Invalid URI: The format of the URI could not be determined.

Ich bekomme es nicht hin, ein Artefakt 2 mal zu kopieren.
Hat jemand von euch soetwas schonmal gehabt?

16.835 Beiträge seit 2008
vor 5 Jahren

Naja.. der Fehler sagt aus, dass die URI invalide ist.
Hat ja mit dem Kopieren selbst nichts zutun.

Wird also einfach ne ungültige URI in Deinem Schritt 2 sein.

Prinzipiell ist mir aber nicht 100% klar, was Du machen willst.
Publish Build Artifacts sollte prinzipiell immer der letzte Task sein.

Willst Du die Artifacts anschließend irgendwo zur Verfügung stellen, dann sollte das über ein Release erfolgen und nicht über den Build.

K
Killerkrümel Themenstarter:in
166 Beiträge seit 2008
vor 5 Jahren

Hallo Abt,

das merkwürdige ist eigentlich,
das das 2 mal exact die gleiche Phase ist. Nur 2 Verschiedene Ordner auf den Fileshares.

Drehe ich die Reihenfolge um, schlägt das Publish Artifacts fehl.

Edit sagt:

Ich möchte ein Successfull Build(Compile, UnitTest etc), genauer die Releasedateien, auf 4 unterschiedliche Rechner kopieren, dabei aber 4 Umgebungen deffinieren.

16.835 Beiträge seit 2008
vor 5 Jahren

Zeig ma Inhalte

Ich möchte ein Successfull Build(Compile, UnitTest etc), genauer die Releasedateien, auf 4 unterschiedliche Rechner kopieren, dabei aber 4 Umgebungen deffinieren.

Dazu würde man ein Release mit entsprechend vier Environments (jeweils ein Task) definieren.

Wenn Du nur ein Release definierst, in dem alle Environments mit vier Tasks stecken, dann hast Du das Problem, dass das nicht sauber erweiterbar ist bzw. ein Fehlschlag eines Environments alle vier in Mitleidenschaft zieht.

K
Killerkrümel Themenstarter:in
166 Beiträge seit 2008
vor 5 Jahren

Anbei ein Bild:

K
Killerkrümel Themenstarter:in
166 Beiträge seit 2008
vor 5 Jahren
K
Killerkrümel Themenstarter:in
166 Beiträge seit 2008
vor 5 Jahren

Ergänzend sei gesagt, das ich - sofern ich 2 mal hintereinander das Release triggere - auch nur auf 1 Umgebung diesen Fehler erhalte.

Fehlermeldung:
2018-09-12T06:17:58.6837939Z Download complete.
2018-09-12T06:17:58.6838207Z 355 placed file(s): 353 downloaded, 2 empty
2018-09-12T06:17:58.6838550Z 82 MB downloaded at 8295 KB/sec. Download time: 00:00:10.0129106.
2018-09-12T06:17:58.6838707Z Preparing to download artifact: SequenceGenerator
2018-09-12T06:17:58.6838817Z Artifact Type: FileShare
2018-09-12T06:17:58.6858805Z An error occurred during download: System.UriFormatException: Invalid URI: The format of the URI could not be determined.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString)
at Microsoft.VisualStudio.Services.Agent.Worker.Release.Artifacts.BuildArtifact.<DownloadArtifactAsync>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.Agent.Worker.Release.Artifacts.BuildArtifact.<DownloadAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.<>c__DisplayClass39_2.<<DownloadArtifacts>b__2>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.Agent.Worker.Release.RetryExecutor.<ExecuteAsync>d__20.MoveNext()

K
Killerkrümel Themenstarter:in
166 Beiträge seit 2008
vor 5 Jahren

Habe die (Für mich ausreichende Lösung) nun gefunden.

Für jede Umgebung habe ich ein eigenes Artifact erstellt.
Nun funktioniert das MultiRelease.

Danke Abt für deine zeit und Mühe.

16.835 Beiträge seit 2008
vor 5 Jahren

was bedeutet, dass Du alles neu bauen musst, wenn Du eine andere Umgebung hast.
Das ist nicht Sinn der Sache.

K
Killerkrümel Themenstarter:in
166 Beiträge seit 2008
vor 5 Jahren

Stimmt. Aber anders habe ich es nicht gelöst bekommen.
Vielleicht nutze ich auch die falschen Module?

16.835 Beiträge seit 2008
vor 5 Jahren

Ich erklär es Dir gerne nochmal:

Artifacts sollten stets Teil des Buildresultates sein.
Warum Du an dieser Stelle hier bereits ein Upload auf ein File Share Packen willst: no idea.

Korrekt würde es folgendermaßen aussehen:

  • Der Build erzeugt das Artifact, das ist dann Teil des Build Resultats
  • Das Release hört auf neue Build Artifacts (CI Trigger) und kopiert dann das Artifact an alle möglichen Stellen Deiner Wahl
  • Jedes Zielenvironment des Artifacts sollte jedoch ein eigenes Release sein
  • Als Task kannst Du hier einfach Copy verwenden; ist ja anscheinend nichts anderes als ein Copy (und kein FTP Upload)

Der Task Publish Build Artifact sollte nicht für nen Datei-Copy missbraucht werden.
Dazu ist er nicht da.