Build-Caching in AWS CodeBuild - 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.

Build-Caching in AWS CodeBuild

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 Projects gewährt dem privilegierten Modus 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-Caching

Amazon S3-Caching speichert den Cache in einem Amazon S3-Bucket, der auf mehreren Build-Hosts verfügbar ist. Dies ist eine gute Option für kleine bis mittelgroße Build-Artefakte, die teurer zu erstellen sind als zum 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 Zwischen- 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 Sie diese Option wählen und Ihr 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 Docker-Daemon für Nicht-VPC-Builds aktiviert. Wenn Sie Docker-Container für VPC-Builds verwenden möchten, finden Sie weitere Informationen unter Laufzeitberechtigung und Linux-Funktionen auf der Docker-Docs-Website 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 mit dem LINUX_GPU_CONTAINER Umgebungstyp und dem BUILD_GENERAL1_2XLARGE Datenverarbeitungstyp nicht unterstützt. Weitere Informationen finden Sie unter Datenverarbeitungsmodi und -typen für Build-Umgebungen.

Anmerkung

Lokales Caching wird nicht unterstützt, wenn Sie für CodeBuild die Arbeit mit einer VPC konfigurieren. Weitere Informationen zur Verwendung von VPCs mit finden Sie CodeBuildunter BenutzenAWS CodeBuildmit Amazon Virtual Private Cloud.

Sie können die AWS CLI, die Konsole, das SDK oder verwenden, AWS CloudFormation um einen lokalen Cache anzugeben.

Angabe von lokalem Caching (CLI)

Über den --cache-Parameter in der AWS CLI können Sie die drei lokalen Cache-Typen angeben.

  • 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 für Cache-Typ Amazon S3 oder Lokal aus. Wenn Sie Local (Lokal) auswählen, wählen Sie mindestens eine der drei lokalen Cache-Optionen aus.

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

Angabe von lokalem Caching (AWS CloudFormation)

Wenn Sie einen lokalen Cache mittels AWS CloudFormation angeben, geben Sie bei der Cache-Eigenschaft für Type LOCAL an. Der folgende in YAML formatierte AWS CloudFormation-Beispielcode gibt alle drei lokalen Cache-Typen 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 Docker-Daemon für Nicht-VPC-Builds aktiviert. Wenn Sie Docker-Container für VPC-Builds verwenden möchten, finden Sie weitere Informationen unter Laufzeitberechtigung und Linux-Funktionen auf der Docker-Docs-Website 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).