View a markdown version of this page

Veröffentlichen Sie Pakete auf einem Amazon S3-Conda-Kanal - Deadline Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Veröffentlichen Sie Pakete auf einem Amazon S3-Conda-Kanal

Sie können Conda-Pakete in einem Amazon Simple Storage Service (Amazon S3) -Bucket veröffentlichen, sodass Mitarbeiter von AWS Deadline Cloud (Deadline Cloud) sie für die Ausführung von Jobs installieren können. Der rattler-build publish Befehl funktioniert mit Amazon S3 genauso wie mit einem lokalen Dateisystemkanal. Der Befehl kann ein Rezept erstellen und das Ergebnis veröffentlichen oder eine Paketdatei veröffentlichen, die Sie bereits erstellt haben. In beiden Fällen lädt der Befehl das Paket in den Bucket hoch und indexiert den Channel in einem Schritt.

Der rattler-build publish Befehl authentifiziert sich AWS mithilfe der Standard-Anmeldeinformationskette, sodass Ihre AWS Konfiguration wie jedes andere Tool verwendet wird. AWS Weitere Informationen zur Konfiguration von Anmeldeinformationen finden Sie unter Konfiguration und Einstellungen der Anmeldeinformationsdatei im AWS Command Line Interface (AWS CLI) -Benutzerhandbuch.

Voraussetzungen

Bevor Sie Pakete auf Amazon S3 veröffentlichen, müssen Sie die folgenden Voraussetzungen erfüllen:

  • pixi und rattler-build — Installieren Sie Pixi aus pixi.sh auf der Pixi-Website und installieren Sie es dann. rattler-build

    pixi global install rattler-build
  • git — Erforderlich, um das Beispiel-Repository zu klonen. NeinWindows, git for Windows auf der Git for Windows-Website bietet auch eine bash Shell, die für einige der Windows Beispielrezepte erforderlich ist.

  • Amazon S3-Bucket — Ein Amazon S3-Bucket zur Verwendung als Conda-Kanal. Sie können den Bucket mit Job-Anhängen aus Ihrer Deadline Cloud-Farm verwenden oder einen separaten Bucket erstellen.

  • AWS Anmeldeinformationen — Konfigurieren Sie die Anmeldeinformationen auf Ihrer Workstation mithilfe des aws configure Befehls oder des aws login Befehls. Weitere Informationen finden Sie unter Einrichten von AWS CLI im AWS Command Line Interface -Benutzerhandbuch.

  • IAM-Berechtigungen — (Optional) Um den Umfang der Berechtigungen zu reduzieren, über die Ihre Anmeldeinformationen verfügen, können Sie eine AWS Identity and Access Management (IAM-) Richtlinie verwenden, die nur die folgenden Berechtigungen für den Amazon S3-Bucket und das von Ihnen verwendete Kanalpräfix gewährt (z. B./Conda/*):

    • s3:GetObject

    • s3:PutObject

    • s3:DeleteObject

    • s3:ListBucket

    • s3:GetBucketLocation

Ein Paket auf einem Amazon S3-Channel veröffentlichen

Verwenden Sie es rattler-build publish mit einem s3:// Ziel, um ein Paket in Ihrem Amazon S3-Conda-Kanal zu veröffentlichen. Wenn der Kanal im Bucket nicht vorhanden ist, rattler-build initialisiert er automatisch. Bevor Sie beginnen, stellen Sie sicher, dass Sie die Voraussetzungen erfüllt haben. Voraussetzungen

Im folgenden Beispiel wird das Blender 4.5-Beispielrezept aus dem https://github.com/aws-deadline/deadline-cloud-samples Deadline-Cloud-Samples-Repository auf der Website veröffentlicht. GitHub Sie können ein anderes Rezept aus dem Beispiel-Repository ersetzen oder Ihr eigenes Rezept verwenden.

Anmerkung

Große Anwendungen können mehrere zehn GB freien Festplattenspeicher für das Quellarchiv, die entpackten Dateien und die Build-Ausgabe benötigen. Stellen Sie sicher, dass Sie eine Festplatte mit ausreichend verfügbarem Speicherplatz für die Paket-Build-Ausgabe verwenden.

Um ein Paket auf einem Amazon S3-Kanal zu veröffentlichen
  1. Klonen Sie das Deadline Cloud-Beispiel-Repository.

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git
  2. Wechseln Sie in das conda_recipes-Verzeichnis.

    cd deadline-cloud-samples/conda_recipes
  3. Führen Sie den folgenden Befehl aus. amzn-s3-demo-bucketErsetzen Sie es durch Ihren Bucket-Namen.

    rattler-build publish blender-4.5/recipe/recipe.yaml --to s3://amzn-s3-demo-bucket/Conda/Default --build-number=+1

    Das /Conda/Default Präfix organisiert den Channel innerhalb des Buckets. Sie können ein anderes Präfix verwenden, aber das Präfix muss für alle Befehle und Warteschlangenkonfigurationen, die auf den Kanal verweisen, konsistent sein.

Über Build-Nummern

Die --build-number=+1 Option wählt automatisch die nächste Build-Nummer auf der Grundlage dessen aus, was bereits im Zielkanal vorhanden ist. Es hat sich bewährt, niemals ein Paket in einem Channel zu überschreiben. Bauen Sie immer mit einer neuen Build-Nummer, wenn das Paket sonst denselben Dateinamen hätte. Mit --build-number=+1 Using wird dies erreicht, wenn Sie für einen Produktionskanal oder einen Staging-Channel bauen, der die Produktion widerspiegelt.

Wenn Sie die Build-Nummer direkt steuern möchten, können Sie sie mit einem bestimmten Wert festlegen, z. B. --build-number=7 Wenn Sie die Option weglassen, rattler-build wird die in der recipe.yaml Datei definierte Buildnummer verwendet.

Wenn Ihr Paketrezept von Paketen eines bestimmten Kanals abhängt, wie z. B. conda-forge auf der conda-forge-Website, fügen Sie dem Befehl etwas hinzu. -c conda-forge

Sie können auch eine Paketdatei veröffentlichen, die Sie bereits erstellt haben, z. B. eine .conda Datei aus einem lokalen Build. amzn-s3-demo-bucketErsetzen Sie es durch Ihren Bucket-Namen.

rattler-build publish output/linux-64/blender-4.5.0-hb0f4dca_0.conda \ --to s3://amzn-s3-demo-bucket/Conda/Default

Initialisierung oder Neuindizierung eines Kanals

Wenn Sie rattler-build publish zum Veröffentlichen eines Pakets verwenden, initialisiert der Befehl den Channel automatisch, falls der Channel noch nicht existiert. In den meisten Fällen müssen Sie den Kanal nicht manuell initialisieren oder neu indizieren.

In den folgenden Situationen musst du einen Channel möglicherweise manuell initialisieren oder neu indizieren:

  • Du möchtest einen leeren Channel erstellen, bevor du Pakete veröffentlichst, um beispielsweise zu überprüfen, ob deine Deadline Cloud-Warteschlangenumgebung eine Verbindung zu dem Channel herstellen kann.

  • Sie haben .conda Dateien direkt mit Amazon S3-Tools hochgeladen oder gelöschtrattler-build publish, anstatt sie zu verwenden, und der Kanalindex ist veraltet.

Initialisierung eines leeren Kanals

Um einen leeren Channel zu initialisieren, erstellen Sie eine repodata.json Datei und laden Sie sie in das noarch Unterverzeichnis des Kanalpräfixes hoch. Ersetze es amzn-s3-demo-bucket durch deinen Bucket-Namen.

echo '{"info":{"subdir":"noarch"},"packages":{},"packages.conda":{},"removed":[],"repodata_version":1}' > empty_channel_repodata.json aws s3api put-object --body empty_channel_repodata.json --key Conda/Default/noarch/repodata.json --bucket amzn-s3-demo-bucket

Das /Conda/Default Präfix muss mit dem Kanalpräfix übereinstimmen, das Ihre Warteschlangenumgebung verwendet. Nachdem Sie den Kanal initialisiert haben, können Sie Pakete auf dem Channel veröffentlichen, indem Sie Folgendes verwendenrattler-build publish.

Einen Kanal neu indizieren

Wenn der Kanalindex veraltet ist, verwenden Sie ihn, rattler-index um den Index aus den Paketdateien im Channel neu aufzubauen. Installieren Sie zuerstrattler-index.

pixi global install rattler-index

Indizieren Sie dann den Kanal erneut. Ersetze es amzn-s3-demo-bucket durch deinen Bucket-Namen.

rattler-index s3 s3://amzn-s3-demo-bucket/Conda/Default

Das Paket testen

Nachdem Sie das Paket veröffentlicht haben, erstellen Sie ein temporäres Pixi-Projekt, um zu überprüfen, ob das Paket ordnungsgemäß funktioniert. Das Projekt installiert das Paket über den Amazon S3-Kanal.

Um das Paket zu testen
  1. Erstellen Sie ein temporäres Testverzeichnis und initialisieren Sie ein Pixi-Projekt mit dem Amazon S3-Kanal. Ersetzen Sie es amzn-s3-demo-bucket durch Ihren Bucket-Namen.

    mkdir package-test-env cd package-test-env pixi init --channel s3://amzn-s3-demo-bucket/Conda/Default
  2. Fügen Sie das Paket dem Projekt hinzu.

    pixi add blender=4.5
  3. Stellen Sie sicher, dass das Paket ordnungsgemäß funktioniert.

    pixi run blender --version

    Der pixi run Befehl aktiviert die Conda-Umgebung für das Projektverzeichnis und führt den darin angegebenen Befehl aus. Die Umgebung bleibt im Projektverzeichnis erhalten, sodass Sie denselben pixi run Befehl von anderen Terminals aus verwenden können. Weitere Informationen finden Sie unter dem pixi run Befehl auf der Pixi-Website.

Pakete aus dem Channel entfernen

Vermeiden Sie es, Pakete aus Kanälen zu entfernen, die Sie für die Produktion verwenden, da Lockfiles durch Hash auf bestimmte Pakete verweisen. Durch das Entfernen eines Pakets wird verhindert, dass Umgebungen anhand dieser Sperrdateien neu erstellt werden. Für Entwicklungs- und Testkanäle können Sie ein bestimmtes Paket entfernen, indem Sie die .conda Datei aus dem Bucket löschen und den Channel dann erneut indizieren.

Löschen Sie die Paketdatei und indizieren Sie den Kanal dann erneut. Ersetze es amzn-s3-demo-bucket durch deinen Bucket-Namen.

aws s3 rm s3://amzn-s3-demo-bucket/Conda/Default/linux-64/blender-4.5.0-hb0f4dca_1.conda

Nachdem du die Datei gelöscht hast, indiziere den Kanal erneut, um die Kanal-Metadaten zu aktualisieren. Eine Anleitung findest du unter Neuindizierung eines Kanals.

Paketdateien werden in plattformspezifischen Unterverzeichnissen wie, oder gespeichert. linux-64 win-64 osx-arm64 Führen Sie den folgenden Befehl aus, um die Pakete in einem Unterverzeichnis aufzulisten.

aws s3 ls s3://amzn-s3-demo-bucket/Conda/Default/linux-64/

Bereinigen

Entfernen Sie nach dem Testen das Testprojektverzeichnis.

Um die Testressourcen zu bereinigen
  • Entfernen Sie das Testprojektverzeichnis.

    Führen Sie auf Linux und macOS den folgenden Befehl aus.

    rm -rf package-test-env

    Führen Sie unter Windows (cmd) den folgenden Befehl aus.

    rmdir /s /q package-test-env

Debuggen von Builds

Wenn ein Build fehlschlägt, wird rattler-build das Build-Verzeichnis beibehalten, sodass Sie es untersuchen können. Führen Sie den folgenden Befehl aus, um eine interaktive Shell in der Build-Umgebung zu öffnen, in der alle Umgebungsvariablen so eingerichtet sind, wie sie während des Builds waren.

rattler-build debug shell

Von der Debug-Shell aus können Sie Dateien ändern, einzelne Build-Befehle ausführen und Abhängigkeiten hinzufügen, um das Problem zu isolieren. Weitere Informationen finden Sie unter Debuggen von Builds auf der Website prefix.dev.

Pakete für andere Plattformen erstellen

Der rattler-build publish Befehl erstellt Pakete für das Betriebssystem der Arbeitsstation, auf der der Befehl ausgeführt wird. Wenn Ihre Deadline Cloud-Flotte ein anderes Betriebssystem als Ihre Workstation verwendet oder wenn Ihr Paket andere Hostanforderungen hat, haben Sie die folgenden Optionen:

  • Führen Sie es rattler-build publish auf einem Host aus, der dem Zielbetriebssystem entspricht. Verwenden Sie beispielsweise eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance, die ausgeführt wirdLinux, um Pakete für eine Linux Flotte zu erstellen.

  • Verwenden Sie eine Warteschlange für die Erstellung von Deadline Cloud-Paketen, um Builds auf der Zielplattform zu automatisieren. Siehe Eine Warteschlange für die Paketerstellung erstellen.

  • (Fortgeschritten) Verwenden Sie die Kreuzkompilierung, um Pakete für eine andere Plattform als Ihre Workstation zu erstellen. Weitere Informationen finden Sie Cross-compilation auf der Website prefix.dev.

Nächste Schritte

Nachdem Sie Pakete auf Ihrem Amazon S3-Conda-Kanal veröffentlicht haben, konfigurieren Sie Ihre Deadline Cloud-Warteschlangen so, dass sie den Kanal verwenden: