Cache-Builds zur Verbesserung der Leistung - AWS CodeBuild

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.

Cache-Builds zur Verbesserung der Leistung

Sie können Zeit sparen, wenn beim Erstellen Ihres Projekts ein Cache verwendet wird. In einem Cache können wiederverwendbare Teile Ihrer Build-Umgebung gespeichert werden, die dann für mehrere Builds verwendet werden können. Ihr Build-Projekt kann eine von zwei Arten von Caching verwenden: Amazon S3 oder lokal. Wenn Sie einen lokalen Cache verwenden, müssen Sie mindestens einen von drei Cache-Modi auswählen: Quellcache, Docker-Ebenen-Cache und benutzerdefinierter Cache.

Anmerkung

Der Docker-Ebenen-Cache-Modus ist nur für die Linux-Umgebung verfügbar. Wenn Sie diesen Modus wählen, müssen Sie Ihren Build im privilegierten Modus ausführen. CodeBuild Der privilegierte Modus für Projekte gewährt seinem Container Zugriff auf alle Geräte. Weitere Informationen finden Sie unter Laufzeitberechtigungen und Linux-Funktionen auf der Docker-Docs-Website.

Amazon S3 S3-Caching

Amazon S3 S3-Caching speichert den Cache in einem Amazon S3 S3-Bucket, der auf mehreren Build-Hosts verfügbar ist. Dies ist eine gute Option für kleine bis mittelgroße Build-Artefakte, deren Erstellung teurer ist als das Herunterladen. Für große Build-Artefakte ist diese Option nicht optimal, da ihre Übertragung über das Netzwerk unter Umständen viel Zeit in Anspruch nimmt, was sich auf die Build-Leistung auswirken kann. Es ist auch nicht die beste Option, wenn Sie Docker-Layer verwenden.

Lokales Caching

Beim lokalen Caching wird der Cache lokal auf einem Build-Host gespeichert und ist nur für diesen Build-Host verfügbar. Dies ist eine gute Option für mittelgroße bis große Build-Artefakte, da der Cache sofort auf dem Build-Host verfügbar ist. Dies ist nicht die beste Option, wenn Ihre Builds selten sind. Die Build-Leistung ist somit nicht durch die Netzwerk-Übertragungsdauer beeinträchtigt.

Wenn Sie sich für lokales Caching entscheiden, müssen Sie mindestens einen der folgenden Cache-Modi auswählen:

  • Beim Quellcache-Modus werden Git-Metadaten für primäre und sekundäre Quellen zwischengespeichert. Nachdem der Cache erstellt wurde, wird bei nachfolgenden Builds nur die Änderung zwischen den Commits abgerufen. Dieser Modus ist gut geeignet für Projekte mit einem sauberen Arbeitsverzeichnis und einem großen Git-Repository als Quelle. Wenn du diese Option wählst und dein Projekt kein Git-Repository (AWS CodeCommit, GitHub, GitHub Enterprise Server oder Bitbucket) verwendet, wird die Option ignoriert.

  • Beim Docker-Ebenen-Cache-Modus werden vorhandene Docker-Ebenen zwischengespeichert. Dieser Modus eignet sich für Projekte, bei denen große Docker-Images erstellt oder abgerufen werden. Mit diesem Modus können Leistungsprobleme vermieden werden, die beim Abruf großer Docker-Images aus dem Netzwerk entstehen.

    Anmerkung
    • Ein Docker-Ebenen-Cache kann nur in einer Linux-Umgebung verwendet werden.

    • Das privileged-Flag muss so festgelegt sein, dass Ihr Projekt über die erforderlichen Docker-Berechtigungen verfügt.

      Standardmäßig ist der Docker-Daemon für Nicht-Builds aktiviert. VPC Wenn Sie Docker-Container für VPC Builds verwenden möchten, finden Sie auf der Docker Docs-Website unter Runtime Privilege and Linux Capabilities weitere Informationen und aktivieren Sie den privilegierten Modus. Außerdem unterstützt Windows den privilegierten Modus nicht.

    • Vor der Verwendung eines Docker-Ebenen-Cache sollten Sie die Auswirkungen auf die Sicherheit berücksichtigen.

  • Beim benutzerdefinierten Cache-Modus werden Verzeichnisse zwischengespeichert, die Sie in der buildspec-Datei angeben. Dieser Modus ist gut geeignet, wenn Ihr Build-Szenario nicht für einen der beiden anderen lokalen Cache-Modi in Frage kommt. Bei Verwendung eines benutzerdefinierte Cache gilt Folgendes:

    • Für das Caching können nur Verzeichnisse angegeben werden. Sie können keine einzelnen Dateien angeben.

    • Es werden Symlinks verwendet, um auf zwischengespeicherte Verzeichnisse zu verweisen.

    • Zwischengespeicherte Verzeichnisse werden mit Ihrem Build verknüpft, bevor die Projektquellen heruntergeladen werden. Im Cache gespeicherte Elemente überschreiben Quellelemente, wenn sie denselben Namen haben. Verzeichnisse werden unter Verwendung von Cache-Pfaden in der buildspec-Datei angegeben. Weitere Informationen finden Sie unter Syntax der Build-Spezifikation.

    • Vermeiden Sie Verzeichnisnamen, die in der Quelle und im Cache identisch sind. Lokal zwischengespeicherte Verzeichnisse können die Inhalte von Verzeichnissen in einem Quell-Repository überschreiben oder löschen, das denselben Namen hat.

Anmerkung

Lokales Caching wird für den LINUX_GPU_CONTAINER Umgebungstyp und den BUILD_GENERAL1_2XLARGE Compute-Typ nicht unterstützt. Weitere Informationen finden Sie unter Berechnungsmodi und Typen der Build-Umgebung.

Anmerkung

Lokales Caching wird nicht unterstützt, wenn Sie die Konfiguration für CodeBuild die Arbeit mit einem konfigurieren. VPC Weitere Informationen zur Verwendung von VPCs with finden Sie CodeBuild unterVerwendung AWS CodeBuild mit Amazon Virtual Private Cloud.

Geben Sie einen lokalen Cache an

Sie können die Konsole AWS CLI, oder verwendenSDK, AWS CloudFormation um einen lokalen Cache anzugeben. Weitere Hinweise zum lokalen Caching finden Sie unterLokales Caching.

Angabe von lokalem Caching (CLI)

Sie können den --cache Parameter in verwenden AWS CLI , um jeden der drei lokalen Cachetypen anzugeben.

  • So geben Sie einen Quellcache an:

    --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  • So geben Sie eine Docker-Ebenen-Cache an:

    --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  • So geben Sie einen benutzerdefinierten Cache an:

    --cache type=LOCAL,mode=[LOCAL_CUSTOM_CACHE]

Weitere Informationen finden Sie unter Erstellen eines Build-Projekts (AWS CLI).

Angabe von lokalem Caching (Konsole)

Geben Sie den Cache im Abschnitt Artifacts (Artefakte) der Konsole an. Wählen Sie als Cachetyp Amazon S3 oder Local aus. Wenn Sie Local (Lokal) auswählen, wählen Sie mindestens eine der drei lokalen Cache-Optionen aus.

Geben Sie einen lokalen Cache an, indem Sie eine oder mehrere der drei lokalen Cache-Optionen auswählen.

Weitere Informationen finden Sie unter Erstellen Sie ein Build-Projekt (Konsole).

Angabe von lokalem Caching (AWS CloudFormation)

Wenn Sie AWS CloudFormation einen lokalen Cache angeben, geben Sie in der Cache Eigenschaft for Type anLOCAL. Der folgende AWS CloudFormation Beispielcode im YAML -Format gibt alle drei lokalen Cachetypen an. Sie können eine beliebige Kombination der Typen angeben. Wenn Sie einen Docker-Ebenen-Cache verwenden, müssen Sie unter Environment (Umgebung) für PrivilegedMode die Option true und für Type (Typ) die Option LINUX_CONTAINER festlegen.

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: <service-role> Artifacts: Type: S3 Location: <bucket-name> Name: myArtifact EncryptionDisabled: true OverrideArtifactName: true Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Certificate: <bucket/cert.zip> # PrivilegedMode must be true if you specify LOCAL_DOCKER_LAYER_CACHE PrivilegedMode: true Source: Type: GITHUB Location: <github-location> InsecureSsl: true GitCloneDepth: 1 ReportBuildStatus: false TimeoutInMinutes: 10 Cache: Type: LOCAL Modes: # You can specify one or more cache mode, - LOCAL_CUSTOM_CACHE - LOCAL_DOCKER_LAYER_CACHE - LOCAL_SOURCE_CACHE
Anmerkung

Standardmäßig ist der Docker-Daemon für Nicht-Builds aktiviert. VPC Wenn Sie Docker-Container für VPC Builds verwenden möchten, finden Sie auf der Docker Docs-Website unter Runtime Privilege and Linux Capabilities weitere Informationen und aktivieren Sie den privilegierten Modus. Außerdem unterstützt Windows den privilegierten Modus nicht.

Weitere Informationen finden Sie unter Erstellen eines Build-Projekts (AWS CloudFormation).