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.sln
ist 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:
- 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.
- Generieren Sie den
src\GeneratedProtocol
Ordner mithilfe der folgenden Schritte neu. - 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).
- Generieren Sie den
src\Generated
Ordner mithilfe der folgenden Schritte aus der Spezifikationsdatei der Komfortebene neu. - Fügen Sie benutzerdefinierten Code für die
Generated
-Objekte zupartial
Klassen hinzu, diesrc
sich im Verzeichnis befinden.- Sie können dies tun, um ein
[Obsolete]
Attribut hinzuzufügen oder einige Hilfs factory-Methoden hinzuzufügen.
- Sie können dies tun, um ein
- 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
. .
- Die
- 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.
- Aktualisieren Sie die
CHANGELOG.md
Datei und dasVersion
Tag insrc/Microsoft.Azure.Batch.csproj
. Stellen Sie sicher, dass Sie bei einer breaking change die Hauptversion der Versionsnummer aktualisieren. - Führen Sie die Tests aus, und stellen Sie sicher, dass sie bestehen.
- Ö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\Spec
aus. 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.
- 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.
- 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:
- Für Eigenschaften:
Tools\ObjectModelCodeGeneration\CodeGenerationLibrary\PropertyData.cs
- Für Typen:
Tools\ObjectModelCodeGeneration\CodeGenerationLibrary\ObjectModelTypeData.cs
Nachdem Sie die erforderlichen Dateien in Tools\ObjectModelCodeGenerator\Spec
ObjectModelCodeGenerator
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:
MABOM_BatchAccountEndpoint
: Der Endpunkt für Ihr Batch-Konto, d. h.https://<account>.<region>.batch.azure.com
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.MABOM_BatchAccountResourceGroupName
: Die Ressourcengruppe, in der sich Ihr Batch-Konto befindet.MABOM_BatchAccountName
: Der Name Ihres Batch-Kontos.MABOM_BatchAccountKey
: Der Schlüssel Ihres Batch-Kontos.MABOM_StorageAccountResourceGroupName
: Der Name der Ressourcengruppe Ihres Speicherkontos.MABOM_StorageAccount
: Der Name Ihres Speicherkontos.MABOM_StorageKey
: Der Schlüssel zu Ihrem Speicherkonto.MABOM_BlobEndpoint
: Der Blobendpunkt für das Speicherkonto, d. h.https://<account>.blob.core.windows.net
MABOM_BatchManagementEndpoint
: Der Verwaltungsendpunkt für den Mandanten, auf den Sie abzielen. Dies isthttps://management.azure.com/
normalerweise .
Wenn Sie die Tests für einen Testmandanten ausführen, müssen Sie außerdem Folgendes festlegen:
MABOM_BatchTRPExtraHeaders
zu x-ms-version=2015-12-01;x-ms-client-tenant-id=microsoft.onmicrosoft.comMABOM_BatchTRPCertificateThumbprint
: Der Fingerabdruck, der zur Authentifizierung beim Batch-Ressourcenanbieter verwendet wird.
Azure SDK for .NET