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.
Erste Schritte mit CodeBuild
In den folgenden Tutorials verwenden Sie, AWS CodeBuild um aus einer Sammlung von Beispiel-Quellcode-Eingabedateien eine bereitstellbare Version des Quellcodes zu erstellen.
Beide Tutorials haben dieselben Eingaben und Ergebnisse, aber das eine verwendet die AWS CodeBuild Konsole und das andere die AWS CLI.
Wichtig
Wir empfehlen nicht, dass Sie Ihr AWS Root-Konto verwenden, um dieses Tutorial abzuschließen.
Themen
Erste Schritte mit der AWS CodeBuild Verwendung der Konsole
In diesem Tutorial verwenden Sie, AWS CodeBuild um eine Sammlung von Beispiel-Quellcode-Eingabedateien (Build-Eingabeartefakte oder Build-Eingabe) in eine bereitstellbare Version des Quellcodes (Build-Output-Artifact oder Build-Output) zu integrieren. Insbesondere weisen Sie an CodeBuild , Apache Maven, ein gängiges Build-Tool, zu verwenden, um eine Reihe von Java-Klassendateien in eine Java-Archivdatei () zu erstellen. JAR Dieses Tutorial setzt nicht voraus, dass Sie mit Apache Maven oder Java vertraut sind.
Sie können mit der CodeBuild CodeBuild Konsole, AWS CodePipeline, dem oder dem AWS CLI arbeiten. AWS SDKs In diesem Tutorial wird gezeigt, wie Sie die CodeBuild Konsole verwenden. Hinweise zur Verwendung finden CodePipeline Sie unterVerwenden Sie CodeBuild mit CodePipeline.
Wichtig
Für die Schritte in diesem Tutorial müssen Sie Ressourcen (z. B. einen S3-Bucket) erstellen, die zu Gebühren für Ihr AWS Konto führen können. Dazu gehören mögliche Gebühren für CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 und CloudWatch Logs. AWS KMS Weitere Informationen finden Sie unter AWS CodeBuild
Preise
Themen
- Schritt 1: Erstellen Sie den Quellcode
- Schritt 2: Erstellen Sie die Buildspec-Datei
- Schritt 3: Erstellen Sie zwei S3-Buckets
- Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei
- Schritt 5: Erstellen des Build-Projekts
- Schritt 6: Ausführen des Builds
- Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen
- Schritt 8: Anzeigen der detaillierten Build-Informationen
- Schritt 9: Abrufen des Build-Ausgabeartefakts
- Schritt 10: Löschen Sie die S3-Buckets
- Nachbearbeitung
Schritt 1: Erstellen Sie den Quellcode
(Teil von: Erste Schritte mit der AWS CodeBuild Verwendung der Konsole)
In diesem Schritt erstellen Sie den Quellcode, den Sie für den Ausgabe-Bucket erstellen möchten CodeBuild . Dieser Quellcode besteht aus zwei Java-Klassendateien und einer Apache Maven Project Object Model (POM) -Datei.
-
Erstellen Sie in einem leeren Verzeichnis auf Ihrem lokalen Computer oder der Instance folgende Verzeichnisstruktur.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Erstellen Sie diese Datei mithilfe eines Texteditors, benennen Sie sie
MessageUtil.java
und speichern Sie sie im Verzeichnissrc/main/java
.public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }
Diese Klassendatei erstellt die Zeichenfolge, die an sie übergeben wurde, als Ausgabe. Der
MessageUtil
-Konstruktor legt die Zeichenfolge fest. DieprintMessage
-Methode erstellt die Ausgabe. DiesalutationMessage
-Methode gibtHi!
gefolgt von der Zeichenfolge aus. -
Erstellen Sie diese Datei, benennen Sie sie
TestMessageUtil.java
und speichern Sie sie im Verzeichnis/src/test/java
.import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Diese Klassendatei setzt die
message
-Variable in der KlasseMessageUtil
aufRobert
. Anschließend führt sie einen Test durch, um zu sehen, ob diemessage
-Variable erfolgreich festgelegt wurde, indem sie überprüft, ob die ZeichenfolgenRobert
undHi!Robert
in der Ausgabe vorhanden sind. -
Erstellen Sie diese Datei, benennen Sie sie
pom.xml
und speichern Sie sie im Stammverzeichnis (oberste Ebene).<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>
Apache Maven verwendet die Anweisungen in dieser Datei, um die Dateien
MessageUtil.java
undTestMessageUtil.java
in eine Datei namensmessageUtil-1.0.jar
zu konvertieren und dann die angegebenen Tests auszuführen.
An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Schritt 2: Erstellen Sie die Buildspec-Datei
(Vorheriger Schritt: Schritt 1: Erstellen Sie den Quellcode)
In diesem Schritt erstellen Sie eine Build-Spezifikationsdatei. Eine Buildspec ist eine Sammlung von Build-Befehlen und zugehörigen Einstellungen in einem YAML Format, das CodeBuild zum Ausführen eines Builds verwendet wird. Ohne eine Build-Spezifikation können Sie Ihre Build-Eingabe CodeBuild nicht erfolgreich in eine Build-Ausgabe konvertieren oder das Build-Ausgabeartefakt in der Build-Umgebung finden, um es in Ihren Ausgabe-Bucket hochzuladen.
Erstellen Sie diese Datei, benennen Sie sie buildspec.yml
und speichern Sie sie im Stammverzeichnis (oberste Ebene).
version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
Wichtig
Da eine Build-Spezifikations-Deklaration gültig sein mussYAML, ist der Abstand in einer Build-Spezifikations-Deklaration wichtig. Wenn die Anzahl der Leerzeichen in der Build-Spezifikationsdeklaration nicht mit dieser übereinstimmt, schlägt der Build ggf. sofort fehl. Sie können einen YAML Validator verwenden, um zu testen, ob Ihre Build-Spezifikationsdeklaration gültig ist. YAML
Anmerkung
Statt eine Build-Spezifikationsdatei in Ihren Quellcode einzuschließen, können Sie Build-Befehle beim Erstellen eines Build-Projekts separat deklarieren. Das ist hilfreich, wenn Sie Ihren Quellcode mit unterschiedlichen Build-Befehlen erstellen möchten, ohne jedes Mal das Quellcode-Repository zu aktualisieren. Weitere Informationen finden Sie unter Syntax der Build-Spezifikation.
In dieser Build-Spezifikationsdeklaration gilt:
-
version
steht für die Version des verwendeten Build-Spezifikationsstandards. Diese Build-Spezifikationsdeklaration verwendet die aktuelle Version,0.2
. -
phases
steht für die Buildphasen, in denen Sie Befehle ausführen können. CodeBuild Diese Build-Phasen sind hier alsinstall
,pre_build
,build
undpost_build
aufgelistet. Sie können die Schreibweise dieser Build-Phasennamen nicht ändern und Sie können keine zusätzlichen Build-Phasennamen erstellen.In diesem Beispiel wird der
mvn install
Befehl während derbuild
Phase CodeBuild ausgeführt. Dieser Befehl weist Apache Maven an, die Java-Klassendateien zu kompilieren, zu testen und die kompilierten Dateien in ein Build-Ausgabeartefakt zu verpacken. Der Vollständigkeit halber sind in diesem Beispiel einigeecho
-Befehle in jeder Build-Phase platziert. Wenn Sie sich später in diesem Tutorial detaillierte Informationen zum Build ansehen, können Sie anhand der Ausgabe dieserecho
Befehle besser verstehen, wie und in welcher Reihenfolge Befehle CodeBuild ausgeführt werden. (Auch wenn alle Build-Phasen in diesem Beispiel enthalten sind, müssen Sie nicht unbedingt eine Build-Phase einschließen, wenn Sie nicht vorhaben, während dieser Phase Befehle auszuführen.) CodeBuild Führt in jeder Buildphase jeden angegebenen Befehl nacheinander in der angegebenen Reihenfolge von Anfang bis Ende aus. -
artifacts
stellt den Satz von Build-Ausgabeartefakten dar, der in den Ausgabe-Bucket CodeBuild hochgeladen wird.files
steht für die Dateien, die in die Build-Ausgabe aufgenommen werden sollen. CodeBuild lädt die einzelnemessageUtil-1.0.jar
Datei hoch, die sich imtarget
entsprechenden Verzeichnis in der Build-Umgebung befindet. Der DateinamemessageUtil-1.0.jar
und der Verzeichnisnametarget
, unter denen Apache Maven Build-Ausgabeartefakte erstellt und speichert, gelten nur für dieses Beispiel. In Ihren eigenen Builds lauten diese Dateinamen und Verzeichnisse anders.
Weitere Informationen hierzu finden Sie unter Build-Spezifikationsreferenz.
An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Schritt 3: Erstellen Sie zwei S3-Buckets
(Vorheriger Schritt: Schritt 2: Erstellen Sie die Buildspec-Datei)
Auch wenn Sie einen einzelnen Bucket für dieses Tutorial verwenden können, ist mit zwei Buckets einfacher zu erkennen, woher die Build-Eingabe stammt und wohin die Build-Ausgabe geschrieben wird.
-
Einer dieser Buckets (Eingangs-Bucket) speichert die Build-Eingabe. In diesem Tutorial lautet der Name dieses Eingabe-Buckets
codebuild-
, wobeiregion-ID
-account-ID
-input-bucketregion-ID
ist die AWS Region des Buckets undaccount-ID
ist Ihre AWS Konto-ID. -
Der andere Bucket (Ausgabe-Bucket) nimmt die Build-Ausgabe auf. In diesem Tutorial ist der Name dieses Ausgabe-Buckets
codebuild-
.region-ID
-account-ID
-output-bucket
Wenn Sie andere Namen für diese Buckets gewählt haben, müssen Sie diese Namen im gesamten Tutorial verwenden.
Diese beiden Buckets müssen sich in derselben AWS Region wie Ihre Builds befinden. Wenn Sie beispielsweise angeben, dass ein CodeBuild Build in der Region USA Ost (Ohio) ausgeführt werden soll, müssen sich diese Buckets auch in der Region USA Ost (Ohio) befinden.
Weitere Informationen erhalten Sie unter Erstellen eines Buckets im Benutzerhandbuch für Amazon Simple Storage Service.
Anmerkung
Unterstützt zwar CodeBuild auch Build-Eingaben, die in CodeCommit, GitHub, und Bitbucket-Repositorys gespeichert sind, aber dieses Tutorial zeigt dir nicht, wie du sie benutzt. Weitere Informationen finden Sie unter Planen eines Builds.
Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei
(Vorheriger Schritt: Schritt 3: Erstellen Sie zwei S3-Buckets)
In diesem Schritt fügen Sie den Quellcode und die Build-Spezifikationsdatei zum Empfangs-Bucket hinzu.
Erstellen Sie mit dem ZIP-Dienstprogramm Ihres Betriebssystems eine Datei namens MessageUtil.zip
, die MessageUtil.java
, TestMessageUtil.java
, pom.xml
und buildspec.yml
enthält.
Die Verzeichnisstruktur der Datei MessageUtil.zip
muss wie folgt aussehen:
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Wichtig
Schließen Sie nicht das Verzeichnis
ein, sondern nur die Verzeichnisse und Dateien, die im Verzeichnis (root directory name)
enthalten sind.(root directory name)
Laden Sie die Datei MessageUtil.zip
in den Empfangs-Bucket namens codebuild-
. region-ID
-account-ID
-input-bucket
Wichtig
Für CodeCommit GitHub ,- und Bitbucket-Repositorys müssen Sie laut Konvention eine Build-Spezifikationsdatei speichern, die buildspec.yml
im Stammverzeichnis (oberste Ebene) jedes Repositorys benannt ist, oder die Build-Spezifikationsdeklaration als Teil der Build-Projektdefinition hinzufügen. Erstelle keine ZIP Datei, die den Quellcode und die Build-Spezifikationsdatei des Repositorys enthält.
Für Build-Eingaben, die nur in S3-Buckets gespeichert sind, müssen Sie eine ZIP Datei erstellen, die den Quellcode und, wie üblich, eine Build-Spezifikationsdatei enthält, die buildspec.yml
im Stammverzeichnis (oberste Ebene) benannt ist, oder die Build-Spezifikationsdeklaration als Teil der Build-Projektdefinition einbeziehen.
Wenn Sie einen anderen Namen für Ihre Build-Spezifikationsdatei verwenden oder auf eine Build-Spezifikation verweisen möchten, die nicht im Stammverzeichnis gespeichert ist, können Sie eine Überschreibung der Build-Spezifikation im Rahmen der Build-Projektdefinition angeben. Weitere Informationen finden Sie unter Dateiname der Build-Spezifikation und Speicherort.
Schritt 5: Erstellen des Build-Projekts
(Vorheriger Schritt: Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei)
In diesem Schritt erstellen Sie ein Build-Projekt, das zur Ausführung des Builds AWS CodeBuild verwendet wird. Ein Build-Projekt enthält Informationen darüber, wie ein Build ausgeführt wird, einschließlich der Herkunft des Quellcodes, der zu verwendenden Build-Umgebung, der auszuführenden Build-Befehle und des Speicherorts der Build-Ausgabe. Eine Build-Umgebung stellt eine Kombination aus Betriebssystem, Programmiersprache, Runtime und Tools dar, mit denen CodeBuild ein Build ausgeführt wird. Die Build-Umgebung wird als Docker-Image ausgedrückt. Weitere Informationen finden Sie unter Docker Overview
Für diese Build-Umgebung weisen Sie an, ein Docker-Image CodeBuild zu verwenden, das eine Version des Java Development Kit (JDK) und Apache Maven enthält.
So erstellen Sie ein Build-Projekt
-
Verwenden Sie die AWS Regionsauswahl, um eine AWS Region auszuwählen, in der sie unterstützt wird. CodeBuild Weitere Informationen finden Sie unter AWS CodeBuild -Endpunkte und -Kontingente in der Allgemeine Amazon Web Services-Referenz.
Wenn eine CodeBuild Informationsseite angezeigt wird, wählen Sie Build-Projekt erstellen. Erweitern Sie andernfalls im Navigationsbereich Build, wählen Sie Build projects und dann Create build project aus.
-
Geben Sie auf der Seite Create build project (Build-Projekt erstellen) unter Project configuration (Projektkonfiguration) für Project name (Projektname) einen Namen für dieses Build-Projekt ein (in diesem Beispiel
codebuild-demo-project
). Die Namen von Build-Projekten müssen für jedes AWS Konto eindeutig sein. Wenn Sie einen anderen Namen vergeben, müssen Sie diesen im gesamten Tutorial verwenden.Anmerkung
Auf der Seite Create build project (Build-Projekt erstellen) wird möglicherweise eine Fehlermeldung ähnlich der folgenden angezeigt: You are not authorized to perform this operation (Sie sind nicht berechtigt, diesen Vorgang auszuführen).. Dies liegt höchstwahrscheinlich daran, dass Sie sich AWS Management Console als Benutzer angemeldet haben, der nicht über die erforderlichen Berechtigungen zum Erstellen eines Build-Projekts verfügt. Um dieses Problem zu beheben, melden Sie sich von der AWS Management Console ab und melden Sie sich dann wieder mit Anmeldeinformationen an, die zu einer der folgenden IAM Entitäten gehören:
-
Ein Administratorbenutzer in Ihrem AWS Konto. Weitere Informationen finden Sie im Benutzerhandbuch unter Erstellen Ihres ersten AWS-Konto Root-Benutzers und Ihrer ersten Root-Gruppe.
-
Ein Benutzer in Ihrem AWS Konto mit den
IAMFullAccess
verwalteten RichtlinienAWSCodeBuildAdminAccess
AmazonS3ReadOnlyAccess
,, die diesem Benutzer oder einer IAM Gruppe zugeordnet sind, der der Benutzer angehört. Wenn Sie in Ihrem AWS Konto keinen Benutzer oder keine Gruppe mit diesen Berechtigungen haben und Sie diese Berechtigungen Ihrem Benutzer oder Ihrer Gruppe nicht hinzufügen können, wenden Sie sich an Ihren AWS Kontoadministrator, um Unterstützung zu erhalten. Weitere Informationen finden Sie unter AWS verwaltete (vordefinierte) Richtlinien für AWS CodeBuild.
Beide Optionen beinhalten Administratorrechte, die es Ihnen ermöglichen, ein Build-Projekt zu erstellen, damit Sie dieses Tutorial abschließen können. Es wird empfohlen, immer die Mindestberechtigungen zu verwenden, die für die Ausführung Ihrer Aufgabe erforderlich sind. Weitere Informationen finden Sie unter AWS CodeBuild Referenz zu Berechtigungen.
-
-
Wählen Sie unter Source für Source Provider Amazon S3 aus.
-
Wählen Sie für Bucket codebuild-
region-ID
-account-ID
-Eingabe-Bucket. -
Geben Sie für S3 object key (S3-Objektschlüssel)
MessageUtil.zip
ein. -
Wählen Sie unter Environment für Environment image weiterhin Managed Image aus.
-
Wählen Sie als Betriebssystem Amazon Linux aus.
-
Wählen Sie unter Runtime (Laufzeit) die Option Standard aus.
-
Wählen Sie für Image aws/codebuild/amazonlinux 2-x86_64-standard:corretto11.
-
Wählen Sie unter Service role weiterhin New service role aus und lassen Sie Role name unverändert.
-
Belassen Sie für Buildspec die Option Use a buildspec file (Eine buildspec-Datei verwenden) aktiviert.
-
Wählen Sie unter Artifacts für Type Amazon S3 aus.
-
Wählen Sie als Bucket-Namen die Option codebuild-
region-ID
-account-ID
-Ausgabe-Bucket. -
Lassen Sie Name und Path (Pfad) leer.
-
Wählen Sie Create build project (Build-Projekt erstellen) aus.
Schritt 6: Ausführen des Builds
(Vorheriger Schritt: Schritt 5: Erstellen des Build-Projekts)
In diesem Schritt weisen Sie an AWS CodeBuild , den Build mit den Einstellungen im Build-Projekt auszuführen.
So führen Sie den Build aus
Öffnen Sie die AWS CodeBuild Konsole unter https://console.aws.amazon.com/codesuite/codebuild/home
. -
Wählen Sie im linken Navigationsbereich Build projects aus.
-
Wählen Sie in der Liste der Build-Projekte die Option codebuild-demo-projectund anschließend Build starten aus. Der Build wird sofort gestartet.
Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen
(Vorheriger Schritt: Schritt 6: Ausführen des Builds)
In diesem Schritt zeigen Sie eine Zusammenfassung der Informationen über den Build-Status an.
So zeigen Sie eine Zusammenfassung der Build-Informationen an
-
Wenn der codebuild-demo-project:
<build-ID>
Die Seite wird nicht angezeigt, wählen Sie in der Navigationsleiste die Option Verlauf erstellen aus. Wählen Sie als Nächstes in der Liste der Build-Projekte für Project den Link Build run für aus codebuild-demo-project. Es sollte nur ein passender Link vorhanden sein. (Wenn Sie dieses Tutorial bereits zuvor durchgearbeitet haben, wählen Sie in der Spalte Completed (Fertiggestellt) den Link mit dem neuesten Wert aus.) -
Auf der Build-Statusseite sollten in den Phasendetails die folgenden Buildphasen angezeigt werden, wobei in der Spalte Status der Eintrag Erfolgreich aufgeführt sein sollte:
-
SUBMITTED
-
QUEUED
-
PROVISIONING
-
DOWNLOAD_SOURCE
-
INSTALL
-
PRE_BUILD
-
BUILD
-
POST_BUILD
-
UPLOAD_ARTIFACTS
-
FINALIZING
-
COMPLETED
Unter Build-Status sollte Succeeded angezeigt werden.
Wenn stattdessen In Progress (Verarbeitung läuft...) angezeigt wird, wählen Sie die Schaltfläche zum Aktualisieren aus.
-
-
Neben jeder Build-Phase gibt der Wert Duration (Dauer) an, wie lange diese Build-Phase gedauert hat. Der Wert End time gibt an, wann die Build-Phase beendet wurde.
Schritt 8: Anzeigen der detaillierten Build-Informationen
(Vorheriger Schritt: Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen)
In diesem Schritt sehen Sie detaillierte Informationen zu Ihrem Build in CloudWatch Logs.
Anmerkung
Um vertrauliche Informationen zu schützen, sind die folgenden Informationen in den CodeBuild Protokollen versteckt:
-
AWS ZugriffsschlüsselIDs. Weitere Informationen finden Sie im Benutzerhandbuch unter Verwaltung von Zugriffsschlüsseln für IAM AWS Identity and Access Management Benutzer.
-
Mit dem Parameter Store angegebene Zeichenfolgen. Weitere Informationen finden Sie unter Systems Manager Parameter Store und Systems Manager Parameter Store Console Walkthrough im Amazon EC2 Systems Manager Manager-Benutzerhandbuch.
-
Zeichenketten, die mit angegeben wurden AWS Secrets Manager. Weitere Informationen finden Sie unter Schlüsselverwaltung.
So zeigen Sie detaillierte Build-Informationen an
-
Während die Seite mit den Build-Details immer noch vom vorherigen Schritt angezeigt wird, werden die letzten 10,000 Zeilen des Build-Protokolls unter Build logs angezeigt. Um das gesamte Build-Protokoll in CloudWatch Logs zu sehen, wählen Sie den Link Gesamtes Protokoll anzeigen.
-
Im CloudWatch Log-Stream „Logs“ können Sie die Protokollereignisse durchsuchen. Standardmäßig werden nur die letzten Protokollereignisse angezeigt. Um ältere Protokollereignisse anzuzeigen, blättern Sie zum Anfang der Liste.
-
In diesem Tutorial enthalten die meisten Protokollereignisse ausführliche Informationen zum CodeBuild Herunterladen und Installieren von Build-Abhängigkeitsdateien in der Build-Umgebung, was Ihnen wahrscheinlich egal ist. Sie können die angezeigten Informationen über das Feld Filter events reduzieren. Wenn Sie beispielsweise
"[INFO]"
in das Feld Filter events (Ereignisse filtern) eingeben, werden nur Ereignisse angezeigt, die[INFO]
enthalten. Weitere Informationen finden Sie unter Filter- und Mustersyntax im CloudWatch Amazon-Benutzerhandbuch.
Schritt 9: Abrufen des Build-Ausgabeartefakts
(Vorheriger Schritt: Schritt 8: Anzeigen der detaillierten Build-Informationen)
In diesem Schritt erhalten Sie die messageUtil-1.0.jar
Datei, die CodeBuild erstellt und in den Ausgabe-Bucket hochgeladen wurde.
Sie können die CodeBuild Konsole oder die Amazon S3 S3-Konsole verwenden, um diesen Schritt abzuschließen.
Um das Build-Ausgabeartefakt (AWS CodeBuild Konsole) abzurufen
-
Wenn die CodeBuild Konsole noch geöffnet ist und die Seite mit den Build-Details aus dem vorherigen Schritt weiterhin angezeigt wird, wählen Sie den Tab Build-Details und scrollen Sie nach unten zum Abschnitt Artefakte.
Anmerkung
Wenn die Seite mit den Build-Details nicht angezeigt wird, wählen Sie in der Navigationsleiste Build history und dann den Link Build run aus.
-
Der Link zum Amazon S3 S3-Ordner befindet sich unter dem Upload-Speicherort für Artefakte. Dieser Link öffnet den Ordner in Amazon S3, in dem Sie die
messageUtil-1.0.jar
Build-Ausgabeartefaktdatei finden.
Um das Build-Ausgabeartefakt abzurufen (Amazon S3 S3-Konsole)
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Öffnen Sie
codebuild-
.region-ID
-account-ID
-output-bucket -
Öffnen Sie das Verzeichnis
codebuild-demo-project
. -
Öffnen Sie den Ordner
target
, in dem Sie die Build-AusgabeartefaktdateimessageUtil-1.0.jar
finden.
Schritt 10: Löschen Sie die S3-Buckets
(Vorheriger Schritt: Schritt 9: Abrufen des Build-Ausgabeartefakts)
Um zu verhindern, dass Ihr AWS Konto ständig belastet wird, können Sie die in diesem Tutorial verwendeten Eingabe- und Ausgabe-Buckets löschen. Anweisungen finden Sie unter Löschen oder Entleeren eines Buckets im Amazon Simple Storage Service-Benutzerhandbuch.
Wenn Sie den IAM Benutzer oder einen IAM Administratorbenutzer verwenden, um diese Buckets zu löschen, benötigt der Benutzer mehr Zugriffsberechtigungen. Fügen Sie zwischen den Markierungen die folgende Anweisung ein (### BEGIN ADDING STATEMENT HERE ###
and ### END
ADDING STATEMENTS HERE ###
) zu einer bestehenden Zugriffsrichtlinie für den Benutzer.
Die Ellipsen (...) in dieser Anweisung dienen der Übersichtlichkeit der Darstellung. Entfernen Sie keine Anweisungen aus der vorhandenen Zugriffsrichtlinie. Geben Sie keine Auslassungspunkte in die Richtlinie ein.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Nachbearbeitung
In diesem Tutorial haben Sie früher eine Reihe von Java-Klassendateien AWS CodeBuild zu einer JAR Datei zusammengebaut. Anschließend haben Sie die Build-Ergebnisse angezeigt.
Sie können jetzt versuchen, es CodeBuild in Ihren eigenen Szenarien zu verwenden. Folgen Sie den Anweisungen in Planen eines Builds. Wenn Sie dazu noch nicht bereit sind, können Sie einige der Beispiele als Build erstellen. Weitere Informationen finden Sie unter Anwendungsfallbasierte Beispiele für CodeBuild.
Erste Schritte mit der AWS CodeBuild Verwendung von AWS CLI
In diesem Tutorial bauen Sie AWS CodeBuild eine Sammlung von Beispiel-Quellcode-Eingabedateien (sogenannte Build-Eingabeartefakte oder Build-Eingabe) in eine bereitstellbare Version des Quellcodes ein (Build-Output-Artifact oder Build-Output genannt). Insbesondere weisen Sie an CodeBuild , Apache Maven, ein gängiges Build-Tool, zu verwenden, um eine Reihe von Java-Klassendateien in eine Java-Archivdatei () zu erstellen. JAR Dieses Tutorial setzt nicht voraus, dass Sie mit Apache Maven oder Java vertraut sind.
Sie können mit der CodeBuild CodeBuild Konsole, AWS CodePipeline, dem oder dem AWS CLI arbeiten. AWS SDKs Dieses Tutorial zeigt die Verwendung CodeBuild mit dem AWS CLI. Hinweise zur Verwendung von CodePipeline finden Sie unterVerwenden Sie CodeBuild mit CodePipeline.
Wichtig
Für die Schritte in diesem Tutorial müssen Sie Ressourcen (z. B. einen S3-Bucket) erstellen, die zu Gebühren für Ihr AWS Konto führen können. Dazu gehören mögliche Gebühren für CodeBuild und für AWS Ressourcen und Aktionen im Zusammenhang mit Amazon S3 und CloudWatch Logs. AWS KMS Weitere Informationen finden Sie unter CodeBuildPreise
Themen
- Schritt 1: Erstellen Sie den Quellcode
- Schritt 2: Erstellen Sie die Buildspec-Datei
- Schritt 3: Erstellen Sie zwei S3-Buckets
- Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei
- Schritt 5: Erstellen des Build-Projekts
- Schritt 6: Ausführen des Builds
- Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen
- Schritt 8: Anzeigen der detaillierten Build-Informationen
- Schritt 9: Abrufen des Build-Ausgabeartefakts
- Schritt 10: Löschen Sie die S3-Buckets
- Nachbearbeitung
Schritt 1: Erstellen Sie den Quellcode
(Teil von: Erste Schritte mit der AWS CodeBuild Verwendung von AWS CLI)
In diesem Schritt erstellen Sie den Quellcode, den Sie für den Ausgabe-Bucket erstellen möchten CodeBuild . Dieser Quellcode besteht aus zwei Java-Klassendateien und einer Apache Maven Project Object Model (POM) -Datei.
-
Erstellen Sie in einem leeren Verzeichnis auf Ihrem lokalen Computer oder der Instance folgende Verzeichnisstruktur.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Erstellen Sie diese Datei mithilfe eines Texteditors, benennen Sie sie
MessageUtil.java
und speichern Sie sie im Verzeichnissrc/main/java
.public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }
Diese Klassendatei erstellt die Zeichenfolge, die an sie übergeben wurde, als Ausgabe. Der
MessageUtil
-Konstruktor legt die Zeichenfolge fest. DieprintMessage
-Methode erstellt die Ausgabe. DiesalutationMessage
-Methode gibtHi!
gefolgt von der Zeichenfolge aus. -
Erstellen Sie diese Datei, benennen Sie sie
TestMessageUtil.java
und speichern Sie sie im Verzeichnis/src/test/java
.import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Diese Klassendatei setzt die
message
-Variable in der KlasseMessageUtil
aufRobert
. Anschließend führt sie einen Test durch, um zu sehen, ob diemessage
-Variable erfolgreich festgelegt wurde, indem sie überprüft, ob die ZeichenfolgenRobert
undHi!Robert
in der Ausgabe vorhanden sind. -
Erstellen Sie diese Datei, benennen Sie sie
pom.xml
und speichern Sie sie im Stammverzeichnis (oberste Ebene).<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>
Apache Maven verwendet die Anweisungen in dieser Datei, um die Dateien
MessageUtil.java
undTestMessageUtil.java
in eine Datei namensmessageUtil-1.0.jar
zu konvertieren und dann die angegebenen Tests auszuführen.
An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Schritt 2: Erstellen Sie die Buildspec-Datei
(Vorheriger Schritt: Schritt 1: Erstellen Sie den Quellcode)
In diesem Schritt erstellen Sie eine Build-Spezifikationsdatei. Eine Buildspec ist eine Sammlung von Build-Befehlen und zugehörigen Einstellungen in einem YAML Format, das CodeBuild zum Ausführen eines Builds verwendet wird. Ohne eine Build-Spezifikation können Sie Ihre Build-Eingabe CodeBuild nicht erfolgreich in eine Build-Ausgabe konvertieren oder das Build-Ausgabeartefakt in der Build-Umgebung finden, um es in Ihren Ausgabe-Bucket hochzuladen.
Erstellen Sie diese Datei, benennen Sie sie buildspec.yml
und speichern Sie sie im Stammverzeichnis (oberste Ebene).
version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
Wichtig
Da eine Build-Spezifikations-Deklaration gültig sein mussYAML, ist der Abstand in einer Build-Spezifikations-Deklaration wichtig. Wenn die Anzahl der Leerzeichen in der Build-Spezifikationsdeklaration nicht mit dieser übereinstimmt, schlägt der Build ggf. sofort fehl. Sie können einen YAML Validator verwenden, um zu testen, ob Ihre Build-Spezifikationsdeklaration gültig ist. YAML
Anmerkung
Statt eine Build-Spezifikationsdatei in Ihren Quellcode einzuschließen, können Sie Build-Befehle beim Erstellen eines Build-Projekts separat deklarieren. Das ist hilfreich, wenn Sie Ihren Quellcode mit unterschiedlichen Build-Befehlen erstellen möchten, ohne jedes Mal das Quellcode-Repository zu aktualisieren. Weitere Informationen finden Sie unter Syntax der Build-Spezifikation.
In dieser Build-Spezifikationsdeklaration gilt:
-
version
steht für die Version des verwendeten Build-Spezifikationsstandards. Diese Build-Spezifikationsdeklaration verwendet die aktuelle Version,0.2
. -
phases
steht für die Buildphasen, in denen Sie Befehle ausführen können. CodeBuild Diese Build-Phasen sind hier alsinstall
,pre_build
,build
undpost_build
aufgelistet. Sie können die Schreibweise dieser Build-Phasennamen nicht ändern und Sie können keine zusätzlichen Build-Phasennamen erstellen.In diesem Beispiel wird der
mvn install
Befehl während derbuild
Phase CodeBuild ausgeführt. Dieser Befehl weist Apache Maven an, die Java-Klassendateien zu kompilieren, zu testen und die kompilierten Dateien in ein Build-Ausgabeartefakt zu verpacken. Der Vollständigkeit halber sind in diesem Beispiel einigeecho
-Befehle in jeder Build-Phase platziert. Wenn Sie sich später in diesem Tutorial detaillierte Informationen zum Build ansehen, können Sie anhand der Ausgabe dieserecho
Befehle besser verstehen, wie und in welcher Reihenfolge Befehle CodeBuild ausgeführt werden. (Auch wenn alle Build-Phasen in diesem Beispiel enthalten sind, müssen Sie nicht unbedingt eine Build-Phase einschließen, wenn Sie nicht vorhaben, während dieser Phase Befehle auszuführen.) CodeBuild Führt in jeder Buildphase jeden angegebenen Befehl nacheinander in der angegebenen Reihenfolge von Anfang bis Ende aus. -
artifacts
stellt den Satz von Build-Ausgabeartefakten dar, der in den Ausgabe-Bucket CodeBuild hochgeladen wird.files
steht für die Dateien, die in die Build-Ausgabe aufgenommen werden sollen. CodeBuild lädt die einzelnemessageUtil-1.0.jar
Datei hoch, die sich imtarget
entsprechenden Verzeichnis in der Build-Umgebung befindet. Der DateinamemessageUtil-1.0.jar
und der Verzeichnisnametarget
, unter denen Apache Maven Build-Ausgabeartefakte erstellt und speichert, gelten nur für dieses Beispiel. In Ihren eigenen Builds lauten diese Dateinamen und Verzeichnisse anders.
Weitere Informationen hierzu finden Sie unter Build-Spezifikationsreferenz.
An diesem Punkt sollte Ihre Dateistruktur wie folgt aussehen:
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Schritt 3: Erstellen Sie zwei S3-Buckets
(Vorheriger Schritt: Schritt 2: Erstellen Sie die Buildspec-Datei)
Auch wenn Sie einen einzelnen Bucket für dieses Tutorial verwenden können, ist mit zwei Buckets einfacher zu erkennen, woher die Build-Eingabe stammt und wohin die Build-Ausgabe geschrieben wird.
-
Einer dieser Buckets (Eingangs-Bucket) speichert die Build-Eingabe. In diesem Tutorial lautet der Name dieses Eingabe-Buckets
codebuild-
, wobeiregion-ID
-account-ID
-input-bucketregion-ID
ist die AWS Region des Buckets undaccount-ID
ist Ihre AWS Konto-ID. -
Der andere Bucket (Ausgabe-Bucket) nimmt die Build-Ausgabe auf. In diesem Tutorial ist der Name dieses Ausgabe-Buckets
codebuild-
.region-ID
-account-ID
-output-bucket
Wenn Sie andere Namen für diese Buckets gewählt haben, müssen Sie diese Namen im gesamten Tutorial verwenden.
Diese beiden Buckets müssen sich in derselben AWS Region wie Ihre Builds befinden. Wenn Sie beispielsweise angeben, dass ein CodeBuild Build in der Region USA Ost (Ohio) ausgeführt werden soll, müssen sich diese Buckets auch in der Region USA Ost (Ohio) befinden.
Weitere Informationen erhalten Sie unter Erstellen eines Buckets im Benutzerhandbuch für Amazon Simple Storage Service.
Anmerkung
Unterstützt zwar CodeBuild auch Build-Eingaben, die in CodeCommit, GitHub, und Bitbucket-Repositorys gespeichert sind, aber dieses Tutorial zeigt dir nicht, wie du sie benutzt. Weitere Informationen finden Sie unter Planen eines Builds.
Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei
(Vorheriger Schritt: Schritt 3: Erstellen Sie zwei S3-Buckets)
In diesem Schritt fügen Sie den Quellcode und die Build-Spezifikationsdatei zum Empfangs-Bucket hinzu.
Erstellen Sie mit dem ZIP-Dienstprogramm Ihres Betriebssystems eine Datei namens MessageUtil.zip
, die MessageUtil.java
, TestMessageUtil.java
, pom.xml
und buildspec.yml
enthält.
Die Verzeichnisstruktur der Datei MessageUtil.zip
muss wie folgt aussehen:
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Wichtig
Schließen Sie nicht das Verzeichnis
ein, sondern nur die Verzeichnisse und Dateien, die im Verzeichnis (root directory name)
enthalten sind.(root directory name)
Laden Sie die Datei MessageUtil.zip
in den Empfangs-Bucket namens codebuild-
. region-ID
-account-ID
-input-bucket
Wichtig
Für CodeCommit GitHub ,- und Bitbucket-Repositorys müssen Sie laut Konvention eine Build-Spezifikationsdatei speichern, die buildspec.yml
im Stammverzeichnis (oberste Ebene) jedes Repositorys benannt ist, oder die Build-Spezifikationsdeklaration als Teil der Build-Projektdefinition hinzufügen. Erstelle keine ZIP Datei, die den Quellcode und die Build-Spezifikationsdatei des Repositorys enthält.
Für Build-Eingaben, die nur in S3-Buckets gespeichert sind, müssen Sie eine ZIP Datei erstellen, die den Quellcode und, wie üblich, eine Build-Spezifikationsdatei enthält, die buildspec.yml
im Stammverzeichnis (oberste Ebene) benannt ist, oder die Build-Spezifikationsdeklaration als Teil der Build-Projektdefinition einbeziehen.
Wenn Sie einen anderen Namen für Ihre Build-Spezifikationsdatei verwenden oder auf eine Build-Spezifikation verweisen möchten, die nicht im Stammverzeichnis gespeichert ist, können Sie eine Überschreibung der Build-Spezifikation im Rahmen der Build-Projektdefinition angeben. Weitere Informationen finden Sie unter Dateiname der Build-Spezifikation und Speicherort.
Schritt 5: Erstellen des Build-Projekts
(Vorheriger Schritt: Schritt 4: Hochladen des Quellcodes und der Build-Spezifikationsdatei)
In diesem Schritt erstellen Sie ein Build-Projekt, das zur Ausführung des Builds AWS CodeBuild verwendet wird. Ein Build-Projekt enthält Informationen darüber, wie ein Build ausgeführt wird, einschließlich der Herkunft des Quellcodes, der zu verwendenden Build-Umgebung, der auszuführenden Build-Befehle und des Speicherorts der Build-Ausgabe. Eine Build-Umgebung stellt eine Kombination aus Betriebssystem, Programmiersprache, Runtime und Tools dar, mit denen CodeBuild ein Build ausgeführt wird. Die Build-Umgebung wird als Docker-Image ausgedrückt. Weitere Informationen finden Sie unter Docker Overview
Für diese Build-Umgebung weisen Sie an, ein Docker-Image CodeBuild zu verwenden, das eine Version des Java Development Kit (JDK) und Apache Maven enthält.
So erstellen Sie ein Build-Projekt
-
Verwenden Sie den AWS CLI , um den Befehl auszuführen: create-project
aws codebuild create-project --generate-cli-skeleton
JSON-formatierte Daten werden in der Ausgabe angezeigt. Kopieren Sie die Daten
create-project.json
in eine Datei mit dem Namen eines Speicherorts auf dem lokalen Computer oder der Instanz, in der der installiert AWS CLI ist. Wenn Sie einen anderen Dateinamen verwenden, muss dieser Name im gesamten Tutorial verwendet werden.Ändern Sie die kopierten Daten entsprechend dem nachfolgenden Format und speichern Sie die Ergebnisse:
{ "name": "codebuild-demo-project", "source": { "type": "S3", "location": "codebuild-
region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole
" }Ersetzen
serviceIAMRole
mit dem Amazon-Ressourcennamen (ARN) einer CodeBuild Servicerolle (z. B.arn:aws:iam::
). Informationen zum Erstellen finden Sie unter Erlaube CodeBuild die Interaktion mit anderen AWS Diensten.account-ID
:role/role-name
In diesen Daten:
-
name
stellt eine erforderliche ID für dieses Build-Projekt dar (in diesem Beispielcodebuild-demo-project
). Build-Projektnamen müssen in allen Build-Projekten in Ihrem Konto eindeutig sein. -
For
type
ist ein erforderlicher Wertsource
, der den Repository-Typ des Quellcodes darstellt (in diesem BeispielS3
für einen Amazon S3 S3-Bucket). -
For
source
location
steht für den Pfad zum Quellcode (in diesem Beispiel der Name des Eingabe-Buckets, gefolgt vom ZIP Dateinamen). -
For
type
ist ein erforderlicher Wertartifacts
, der den Repository-Typ des Build-Ausgabeartefakts darstellt (in diesem BeispielS3
für einen Amazon S3 S3-Bucket). -
Für
artifacts
stelltlocation
den Namen des Ausgabe-Buckets dar, den Sie zuvor erstellt oder definiert haben (in diesem Beispielcodebuild-
).region-ID
-account-ID
-output-bucket -
For
environment
type
ist ein erforderlicher Wert, der den Typ der Build-Umgebung darstellt (in diesem BeispielLINUX_CONTAINER
). -
For
image
ist ein erforderlicher Wertenvironment
, der die Kombination aus Docker-Image-Name und -Tag darstellt, die dieses Build-Projekt verwendet, wie durch den Docker-Image-Repository-Typ angegeben (in diesem Beispielaws/codebuild/standard:5.0
für ein Docker-Image im CodeBuild Docker-Images-Repository).aws/codebuild/standard
ist der Name des Docker-Images.5.0
ist das Tag des Docker-Images.Weitere Docker-Images, die Sie in Ihren Szenarien verwenden können, finden Sie unter Build-Umgebungsreferenz.
-
For
environment
computeType
ist ein erforderlicher Wert, der die CodeBuild verwendeten Rechenressourcen darstellt (in diesem BeispielBUILD_GENERAL1_SMALL
).
Anmerkung
Andere verfügbare Werte in den ursprünglich JSON -formatierten Daten, wie
description
,auth
(einschließlichtype
undresource
)buildspec
,, (für)path
namespaceType
,name
(einschließlich undartifacts
),packaging
, undenvironmentVariables
(einschließlichname
undvalue
),timeoutInMinutes
encryptionKey
, undtags
(einschließlichkey
undvalue
) sind optional. Sie werden in diesem Tutorial nicht verwendet und deshalb hier nicht aufgelistet. Weitere Informationen finden Sie unter Erstellen eines Build-Projekts (AWS CLI). -
-
Wechseln Sie in das Verzeichnis, das die soeben gespeicherte Datei enthält, und führen Sie den Befehl create-project erneut aus.
aws codebuild create-project --cli-input-json file://create-project.json
Ist der Befehl erfolgreich, gibt er als Ausgabe Daten zurück, die wie folgt aussehen sollten.
{ "project": { "name": "codebuild-demo-project", "serviceRole": "
serviceIAMRole
", "tags": [], "artifacts": { "packaging": "NONE", "type": "S3", "location": "codebuild-region-ID
-account-ID
-output-bucket", "name": "message-util.zip" }, "lastModified": 1472661575.244, "timeoutInMinutes": 60, "created": 1472661575.244, "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "encryptionKey": "arn:aws:kms:region-ID
:account-ID
:alias/aws/s3", "arn": "arn:aws:codebuild:region-ID
:account-ID
:project/codebuild-demo-project" } }-
project
enthält Informationen zu diesem Build-Projekt.-
tags
stellt alle deklarierten Tags dar. -
packaging
gibt an, wie die Build-Ausgabeartefakte im Ausgabe-Bucket gespeichert werden.NONE
bedeutet, dass ein Ordner im Ausgabe-Bucket erstellt wird. Das Build-Ausgabeartefakt wir in diesem Ordner gespeichert. -
lastModified
zeigt die Uhrzeit der letzten Änderung des Build-Projekts im Unix-Zeitformat an. -
timeoutInMinutes
steht für die Anzahl der Minuten, nach denen der Build CodeBuild beendet wird, falls der Build noch nicht abgeschlossen wurde. (Der Standardwert ist 60 Minuten.) -
created
zeigt die Uhrzeit der Erstellung des Build-Projekts im Unix-Zeitformat an. -
environmentVariables
steht für alle Umgebungsvariablen, die deklariert wurden und während des Builds verwendet werden können. CodeBuild -
encryptionKey
steht für den ARN vom Kunden verwalteten Schlüssel, der zur Verschlüsselung des Build-Ausgabeartefakts CodeBuild verwendet wurde. -
arn
steht für den ARN des Build-Projekts.
-
-
Anmerkung
Nachdem Sie den create-project Befehl ausgeführt haben, wird möglicherweise eine Fehlermeldung ähnlich der folgenden ausgegeben: Benutzer: user-ARN
ist nicht autorisiert, Folgendes auszuführen: codebuild: CreateProject. Dies liegt höchstwahrscheinlich daran, dass Sie das AWS CLI mit den Anmeldeinformationen eines Benutzers konfiguriert haben, der nicht über ausreichende Berechtigungen CodeBuild zum Erstellen von Build-Projekten verfügt. Um dieses Problem zu beheben, konfigurieren Sie das AWS CLI
mit Anmeldeinformationen, die zu einer der folgenden IAM Entitäten gehören:
-
Ein Administratorbenutzer in Ihrem AWS Konto. Weitere Informationen finden Sie im Benutzerhandbuch unter Erstellen Ihres ersten AWS-Konto Root-Benutzers und Ihrer ersten Root-Gruppe.
-
Ein Benutzer in Ihrem AWS Konto mit den
IAMFullAccess
verwalteten RichtlinienAWSCodeBuildAdminAccess
AmazonS3ReadOnlyAccess
,, die diesem Benutzer oder einer IAM Gruppe zugeordnet sind, der der Benutzer angehört. Wenn Sie in Ihrem AWS Konto keinen Benutzer oder keine Gruppe mit diesen Berechtigungen haben und Sie diese Berechtigungen Ihrem Benutzer oder Ihrer Gruppe nicht hinzufügen können, wenden Sie sich an Ihren AWS Kontoadministrator, um Unterstützung zu erhalten. Weitere Informationen finden Sie unter AWS verwaltete (vordefinierte) Richtlinien für AWS CodeBuild.
Schritt 6: Ausführen des Builds
(Vorheriger Schritt: Schritt 5: Erstellen des Build-Projekts)
In diesem Schritt weisen Sie an AWS CodeBuild , den Build mit den Einstellungen im Build-Projekt auszuführen.
So führen Sie den Build aus
-
Verwenden Sie den AWS CLI , um den start-build Befehl auszuführen:
aws codebuild start-build --project-name
project-name
Ersetzen
project-name
mit dem Namen Ihres Build-Projekts aus dem vorherigen Schritt (zum Beispielcodebuild-demo-project
). -
Ist der Befehl erfolgreich, gibt er als Ausgabe Daten zurück, die wie folgt aussehen sollten:
{ "build": { "buildComplete": false, "initiator": "
user-name
", "artifacts": { "location": "arn:aws:s3:::codebuild-region-ID
-account-ID
-output-bucket/message-util.zip" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "buildStatus": "IN_PROGRESS", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "currentPhase": "SUBMITTED", "startTime": 1472848787.882, "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE", "arn": "arn:aws:codebuild:region-ID
:account-ID
:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE" } }-
build
enthält Informationen zu diesem Build.-
buildComplete
gibt an, ob der Build abgeschlossen wurde (true
). Andernfallsfalse
. -
initiator
steht für die Entität, die den Build gestartet hat. -
artifacts
enthält Informationen über die Build-Ausgabe, einschließlich Speicherort. -
projectName
zeigt den Namen des Build-Projekts an. -
buildStatus
stellt den aktuellen Build-Status dar, wenn der start-build-Befehl ausgeführt wurde. -
currentPhase
stellt die aktuelle Build-Phase dar, wenn der start-build-Befehl ausgeführt wurde. -
startTime
zeigt die Uhrzeit für den Start des Build-Prozesses im Unix-Zeitformat an. -
id
enthält die Build-ID. -
arn
steht für den ARN des Builds.
-
Notieren Sie sich den Wert für die
id
. Sie benötigen ihn im nächsten Schritt. -
Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen
(Vorheriger Schritt: Schritt 6: Ausführen des Builds)
In diesem Schritt zeigen Sie eine Zusammenfassung der Informationen über den Build-Status an.
So zeigen Sie eine Zusammenfassung der Build-Informationen an
-
Verwenden Sie den AWS CLI , um den batch-get-builds Befehl auszuführen.
aws codebuild batch-get-builds --ids
id
Ersetzen
id
mit demid
Wert, der in der Ausgabe des vorherigen Schritts angezeigt wurde.Ist der Befehl erfolgreich, gibt er als Ausgabe Daten zurück, die wie folgt aussehen sollten.
{ "buildsNotFound": [], "builds": [ { "buildComplete": true, "phases": [ { "phaseStatus": "SUCCEEDED", "endTime": 1472848788.525, "phaseType": "SUBMITTED", "durationInSeconds": 0, "startTime": 1472848787.882 },
... The full list of build phases has been omitted for brevity ...
{ "phaseType": "COMPLETED", "startTime": 1472848878.079 } ], "logs": { "groupName": "/aws/codebuild/codebuild-demo-project", "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" }, "artifacts": { "md5sum": "MD5-hash
", "location": "arn:aws:s3:::codebuild-region-ID
-account-ID
-output-bucket/message-util.zip", "sha256sum": "SHA-256-hash
" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "initiator": "user-name
", "buildStatus": "SUCCEEDED", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID
-account-ID
-input-bucket/MessageUtil.zip" }, "currentPhase": "COMPLETED", "startTime": 1472848787.882, "endTime": 1472848878.079, "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "arn": "arn:aws:codebuild:region-ID
:account-ID
:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" } ] }-
buildsNotFound
stellt den Build IDs für alle Builds dar, für die keine Informationen verfügbar sind. In diesem Beispiel sollte dies leer sein. -
builds
zeigt die Informationen für alle Builds an, für die Informationen verfügbar sind. In diesem Beispiel sollten nur über einen Build Informationen in der Ausgabe angezeigt werden.-
phases
steht für den Satz von Build-Phasen, die während des Build-Prozesses CodeBuild ausgeführt werden. Informationen über die einzelnen Build-Phasen werden separat alsstartTime
,endTime
unddurationInSeconds
aufgelistet (wann die Build-Phase gestartet und beendet wurde, im Unix-Zeitformat, und wie lange sie in Sekunden gedauert hat) sowie derphaseType
(z. B.SUBMITTED
,PROVISIONING
,DOWNLOAD_SOURCE
,INSTALL
,PRE_BUILD
,BUILD
,POST_BUILD
,UPLOAD_ARTIFACTS
,FINALIZING
oderCOMPLETED
) undphaseStatus
(z. B.SUCCEEDED
,FAILED
,FAULT
,TIMED_OUT
,IN_PROGRESS
oderSTOPPED
). Wenn Sie den Befehl batch-get-builds zum ersten Mal ausführen, sind möglicherweise nicht viele (oder gar keine) Phasen vorhanden. Nach mehrmaligem Ausführen des Befehls batch-get-builds mit derselben Build-ID sollten mehr Build-Phasen in der Ausgabe angezeigt werden. -
logs
stellt Informationen in Amazon CloudWatch Logs über die Logs des Builds dar. -
md5sum
MD5undsha256sum
repräsentieren SHA -256 Hashes des Ausgabeartefakts des Builds. Diese werden nur dann in der Ausgabe angezeigt, wenn derpackaging
-Wert des Build-Projekts aufZIP
gesetzt ist. (Sie haben diesen Wert nicht in diesem Tutorial festgelegt.) Sie können die Hash-Werte zusammen mit dem Prüfsummen-Tool verwenden, um die Dateiintegrität und die Authentizität zu bestätigen.Anmerkung
Sie können diese Hashes auch mit der Amazon S3 S3-Konsole anzeigen. Aktivieren Sie das Kontrollkästchen neben dem Build-Ausgabeartefakt. Wählen Sie dann Actions (Aktionen) und schließlich Properties (Eigenschaften) aus. Erweitern Sie im Eigenschaftenbereich die Option Metadaten und sehen Sie sich die Werte für x-amz-meta-codebuild-content-md5 und -content-sha256 an. x-amz-meta-codebuild (In der Amazon S3 S3-Konsole sollte der ETagWert des Build-Ausgabeartefakts weder als Hash noch als SHA -256-Hash interpretiert werden.) MD5
Wenn Sie die verwenden AWS SDKs, um diese Hashes abzurufen, heißen die Werte und.
codebuild-content-md5
codebuild-content-sha256
-
endTime
zeigt die Uhrzeit für das Ende des Build-Prozesses im Unix-Zeitformat an.
-
Anmerkung
Amazon S3-Metadaten haben einen CodeBuild Header mit
x-amz-meta-codebuild-buildarn
dem Namen,buildArn
der den CodeBuild Build enthält, der Artefakte in Amazon S3 veröffentlicht. DerbuildArn
wurde hinzugefügt, um die Quellenverfolgung für Benachrichtigungen zu ermöglichen und um zu referenzieren, aus welchem Build das Artefakt generiert wurde. -
Schritt 8: Anzeigen der detaillierten Build-Informationen
(Vorheriger Schritt: Schritt 7: Anzeigen der Zusammenfassung der Build-Informationen)
In diesem Schritt sehen Sie sich detaillierte Informationen zu Ihrem Build in CloudWatch Logs an.
Anmerkung
Um vertrauliche Informationen zu schützen, sind die folgenden Informationen in den CodeBuild Protokollen versteckt:
-
AWS ZugriffsschlüsselIDs. Weitere Informationen finden Sie im Benutzerhandbuch unter Verwaltung von Zugriffsschlüsseln für IAM AWS Identity and Access Management Benutzer.
-
Mit dem Parameter Store angegebene Zeichenfolgen. Weitere Informationen finden Sie unter Systems Manager Parameter Store und Systems Manager Parameter Store Console Walkthrough im Amazon EC2 Systems Manager Manager-Benutzerhandbuch.
-
Zeichenketten, die mit angegeben wurden AWS Secrets Manager. Weitere Informationen finden Sie unter Schlüsselverwaltung.
So zeigen Sie detaillierte Build-Informationen an
-
Wechseln Sie in Ihrem Webbrowser zum
deepLink
-Speicherort, der in der Ausgabe des vorherigen Schrittes angezeigt wurde (beispielsweisehttps://console.aws.amazon.com/cloudwatch/home?region=
).region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE -
Im CloudWatch Log-Log-Stream können Sie die Protokollereignisse durchsuchen. Standardmäßig werden nur die letzten Protokollereignisse angezeigt. Um ältere Protokollereignisse anzuzeigen, blättern Sie zum Anfang der Liste.
-
In diesem Tutorial enthalten die meisten Protokollereignisse ausführliche Informationen zum CodeBuild Herunterladen und Installieren von Build-Abhängigkeitsdateien in der Build-Umgebung, was Ihnen wahrscheinlich egal ist. Sie können die angezeigten Informationen über das Feld Filter events reduzieren. Wenn Sie beispielsweise
"[INFO]"
in das Feld Filter events (Ereignisse filtern) eingeben, werden nur Ereignisse angezeigt, die[INFO]
enthalten. Weitere Informationen finden Sie unter Filter- und Mustersyntax im CloudWatch Amazon-Benutzerhandbuch.
Diese Teile eines CloudWatch Logs-Log-Streams beziehen sich auf dieses Tutorial.
... [Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase... [Container] 2016/04/15 17:49:42 Entering pre_build phase... [Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true [Container] 2016/04/15 17:49:42 Entering phase BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering build phase... [Container] 2016/04/15 17:49:42 Entering build phase... [Container] 2016/04/15 17:49:42 Running command mvn install [Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... [Container] 2016/04/15 17:49:44 [INFO] [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ ... [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 T E S T S [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 Running TestMessageUtil [Container] 2016/04/15 17:49:55 Inside testSalutationMessage() [Container] 2016/04/15 17:49:55 Hi!Robert [Container] 2016/04/15 17:49:55 Inside testPrintMessage() [Container] 2016/04/15 17:49:55 Robert [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Results : [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 ... [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s [Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 [Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true [Container] 2016/04/15 17:49:56 Entering phase POST_BUILD [Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... [Container] 2016/04/15 17:49:56 Entering post_build phase... [Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true [Container] 2016/04/15 17:49:57 Preparing to copy artifacts [Container] 2016/04/15 17:49:57 Assembling file list [Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Creating zip artifact
In diesem Beispiel wurden die Phasen Pre-Build, Build und Post-Build CodeBuild erfolgreich abgeschlossen. Es hat die Komponententests ausgeführt und die Datei messageUtil-1.0.jar
erfolgreich erstellt.
Schritt 9: Abrufen des Build-Ausgabeartefakts
(Vorheriger Schritt: Schritt 8: Anzeigen der detaillierten Build-Informationen)
In diesem Schritt erhalten Sie die messageUtil-1.0.jar
Datei, die CodeBuild erstellt und in den Ausgabe-Bucket hochgeladen wurde.
Sie können die CodeBuild Konsole oder die Amazon S3 S3-Konsole verwenden, um diesen Schritt abzuschließen.
Um das Build-Ausgabeartefakt (AWS CodeBuild Konsole) abzurufen
-
Wenn die CodeBuild Konsole noch geöffnet ist und die Seite mit den Build-Details aus dem vorherigen Schritt weiterhin angezeigt wird, wählen Sie den Tab Build-Details und scrollen Sie nach unten zum Abschnitt Artefakte.
Anmerkung
Wenn die Seite mit den Build-Details nicht angezeigt wird, wählen Sie in der Navigationsleiste Build history und dann den Link Build run aus.
-
Der Link zum Amazon S3 S3-Ordner befindet sich unter dem Upload-Speicherort für Artefakte. Dieser Link öffnet den Ordner in Amazon S3, in dem Sie die
messageUtil-1.0.jar
Build-Ausgabeartefaktdatei finden.
Um das Build-Ausgabeartefakt abzurufen (Amazon S3 S3-Konsole)
Öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/
. -
Öffnen Sie
codebuild-
.region-ID
-account-ID
-output-bucket -
Öffnen Sie das Verzeichnis
codebuild-demo-project
. -
Öffnen Sie den Ordner
target
, in dem Sie die Build-AusgabeartefaktdateimessageUtil-1.0.jar
finden.
Schritt 10: Löschen Sie die S3-Buckets
(Vorheriger Schritt: Schritt 9: Abrufen des Build-Ausgabeartefakts)
Um zu verhindern, dass Ihr AWS Konto ständig belastet wird, können Sie die in diesem Tutorial verwendeten Eingabe- und Ausgabe-Buckets löschen. Anweisungen finden Sie unter Löschen oder Entleeren eines Buckets im Amazon Simple Storage Service-Benutzerhandbuch.
Wenn Sie den IAM Benutzer oder einen IAM Administratorbenutzer verwenden, um diese Buckets zu löschen, benötigt der Benutzer mehr Zugriffsberechtigungen. Fügen Sie zwischen den Markierungen die folgende Anweisung ein (### BEGIN ADDING STATEMENT HERE ###
and ### END
ADDING STATEMENTS HERE ###
) zu einer bestehenden Zugriffsrichtlinie für den Benutzer.
Die Ellipsen (...) in dieser Anweisung dienen der Übersichtlichkeit der Darstellung. Entfernen Sie keine Anweisungen aus der vorhandenen Zugriffsrichtlinie. Geben Sie keine Auslassungspunkte in die Richtlinie ein.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Nachbearbeitung
In diesem Tutorial haben Sie früher eine Reihe von Java-Klassendateien AWS CodeBuild zu einer JAR Datei zusammengebaut. Anschließend haben Sie die Build-Ergebnisse angezeigt.
Sie können jetzt versuchen, es CodeBuild in Ihren eigenen Szenarien zu verwenden. Folgen Sie den Anweisungen in Planen eines Builds. Wenn Sie dazu noch nicht bereit sind, können Sie einige der Beispiele als Build erstellen. Weitere Informationen finden Sie unter Anwendungsfallbasierte Beispiele für CodeBuild.