Bereitstellen von Azure-WebJob mit VSTS

Ich habe einige Probleme bereitstellen einer Azure-WebJob mit Visual Studio Team Services (VSTS).

Der WebJob zu sein scheint, erfolgreich bereitgestellt, aber es bricht die Azure-website, die gehostet wird in dem gleichen App-Service! Ich habe nicht diese problem, wenn ich eine Bereitstellung mit VS2013.

Dies ist mein build-task erzeugt, dass der WebJob-Bereitstellung-Paket:

Bereitstellen von Azure-WebJob mit VSTS

– Und das ist meine Aufgabe:

Bereitstellen von Azure-WebJob mit VSTS

Gibt es keine Fehler, wenn ich die Bereitstellung der Azure-WebJob. Wenn ich mich im Azure-Portal sehe ich die WebJob ist es, und es läuft erfolgreich. WebJob-Dateien kopiert man in das wwwroot\App_Data\jobs\triggered\RemoveExpiredDids Ordner wie erwartet, aber das problem ist, dass einige Dateien kopiert werden, in die wwwroot\App_Data\bin Ordner, die brechen die bestehende website wurde bereits bereitgestellt, in das App-Service!!!

Also beschloss ich heraus zu finden, warum dies geschah. Nach dem herunterladen und extrahieren der Bereitstellung-Paket, das ich sah, es sind 2 Ordner (app_data und bin) und der scheduler-Datei (settings.job):

Bereitstellen von Azure-WebJob mit VSTS

Dies erklärt, warum einige Baugruppen allem coppied in die wwwroot\App_Data\bin von der App-Service. Das merkwürdige ist, dass dies nicht der Fall, wenn die Bereitstellung von VS2013!!! Ich warf einen Blick in das MSBuild-Protokoll und fanden die folgende Zeile:

Objekt dirPath ([app-name]\bin) übersprungen aufgrund skip-Richtlinie „SkipBinFolderOnDeploy‘.

Abschluss, die bin Ordner enthalten ist, wenn die Bereitstellung der Azure-WebJob von VSTS, aber ist ausgeschlossen, wenn die Bereitstellung von VS2013.

Also meine Frage ist: , wie um zu verhindern, dass die bin Ordner bereitgestellt wird bei Verwendung von VSTS? Gibt es eine MSBuild-parameter/Flagge, dies zu tun?

  • Lösen Sie es mit meiner Lösung?
  • Ich hatte noch nicht die Gelegenheit, es zu versuchen, aber @starain-MSFT, bekam ich „stecken“ in bürokratischen Fragen
InformationsquelleAutor Rui Jarimba | 2017-08-15



3 Replies
  1. 2

    Finden Sie diese Möglichkeiten für die Bereitstellung webjob azure:

    1. Ändern Sie die Visual Studio Build-task zu implementieren webjob mit Dateisystem (MSBuild-Argumente: /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\WebJob" /p:DeployDefaultTarget=WebPublish)
    2. Fügen Sie Dateien Löschen, die Aufgabe zur Freigabe-definition zu löschen bin-Ordner (Quellordner: $(System.DefaultWorkingDirectory)/WebJobVnext/drop/WebJob); Inhalt:bin)
    3. Ändern Azure App Service Deploy Aufgabe (1. Deaktivieren Sie Veröffentlichen mithilfe von Web Deploy option. 2. Paket oder einen Ordner: $(System.DefaultWorkingDirectory)/[artifact name] /drop/WebJob)
    • Danke @starain-MSFT, ich werde es versuchen, wenn ich kann.
    • Fühlen Sie sich frei zu posten das Ergebnis hier, nachdem Sie versucht.
    • Ich hatte endlich die Gelegenheit, um zu versuchen, um dieses Problem zu lösen, danke @starain-MSFT. Ich hatte zu tun, einige kleinere änderungen, wie beschrieben in meiner Antwort.
  2. 3

    Habe ich Problem mit diesem speziellen problem auch.

    Die neueste Methode, die ich fand, ist mit Web Deploy-Vorgang Einstellungen , -skip:Verzeichnis= (in diesem Fall wäre es -skip:Verzeichnis=’\\bin‘), wenn Sie Ihre azure bereitstellen Aufgabe in der Freigabe-definition (Zusätzliche Argumente). Ich habe gesehen, dass dies in der Tat schließt den bin-Ordner aus dem update-Aktionen (Ergebnis).

    Lassen Sie mich wissen, wenn dies Ihnen hilft, in keiner Weise.

    • Danke @vlad-apetre, gut zu wissen, dass. Ich war in der Lage zu Sortieren Sie es aus, sowieso. BTW v3 der Aufgabe „Azure App Service Bereitstellen“ nicht die option geben Sie zusätzliche Parameter.
    • Komisch, ich bin sicher, dass es auf v3 ich habe die Veränderungen selbst. In jedem Fall bin ich froh, dass du es geschafft es zu klären. Alle die besten.
    • Sie erhalten nur die option in der v3 Aufgabe, wenn Sie die option „Veröffentlichen mithilfe von Web Deploy“. Sie erhalten dann ein extra-Feld namens „Zusätzliche Argumente“. Der Wert -skip:Directory='\\bin' funktioniert.
  3. 1

    War ich endlich in der Lage, es zu beheben, danke @starain-MSFT für den Hinweis mich in die richtige Richtung. Ich musste einige kleinere änderungen, aber. Dies ist die Aufgabe, die schafft das Bereitstellung-Paket:

    Bereitstellen von Azure-WebJob mit VSTS

    MSBuild-Argumente:

    /p:DeployOnBuild=true /p:WebPublishMethod=Dateisystem /p:DeployDefaultTarget=WebPublish /p:Configuration=$(BuildConfiguration) /p:OutputPath=.\bin\ /p:publishUrl=“$(build.artifactstagingdirectory)\temp\WebJob“

    Hier der Unterschied im Vergleich zu @starain-MSFT Antwort ist, dass ich hatte, um die /p:OutputPath= parameter, sonst würd ich die folgende Fehlermeldung erhalten:

    Der OutputPath-Eigenschaft ist nicht festgelegt, für das Projekt

    Nach dem generieren der package lösche ich die bin Ordner und zip-it – (dies reduziert die Bauzeit).

    Dies ist meine Aufgabe:

    Bereitstellen von Azure-WebJob mit VSTS

    Bitte beachten Sie, dass $(DeploymentPackagePath) ist der Pfad zu der zip-Datei, enthält die deployment-Paket, wie zuvor erwähnt. Es spielt keine Rolle, ob Sie das Paket bereitstellen als zip-Datei oder, wenn Sie entpacken Sie es und bereitstellen der Ordner, es funktioniert in beide Richtungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.