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 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 auswählen, müssen Sie Ihren Build im privilegierten Modus ausführen. CodeBuild-Projekte gewähren dem privilegierten Modus den Containerzugriff auf alle Geräte. Weitere Informationen finden Sie unter Laufzeitberechtigungen und Linux-Funktionen auf der Docker-Docs-Website.

Amazon S3 -Caching

Bei Amazon S3 wird der Cache in einem Amazon S3 S3--Bucket gespeichert, der für mehrere Build-Hosts verfügbar ist. Diese Option ist gut für kleine bis zwischenzeitliche Build-Artefakte geeignet, deren Erstellung teurer als ein Download ist. 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. Diese Option ist gut für zwischenzeitliche bis große Build-Artefakte geeignet, 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 auswählen und Ihr Projekt kein Git-Repository (GitHub,GitHubEnterprise Server oder Bitbucket) 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 erlauben Docker-Container keinen Zugriff auf Geräte. Der privilegierte Modus gewährt dem Docker-Container eines Build-Projekts Zugriff auf alle Geräte. Weitere Informationen finden Sie unter Laufzeitberechtigungen und Linux-Funktionen auf der Docker-Docs-Website.

    • 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 demARM_CONTAINERundLINUX_GPU_CONTAINERUmgebungstypen und dasBUILD_GENERAL1_2XLARGEDatenverarbeitungstyp. Weitere Informationen finden Sie unter Arten der Datenverarbeitung bei der Build-Umgebung .

Anmerkung

Lokales Caching wird bei der Konfiguration nicht unterstütztCodeBuildum mit einer VPC zu arbeiten. Weitere Informationen dazu, wie VPCs mitCodeBuild, finden Sie unterVerwenden vonAWS CodeBuildmit Amazon Virtual Private Cloudaus.

Sie können dasAWS CLI, Konsole, SDK oderAWS CloudFormationum 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. FürCache-Typ, wählenAmazon S3oderLocalaus. 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: myBucket 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 erlauben Docker-Container keinen Zugriff auf Geräte. Der privilegierte Modus gewährt dem Docker-Container eines Build-Projekts Zugriff auf alle Geräte. Weitere Informationen finden Sie unter Laufzeitberechtigungen und Linux-Funktionen auf der Docker-Docs-Website.

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