Freigeben über


Lizenzhinweise

Der Azure Batch C#-Client steht jetzt unter der MIT-Lizenz. Vor dem 10. März 2017 war es unter der Apache 2.0-Lizenz.

Azure Batch SDK-Entwicklerhandbuch

Microsoft.Azure.Batch.slnist Ihr One-Stop-Shop für alle Dinge im Zusammenhang mit der Azure Batch C#-Clientbibliothek. Diese Projektmappendatei enthält alle Projekte, die dem Azure Batch-Client zugeordnet sind (einschließlich Tests und Tools).

Ändern des Azure Batch-Clients

Je nach Art der Änderung, die Sie vornehmen möchten, variiert die erforderliche Arbeit. Wenn Sie diesen Prozess ausführen, sollten Sie nichts verpassen:

  1. Aktualisieren Sie die Azure Batch Swagger-Spezifikation, die sich im GitHub-Repository Azure/azure-rest-api-specs befindet (insbesondere hier).
    • Fügen Sie der Swagger-Spezifikation neue Entitätstypen hinzu.
    • Fügen Sie neue APIs als Pfad-Verb-Paare in der Swagger-Spezifikation hinzu.
    • Hinzufügen/Entfernen von Eigenschaften für vorhandene Entitätstypen in der Swagger-Spezifikation.
  2. Generieren Sie den src\GeneratedProtocol Ordner mithilfe der folgenden Schritte neu.
  3. Aktualisieren Sie die entsprechenden Spezifikationsdateien der Komfortebene in Tools\ObjectModelCodeGenerator\Spec.
    • Fügen Sie neue Entitäten hinzu, die den von Swagger definierten Entitäten entsprechen.
    • Hinzufügen/Entfernen von Eigenschaften für vorhandene Entitäten, wie in der Swagger-Spezifikation ausgeführt.
    • Stellen Sie sicher, dass die Dokumentation ordnungsgemäß aktualisiert wird, um Änderungen in der Swagger-Spezifikation widerzuspiegeln (es ist in der Regel hilfreich, sich eine diff des Swaggers für die betreffende API-Version anzusehen).
  4. Generieren Sie den src\Generated Ordner mithilfe der folgenden Schritte aus der Spezifikationsdatei der Komfortebene neu.
  5. Fügen Sie benutzerdefinierten Code für die Generated -Objekte zu partial Klassen hinzu, die src sich im Verzeichnis befinden.
    • Sie können dies tun, um ein [Obsolete] Attribut hinzuzufügen oder einige Hilfs factory-Methoden hinzuzufügen.
  6. Wenn APIs geändert wurden oder neue APIs hinzugefügt wurden, müssen Sie die folgenden Stellen aktualisieren:
    • Die src\IProtocolLayer.cs-Schnittstelle.
    • Die src\ProtocolLayer.cs-Klasse.
    • Die entsprechende Vorgangsklasse, z. B PoolOperations.cs. .
    • Die entsprechende Entität, für die der Vorgang ausgeführt wird, z. B CloudPool.cs. .
  7. Fügen Sie Den richtigen Testprojekten Tests für Ihre neuen Modelle und APIs hinzu.
    • Azure.Batch.Unit.Tests für Komponententests. Diese Tests verfügen über keine externen Abhängigkeiten (sie werden vollständig im Arbeitsspeicher ausgeführt) und werden im Continuous Integration-Auftrag verwendet, um Checkins zu überprüfen.
    • BatchClientIntegrationTests für Integrationstests. Diese Tests werden für einen Live-Azure Batch-Endpunkt ausgeführt und während der CI nicht ausgeführt. Weitere Informationen zum Ausführen dieser Tests finden Sie unter Ausführen der End-to-End-Tests .
    • Hinweis: Sie sollten nach Möglichkeit Komponententests gegenüber Integrationstests hinzufügen. Integrationstests sollten reserviert werden, um sicherzustellen, dass der Batch-Dienst die Swagger-Anforderungen akzeptiert. Das Testen des Dienstverhaltens sollte in einem Diensttest und nicht im Client erfolgen.
  8. Aktualisieren Sie die CHANGELOG.md Datei und das Version Tag in src/Microsoft.Azure.Batch.csproj. Stellen Sie sicher, dass Sie bei einer breaking change die Hauptversion der Versionsnummer aktualisieren.
  9. Führen Sie die Tests aus, und stellen Sie sicher, dass sie bestehen.
  10. Öffnen eines PR für https://github.com/Azure/azure-sdk-for-net

Generieren des Ordners src\GeneratedProtocol mithilfe von AutoRest

Der Ordner GeneratedProtocol enthält den Code, der vom AutoRest-Tool aus einer Swagger-Spezifikation generiert wurde. Das AutoRest-Tool verfügt über eine eigene Befehlszeilenschnittstelle, die Sie direkt verwenden oder ausführen können. powershell Start-AutoRestCodeGeneration -ResourceProvider "batch/data-plane" -SdkRepoRootPath "<path to root of this repo>" -AutoRestVersion "latest" -SdkGenerationDirectory "<path to root of this repo>\sdk\batch\Microsoft.Azure.Batch\src\GeneratedProtocol" -ConfigFileTag "package-2020-03.11.0"

Generieren des Ordners src\Generated

Dieser Ordner enthält die Komfortebenenmodelle für Azure Batch. Sie wird von einem benutzerdefinierten Tool generiert. Das benutzerdefinierte Tool liest alle Spezifikationsdateien in Tools\ObjectModelCodeGenerator\Specaus. Die Modelle der Komfortebene erfordern mehr Metadaten als die Swagger-Spezifikation bietet. Daher ist diese Datei eine zusätzliche Zuordnungsebene auf Swagger, die mehr Details bietet. Hinweis: Diese Spezifikationsdateien beziehen sich auf die Modelle, sie haben nichts mit den tatsächlichen APIs zu tun.

  1. Auch hier müssen neue Entitäten hinzugefügt werden, die in der Swagger-Spezifikation definiert sind. Ein Beispiel finden Sie unter einer vorhandenen Entität.
  2. Wenn sich der Typ oder Name einer Eigenschaft in der zugrunde liegenden Swagger-Spezifikation geändert hat, sollte sie auch hier aktualisiert werden.

Es gibt eine Reihe von speziellen Flags, die in den Spezifikationsdateien Bedeutung haben. Die einfachste Möglichkeit, eine Liste der unterstützten Flags und auf welcher Ebene anzuzeigen, besteht darin, den codegestützten Codegenerierungscode zu betrachten:

  1. Für Eigenschaften: Tools\ObjectModelCodeGeneration\CodeGenerationLibrary\PropertyData.cs
  2. Für Typen: Tools\ObjectModelCodeGeneration\CodeGenerationLibrary\ObjectModelTypeData.cs

Nachdem Sie die erforderlichen Dateien in Tools\ObjectModelCodeGenerator\SpecObjectModelCodeGenerator als Ihr Startprojekt in Visual Studio hinzugefügt und aktualisiert haben, wird der Inhalt des src\Generated Ordners neu generiert.

Ausführen der End-to-End-Tests

Ein vollständiger End-to-End-Testdurchlauf dauert 20 bis 40 Minuten. Die folgenden Umgebungsvariablen müssen festgelegt werden, damit die End-to-End-Tests funktionieren. Es wird empfohlen, ein Skript einzurichten, das diese alle festlegt, damit es später problemlos wiederverwendet werden kann:

  1. MABOM_BatchAccountEndpoint: Der Endpunkt für Ihr Batch-Konto, d. h. https://<account>.<region>.batch.azure.com
  2. MABOM_BatchAccountSubscriptionId: Die Abonnement-ID, in der sich Ihre Batch- und Storage-Konten befinden. Bitte beachten Sie, dass sich Ihr Speicherkonto und Ihr Batch-Konto im selben Abonnement befinden müssen.
  3. MABOM_BatchAccountResourceGroupName: Die Ressourcengruppe, in der sich Ihr Batch-Konto befindet.
  4. MABOM_BatchAccountName: Der Name Ihres Batch-Kontos.
  5. ​MABOM_BatchAccountKey: Der Schlüssel Ihres Batch-Kontos.
  6. MABOM_StorageAccountResourceGroupName: Der Name der Ressourcengruppe Ihres Speicherkontos.
  7. MABOM_StorageAccount: Der Name Ihres Speicherkontos.
  8. MABOM_StorageKey: Der Schlüssel zu Ihrem Speicherkonto.
  9. MABOM_BlobEndpoint: Der Blobendpunkt für das Speicherkonto, d. h. https://<account>.blob.core.windows.net
  10. MABOM_BatchManagementEndpoint: Der Verwaltungsendpunkt für den Mandanten, auf den Sie abzielen. Dies ist https://management.azure.com/normalerweise .

Wenn Sie die Tests für einen Testmandanten ausführen, müssen Sie außerdem Folgendes festlegen:

  1. MABOM_BatchTRPExtraHeaders zu x-ms-version=2015-12-01;x-ms-client-tenant-id=microsoft.onmicrosoft.com
  2. MABOM_BatchTRPCertificateThumbprint: Der Fingerabdruck, der zur Authentifizierung beim Batch-Ressourcenanbieter verwendet wird.

Aufrufe