Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Guida introduttiva con CodeBuild
Nei seguenti tutorial, viene utilizzato AWS CodeBuild per creare una raccolta di file di input di codice sorgente di esempio in una versione distribuibile del codice sorgente.
Entrambi i tutorial hanno lo stesso input e gli stessi risultati, ma uno utilizza la AWS CodeBuild console e l'altro utilizza la. AWS CLI
Importante
Non è consigliabile utilizzare l'account AWS root per completare questo tutorial.
Argomenti
Guida introduttiva all' AWS CodeBuild utilizzo della console
In questo tutorial, puoi AWS CodeBuild creare una raccolta di file di input di esempio del codice sorgente (build input artefact o build input) in una versione distribuibile del codice sorgente (build output artifact o build output). In particolare, si richiede di CodeBuild utilizzare Apache Maven, uno strumento di compilazione comune, per creare un set di file di classe Java in un file Java Archive (). JAR Non è necessario avere familiarità con Apache Maven o Java per completare questa procedura guidata.
È possibile utilizzare CodeBuild tramite la CodeBuild console, il AWS CodePipeline, o il AWS CLI. AWS SDKs Questo tutorial illustra come utilizzare la CodeBuild console. Per informazioni sull'utilizzo CodePipeline, vedereUsa CodeBuild con CodePipeline.
Importante
I passaggi di questo tutorial richiedono la creazione di risorse (ad esempio un bucket S3) che potrebbero comportare addebiti sul tuo AWS account. Questi includono eventuali addebiti per CodeBuild e per AWS risorse e azioni relative ad Amazon S3 e AWS KMS CloudWatch Logs. Per ulteriori informazioni, consulta AWS CodeBuild
i prezzi, i prezzi
Argomenti
- Fase 1: Creare il codice sorgente
- Fase 2: Creare il file buildspec
- Fase 3: Creare due bucket S3
- Fase 4: caricamento del codice di origine e del file buildspec
- Fase 5: creazione del progetto di compilazione
- Fase 6: esecuzione della compilazione
- Fase 7: visualizzazione del riepilogo delle informazioni sulla compilazione
- Fase 8: visualizzazione di informazioni dettagliate sulla compilazione
- Fase 9: generazione dell'artefatto di output della compilazione
- Passaggio 10: eliminare i bucket S3
- Wrapping
Fase 1: Creare il codice sorgente
(Parte di: Guida introduttiva all' AWS CodeBuild utilizzo della console)
In questo passaggio, crei il codice sorgente che desideri CodeBuild inserire nel bucket di output. Questo codice sorgente è composto da due file di classe Java e un file Apache Maven Project Object Model (). POM
-
In una directory vuota sul tuo computer o istanza locale, creare la struttura della directory.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Utilizzando un editor di testo a scelta, creare questo file, nominarlo
MessageUtil.java
e quindi salvarlo nella directorysrc/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; } }
Questo file di classe crea come output la stringa di caratteri che gli viene trasmessa. Il costruttore
MessageUtil
imposta la stringa di caratteri. Il metodoprintMessage
crea l'output. Il metodosalutationMessage
restituisceHi!
seguito dalla stringa di caratteri. -
Creare questo file, nominarlo
TestMessageUtil.java
e quindi salvarlo nella directory/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()); } }
Questo file di classe imposta la variabile
message
nella classeMessageUtil
suRobert
. Quindi effettua dei test per vedere se l'impostazione della variabilemessage
è riuscita controllando se le stringheRobert
eHi!Robert
sono visualizzate nell'output. -
Creare questo file, denominarlo
pom.xml
e salvarlo nella directory radice (primo livello).<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 utilizza le istruzioni in questo file per convertire i file
MessageUtil.java
eTestMessageUtil.java
in un file denominatomessageUtil-1.0.jar
, quindi per eseguire i test specificati.
A questo punto, la tua struttura di directory dovrebbe avere questo aspetto.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Fase 2: Creare il file buildspec
(Fase precedente: Fase 1: Creare il codice sorgente)
In questa fase, crei un file di specifica di compilazione. Un buildspec è una raccolta di comandi di compilazione e relative impostazioni, in YAML formato, che CodeBuild viene utilizzata per eseguire una build. Senza una specifica di compilazione, CodeBuild non è possibile convertire con successo l'input di build in output di build o individuare l'artefatto di output della build nell'ambiente di compilazione per caricarlo nel bucket di output.
Creare questo file, denominarlo buildspec.yml
e salvarlo nella directory radice (primo livello).
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
Importante
Poiché una dichiarazione di build spec deve essere validaYAML, la spaziatura in una dichiarazione di build spec è importante. Se il numero di spazi nella dichiarazione della specifica di compilazione non corrisponde a questo, la compilazione potrebbe non riuscire immediatamente. Puoi usare un YAML validatore per verificare se la tua dichiarazione di build spec è valida. YAML
Nota
Invece di includere un file di specifica di compilazione nel codice sorgente, è possibile dichiarare i comandi di compilazione separatamente al momento della creazione di un progetto di compilazione. Questa funzione è utile se si desidera creare il codice sorgente con diversi comandi di compilazione senza aggiornare ogni volta l'archivio del codice sorgente. Per ulteriori informazioni, consulta Sintassi buildspec.
In questa dichiarazione della specifica di compilazione:
-
version
rappresenta la versione dello standard di specifica di compilazione utilizzata. Questa dichiarazione della specifica di compilazione utilizza la versione più recente,0.2
. -
phases
rappresenta le fasi di compilazione durante le quali è possibile indicare di CodeBuild eseguire comandi. Queste fasi di compilazione sono elencate qui comeinstall
,pre_build
,build
epost_build
. Non puoi modificare l'ortografia dei nomi di queste fasi di compilazione e non puoi creare ulteriori nomi di fasi di compilazione.In questo esempio, durante la
build
fase, CodeBuild esegue ilmvn install
comando. Questo comando fornisce istruzioni a Apache Maven per compilare, testare e creare pacchetti dei file di classe Java in un artefatto di output della compilazione. Per completezza, in questo esempio alcuni comandiecho
sono posizionati in ciascuna fase di build. Quando visualizzerai informazioni dettagliate sulla build più avanti in questo tutorial, l'output di questiecho
comandi può aiutarti a capire meglio come vengono CodeBuild eseguiti i comandi e in quale ordine. Anche se tutte le fasi di compilazione sono incluse in questo esempio, non è necessario includere una fase di compilazione se non prevedi di eseguire comandi durante tale fase. Per ogni fase di compilazione, CodeBuild esegue ogni comando specificato, uno alla volta, nell'ordine elencato, dall'inizio alla fine. -
artifacts
rappresenta l'insieme di artefatti di output della build che CodeBuild vengono caricati nel bucket di output.files
rappresenta i file da includere nell'output della build. CodeBuild carica il singolomessageUtil-1.0.jar
file trovato nella directorytarget
relativa nell'ambiente di compilazione. Il nome del filemessageUtil-1.0.jar
e il nome della directorytarget
sono basati sul modo in cui Apache Maven crea e archivia elementi di output di compilazione unicamente per questo esempio. Nelle tue build, questi nomi di file e directory sono differenti.
Per ulteriori informazioni, consulta la Riferimento per buildspec.
A questo punto, la tua struttura di directory dovrebbe avere questo aspetto.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Fase 3: Creare due bucket S3
(Fase precedente: Fase 2: Creare il file buildspec)
Anche se è possibile utilizzare un singolo bucket per questo tutorial, due bucket consentono di comprendere più agevolmente la provenienza dell'input della build e la destinazione dell'output della build.
-
Uno di questi bucket archivia l'input di compilazione (il bucket di input) archivia l'input della build. In questo tutorial, il nome di questo bucket di input è, dove
codebuild-
region-ID
-account-ID
-input-bucketregion-ID
è la AWS regione del bucket eaccount-ID
è l'ID del tuo AWS account. -
L'altro bucket (il bucket di output) archivia l'output di compilazione. In questa esercitazione, il nome di questo bucket di output è
codebuild-
.region-ID
-account-ID
-output-bucket
Se hai scelto nomi diversi per questi bucket, assicurati di usarli in tutto questo tutorial.
Questi due bucket devono trovarsi nella stessa AWS regione delle tue build. Ad esempio, se si richiede di CodeBuild eseguire una build nella regione Stati Uniti orientali (Ohio), anche questi bucket devono trovarsi nella regione Stati Uniti orientali (Ohio).
Per ulteriori informazioni, consulta Creazione di un bucket nella Guida per l'utente di Amazon Simple Storage Service.
Nota
Sebbene supporti CodeBuild anche gli input di compilazione memorizzati nei CodeCommit repository e Bitbucket, questo tutorial non mostra come usarli. GitHub Per ulteriori informazioni, consulta Pianifica una compilazione.
Fase 4: caricamento del codice di origine e del file buildspec
(Fase precedente: Fase 3: Creare due bucket S3)
In questa fase, aggiungi il codice sorgente e il file di specifica di compilazione al bucket di input.
Utilizzando l'utilità zip del tuo sistema operativo, crea un file denominato MessageUtil.zip
che includa MessageUtil.java
, TestMessageUtil.java
, pom.xml
e buildspec.yml
.
La struttura di directory del file MessageUtil.zip
deve avere il seguente aspetto.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Importante
Non includere la directory
, ma solo le directory e i file contenuti nella directory (root directory name)
.(root directory name)
Carica il file MessageUtil.zip
nel bucket di input denominato codebuild-
. region-ID
-account-ID
-input-bucket
Importante
Per i repository Bitbucket CodeCommit GitHub, per convenzione, è necessario memorizzare un file di specifiche di build denominato buildspec.yml
nella radice (livello superiore) di ciascun repository o includere la dichiarazione delle specifiche di compilazione come parte della definizione del progetto di compilazione. Non create un ZIP file che contenga il codice sorgente del repository e il file delle specifiche di build.
Per l'input di build memorizzato solo nei bucket S3, devi creare un ZIP file che contenga il codice sorgente e, per convenzione, un file delle specifiche di build denominato buildspec.yml
alla radice (livello superiore) o includere la dichiarazione delle specifiche di compilazione come parte della definizione del progetto di compilazione.
Se si desidera utilizzare un nome diverso per il file della specifica di compilazione, oppure se si desidera fare riferimento a una specifica di compilazione in un percorso diverso da quello principale, è possibile specificare una sostituzione della specifica di compilazione come parte della definizione del progetto di compilazione. Per ulteriori informazioni, consulta Nome del file buildspec e posizione di storage.
Fase 5: creazione del progetto di compilazione
(Fase precedente: Fase 4: caricamento del codice di origine e del file buildspec)
In questo passaggio, crei un progetto di compilazione che AWS CodeBuild utilizza per eseguire la build. Un progetto di compilazione include informazioni su come eseguire una build, tra cui dove trovare il codice sorgente, quale ambiente di compilazione utilizzare, quali comandi di compilazione eseguire e dove archiviare l'output della build. Un ambiente di compilazione rappresenta una combinazione di sistema operativo, linguaggio di programmazione, runtime e strumenti CodeBuild utilizzati per eseguire una build. L'ambiente di compilazione è espresso come immagine Docker. Per ulteriori informazioni, consulta l'argomento relativo alla panoramica del Docker
Per questo ambiente di compilazione, si richiede di CodeBuild utilizzare un'immagine Docker che contenga una versione di Java Development Kit (JDK) e Apache Maven.
Per creare il progetto build
-
Usa il selettore di AWS regione per scegliere una AWS regione in cui è supportata. CodeBuild Per ulteriori informazioni, consulta Endpoint e quote AWS CodeBuild nella Riferimenti generali di Amazon Web Services.
Se viene visualizzata una pagina di CodeBuild informazioni, scegli Crea progetto di compilazione. Altrimenti, nel riquadro di navigazione, espandi Crea, scegli Crea progetti, quindi scegli Crea progetto di compilazione.
-
Nella pagina Create build project (Crea progetto di compilazione), in Project Configuration (Configurazione progetto), per Project name (Nome progetto), immetti un nome per questo progetto di compilazione (in questo esempio,
codebuild-demo-project
). I nomi dei progetti di compilazione devono essere univoci per ogni AWS account. Se scegli un nome differente, assicurati di utilizzarlo in tutto il tutorial.Nota
Nella pagina Create build project (Crea progetto di compilazione), può comparire un messaggio di errore simile al seguente: You are not authorized to perform this operation (Non sei autorizzato a eseguire questa operazione). Ciò è probabilmente dovuto al fatto che hai effettuato l'accesso AWS Management Console come utente che non dispone delle autorizzazioni per creare un progetto di compilazione. Per risolvere questo problema, esci da AWS Management Console, quindi accedi nuovamente con le credenziali appartenenti a una delle seguenti entità: IAM
-
Un utente amministratore del tuo AWS account. Per ulteriori informazioni, consulta Creazione del primo utente e gruppo Account AWS root nella Guida per l'utente.
-
Un utente del tuo AWS account con
AWSCodeBuildAdminAccess
leAmazonS3ReadOnlyAccess
politicheIAMFullAccess
gestite associate a quell'utente o a un IAM gruppo a cui l'utente appartiene. Se nel tuo AWS account non hai un utente o un gruppo con queste autorizzazioni e non riesci ad aggiungere queste autorizzazioni al tuo utente o gruppo, contatta l'amministratore dell' AWS account per ricevere assistenza. Per ulteriori informazioni, consulta AWS politiche gestite (predefinite) per AWS CodeBuild.
Entrambe le opzioni includono le autorizzazioni di amministratore che consentono di creare un progetto di compilazione in modo da poter completare questo tutorial. È consigliabile utilizzare sempre le autorizzazioni minime necessarie per eseguire l'attività. Per ulteriori informazioni, consulta AWS CodeBuild riferimento alle autorizzazioni.
-
-
In Source, come provider di origine, scegli Amazon S3.
-
Per Bucket, scegli codebuild-
region-ID
-account-ID
-bucket di input. -
Per S3 object key (Chiave oggetto S3), immettere
MessageUtil.zip
. -
In Environment (Ambiente), per Environment image (Immagine ambiente), lasciare selezionato Managed image (Immagine gestita).
-
Per il sistema operativo, scegli Amazon Linux.
-
In Runtime(s) (Runtime), seleziona Standard.
-
Per Image, scegli aws/codebuild/amazonlinux2-x86_64-standard:corretto11.
-
Alla voce Service role (Ruolo del servizio), lasciare selezionato New service role (Nuovo ruolo del servizio) e lasciare immutata la voce Role name (Nome ruolo).
-
Per Buildspec (Specifica di compilazione), lasciare selezionata l'opzione Use a buildspec file (Utilizza un file buildspec).
-
In Artifacts, per Tipo, scegli Amazon S3.
-
Per il nome di Bucket, scegli codebuild-
region-ID
-account-ID
-bucket di uscita. -
Lasciare vuoti i campi Name (Nome) e Path (Percorso).
-
Scegliere Create build project (Crea progetto di compilazione).
Fase 6: esecuzione della compilazione
(Fase precedente: Fase 5: creazione del progetto di compilazione)
In questo passaggio, si ordina di eseguire la build con AWS CodeBuild le impostazioni del progetto di compilazione.
Per eseguire la build
Apri la AWS CodeBuild console su https://console.aws.amazon.com/codesuite/codebuild/home
. -
Nel riquadro di navigazione, scegliere Build projects (Progetti di compilazione).
-
Nell'elenco dei progetti di compilazione, scegli codebuild-demo-project, quindi scegli Avvia compilazione. La compilazione viene avviata immediatamente.
Fase 7: visualizzazione del riepilogo delle informazioni sulla compilazione
(Fase precedente: Fase 6: esecuzione della compilazione)
In questa fase, visualizzi un riepilogo delle informazioni sullo stato della compilazione.
Per visualizzare un riepilogo delle informazioni sulla compilazione
-
Se il codebuild-demo-project:
<build-ID>
la pagina non viene visualizzata, nella barra di navigazione, scegli Costruisci cronologia. Successivamente, nell'elenco dei progetti di compilazione, per Project, scegli il link Build run per codebuild-demo-project. Deve esserci un solo collegamento corrispondente. Se è stata completato questo tutorial in precedenza, scegliere il collegamento con il valore più recente nella colonna Completed (Completato). -
Nella pagina di stato della compilazione, nei dettagli della fase, devono essere visualizzate le seguenti fasi di compilazione, con Succeeded nella colonna Stato:
-
SUBMITTED
-
QUEUED
-
PROVISIONING
-
DOWNLOAD_SOURCE
-
INSTALL
-
PRE_BUILD
-
BUILD
-
POST_BUILD
-
UPLOAD_ARTIFACTS
-
FINALIZING
-
COMPLETED
In Build Status (Stato della compilazione), deve essere visualizzato Succeeded (Riuscito).
Se invece viene visualizzato In Progress (In corso), scegliere il pulsante di aggiornamento.
-
-
Accanto a ogni fase di build, il valore Duration (Durata) indica la durata della fase di build. Il valore End time (Ora fine) indica il momento in cui è terminata quella fase di build.
Fase 8: visualizzazione di informazioni dettagliate sulla compilazione
(Fase precedente: Fase 7: visualizzazione del riepilogo delle informazioni sulla compilazione)
In questo passaggio, visualizzerai informazioni dettagliate sulla tua build in CloudWatch Logs.
Nota
Per proteggere le informazioni riservate, nei CodeBuild log sono nascoste le seguenti informazioni:
-
AWS chiave IDs di accesso. Per ulteriori informazioni, vedere Gestione delle chiavi di accesso per IAM gli utenti nella Guida per l'AWS Identity and Access Management utente.
-
Stringhe specificate utilizzando l'archivio parametri. Per ulteriori informazioni, consulta la procedura dettagliata della console di Systems Manager Parameter Store e Systems Manager Parameter Store nella Guida per l'utente di Amazon EC2 Systems Manager.
-
Stringhe specificate utilizzando. AWS Secrets Manager Per ulteriori informazioni, consulta Gestione delle chiavi.
Per visualizzare informazioni dettagliate sulla compilazione
-
Con la pagina dei dettagli della compilazione ancora visualizzata dalla fase precedente, le ultime 10.000 righe del log di compilazione vengono visualizzate in Build logs (Log di compilazione). Per visualizzare l'intero registro di compilazione nei CloudWatch registri, scegli il link Visualizza l'intero registro.
-
Nel flusso di CloudWatch log di Logs, puoi sfogliare gli eventi di registro. Per impostazione predefinita, viene visualizzato solo l'ultimo set di eventi di log. Per visualizzare gli eventi di log precedenti, scorrere all'inizio dell'elenco.
-
In questo tutorial, la maggior parte degli eventi di registro contiene informazioni dettagliate sul CodeBuild download e l'installazione dei file di dipendenza della build nel relativo ambiente di compilazione, cosa che probabilmente non ti interessa. È possibile utilizzare la casella Filter events (Filtra eventi) per ridurre le informazioni visualizzate. Ad esempio, se si immette
"[INFO]"
in Filter events (Filtra eventi) vengono visualizzati solo gli eventi contenenti[INFO]
. Per ulteriori informazioni, consulta Filter and pattern syntax nella Amazon CloudWatch User Guide.
Fase 9: generazione dell'artefatto di output della compilazione
(Fase precedente: Fase 8: visualizzazione di informazioni dettagliate sulla compilazione)
In questo passaggio, ottieni il messageUtil-1.0.jar
file CodeBuild creato e caricato nel bucket di output.
Puoi utilizzare la CodeBuild console o la console Amazon S3 per completare questo passaggio.
Per ottenere l'artefatto di output della build (console)AWS CodeBuild
-
Con la CodeBuild console ancora aperta e la pagina dei dettagli della build ancora visualizzata nel passaggio precedente, scegli la scheda Dettagli della build e scorri verso il basso fino alla sezione Artefatti.
Nota
Se la pagina dei dettagli della build non è visualizzata, nella barra di navigazione, scegli Cronologia build, quindi scegli il link Build run.
-
Il link alla cartella Amazon S3 si trova nella posizione di caricamento degli artefatti. Questo collegamento apre la cartella in Amazon S3 in cui si trova il file degli artefatti di output della
messageUtil-1.0.jar
build.
Per ottenere l'elemento di output della build (console Amazon S3)
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Aprire
codebuild-
.region-ID
-account-ID
-output-bucket -
Aprire la cartella
codebuild-demo-project
. -
Aprire la cartella
target
, contenente il file dell'artefatto di output di compilazionemessageUtil-1.0.jar
.
Passaggio 10: eliminare i bucket S3
(Fase precedente: Fase 9: generazione dell'artefatto di output della compilazione)
Per evitare addebiti continui AWS sul tuo account, puoi eliminare i bucket di input e output utilizzati in questo tutorial. Per istruzioni, consulta Eliminare o svuotare un bucket nella Guida per l'utente di Amazon Simple Storage Service.
Se utilizzi l'IAMutente o un utente amministratore per eliminare questi bucket, IAM l'utente deve disporre di più autorizzazioni di accesso. Aggiungi la seguente dichiarazione tra i marker (### BEGIN ADDING STATEMENT HERE ###
e ### END
ADDING STATEMENTS HERE ###
) a una politica di accesso esistente per l'utente.
Le ellissi (...) in questa affermazione sono usate per brevità. Non rimuovere nessuna istruzione nella policy di accesso esistente. Non immettere queste ellissi nella policy.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Wrapping
In questo tutorial, creavi AWS CodeBuild un set di file di classe Java in un JAR file. Quindi hai visualizzato i risultati della compilazione.
Ora puoi provare a utilizzarlo CodeBuild nei tuoi scenari. Segui le istruzioni in Pianifica una compilazione. Se non ti senti ancora pronto, puoi provare a compilare alcuni degli esempi. Per ulteriori informazioni, consulta Usa esempi basati su casi per CodeBuild.
Guida introduttiva all' AWS CodeBuild utilizzo di AWS CLI
In questo tutorial, si utilizza AWS CodeBuild per creare una raccolta di file di input di codice sorgente di esempio (chiamati build input artifacts o build input) in una versione distribuibile del codice sorgente (chiamata build output artifact o build output). In particolare, si richiede di CodeBuild utilizzare Apache Maven, uno strumento di compilazione comune, per creare un set di file di classe Java in un file Java Archive (). JAR Non è necessario avere familiarità con Apache Maven o Java per completare questa procedura guidata.
È possibile utilizzare CodeBuild tramite la CodeBuild console, il AWS CodePipeline, o il AWS CLI. AWS SDKs Questo tutorial mostra come utilizzare CodeBuild con. AWS CLI Per informazioni sull'utilizzo CodePipeline, vedereUsa CodeBuild con CodePipeline.
Importante
I passaggi di questo tutorial richiedono la creazione di risorse (ad esempio un bucket S3) che potrebbero comportare addebiti sul tuo AWS account. Questi includono eventuali addebiti per CodeBuild e per AWS risorse e azioni relative ad Amazon S3 e AWS KMS CloudWatch Logs. Per ulteriori informazioni, consulta CodeBuildi prezzi, i prezzi
Argomenti
- Fase 1: Creare il codice sorgente
- Fase 2: Creare il file buildspec
- Fase 3: Creare due bucket S3
- Fase 4: caricamento del codice di origine e del file buildspec
- Fase 5: creazione del progetto di compilazione
- Fase 6: esecuzione della compilazione
- Fase 7: visualizzazione del riepilogo delle informazioni sulla compilazione
- Fase 8: visualizzazione di informazioni dettagliate sulla compilazione
- Fase 9: generazione dell'artefatto di output della compilazione
- Passaggio 10: eliminare i bucket S3
- Wrapping
Fase 1: Creare il codice sorgente
(Parte di: Guida introduttiva all' AWS CodeBuild utilizzo di AWS CLI)
In questo passaggio, crei il codice sorgente che desideri CodeBuild inserire nel bucket di output. Questo codice sorgente è composto da due file di classe Java e un file Apache Maven Project Object Model (). POM
-
In una directory vuota sul tuo computer o istanza locale, creare la struttura della directory.
(root directory name)
`-- src |-- main | `-- java `-- test `-- java -
Utilizzando un editor di testo a scelta, creare questo file, nominarlo
MessageUtil.java
e quindi salvarlo nella directorysrc/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; } }
Questo file di classe crea come output la stringa di caratteri che gli viene trasmessa. Il costruttore
MessageUtil
imposta la stringa di caratteri. Il metodoprintMessage
crea l'output. Il metodosalutationMessage
restituisceHi!
seguito dalla stringa di caratteri. -
Creare questo file, nominarlo
TestMessageUtil.java
e quindi salvarlo nella directory/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()); } }
Questo file di classe imposta la variabile
message
nella classeMessageUtil
suRobert
. Quindi effettua dei test per vedere se l'impostazione della variabilemessage
è riuscita controllando se le stringheRobert
eHi!Robert
sono visualizzate nell'output. -
Creare questo file, denominarlo
pom.xml
e salvarlo nella directory radice (primo livello).<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 utilizza le istruzioni in questo file per convertire i file
MessageUtil.java
eTestMessageUtil.java
in un file denominatomessageUtil-1.0.jar
, quindi per eseguire i test specificati.
A questo punto, la tua struttura di directory dovrebbe avere questo aspetto.
(root directory name)
|-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Fase 2: Creare il file buildspec
(Fase precedente: Fase 1: Creare il codice sorgente)
In questa fase, crei un file di specifica di compilazione. Un buildspec è una raccolta di comandi di compilazione e relative impostazioni, in YAML formato, che CodeBuild viene utilizzata per eseguire una build. Senza una specifica di compilazione, CodeBuild non è possibile convertire con successo l'input di build in output di build o individuare l'artefatto di output della build nell'ambiente di compilazione per caricarlo nel bucket di output.
Creare questo file, denominarlo buildspec.yml
e salvarlo nella directory radice (primo livello).
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
Importante
Poiché una dichiarazione di build spec deve essere validaYAML, la spaziatura in una dichiarazione di build spec è importante. Se il numero di spazi nella dichiarazione della specifica di compilazione non corrisponde a questo, la compilazione potrebbe non riuscire immediatamente. Puoi usare un YAML validatore per verificare se la tua dichiarazione di build spec è valida. YAML
Nota
Invece di includere un file di specifica di compilazione nel codice sorgente, è possibile dichiarare i comandi di compilazione separatamente al momento della creazione di un progetto di compilazione. Questa funzione è utile se si desidera creare il codice sorgente con diversi comandi di compilazione senza aggiornare ogni volta l'archivio del codice sorgente. Per ulteriori informazioni, consulta Sintassi buildspec.
In questa dichiarazione della specifica di compilazione:
-
version
rappresenta la versione dello standard di specifica di compilazione utilizzata. Questa dichiarazione della specifica di compilazione utilizza la versione più recente,0.2
. -
phases
rappresenta le fasi di compilazione durante le quali è possibile indicare di CodeBuild eseguire comandi. Queste fasi di compilazione sono elencate qui comeinstall
,pre_build
,build
epost_build
. Non puoi modificare l'ortografia dei nomi di queste fasi di compilazione e non puoi creare ulteriori nomi di fasi di compilazione.In questo esempio, durante la
build
fase, CodeBuild esegue ilmvn install
comando. Questo comando fornisce istruzioni a Apache Maven per compilare, testare e creare pacchetti dei file di classe Java in un artefatto di output della compilazione. Per completezza, in questo esempio alcuni comandiecho
sono posizionati in ciascuna fase di build. Quando visualizzerai informazioni dettagliate sulla build più avanti in questo tutorial, l'output di questiecho
comandi può aiutarti a capire meglio come vengono CodeBuild eseguiti i comandi e in quale ordine. Anche se tutte le fasi di compilazione sono incluse in questo esempio, non è necessario includere una fase di compilazione se non prevedi di eseguire comandi durante tale fase. Per ogni fase di compilazione, CodeBuild esegue ogni comando specificato, uno alla volta, nell'ordine elencato, dall'inizio alla fine. -
artifacts
rappresenta l'insieme di artefatti di output della build che CodeBuild vengono caricati nel bucket di output.files
rappresenta i file da includere nell'output della build. CodeBuild carica il singolomessageUtil-1.0.jar
file trovato nella directorytarget
relativa nell'ambiente di compilazione. Il nome del filemessageUtil-1.0.jar
e il nome della directorytarget
sono basati sul modo in cui Apache Maven crea e archivia elementi di output di compilazione unicamente per questo esempio. Nelle tue build, questi nomi di file e directory sono differenti.
Per ulteriori informazioni, consulta la Riferimento per buildspec.
A questo punto, la tua struttura di directory dovrebbe avere questo aspetto.
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Fase 3: Creare due bucket S3
(Fase precedente: Fase 2: Creare il file buildspec)
Anche se è possibile utilizzare un singolo bucket per questo tutorial, due bucket consentono di comprendere più agevolmente la provenienza dell'input della build e la destinazione dell'output della build.
-
Uno di questi bucket archivia l'input di compilazione (il bucket di input) archivia l'input della build. In questo tutorial, il nome di questo bucket di input è, dove
codebuild-
region-ID
-account-ID
-input-bucketregion-ID
è la AWS regione del bucket eaccount-ID
è l'ID del tuo AWS account. -
L'altro bucket (il bucket di output) archivia l'output di compilazione. In questa esercitazione, il nome di questo bucket di output è
codebuild-
.region-ID
-account-ID
-output-bucket
Se hai scelto nomi diversi per questi bucket, assicurati di usarli in tutto questo tutorial.
Questi due bucket devono trovarsi nella stessa AWS regione delle tue build. Ad esempio, se si richiede di CodeBuild eseguire una build nella regione Stati Uniti orientali (Ohio), anche questi bucket devono trovarsi nella regione Stati Uniti orientali (Ohio).
Per ulteriori informazioni, consulta Creazione di un bucket nella Guida per l'utente di Amazon Simple Storage Service.
Nota
Sebbene supporti CodeBuild anche gli input di compilazione memorizzati nei CodeCommit repository e Bitbucket, questo tutorial non mostra come usarli. GitHub Per ulteriori informazioni, consulta Pianifica una compilazione.
Fase 4: caricamento del codice di origine e del file buildspec
(Fase precedente: Fase 3: Creare due bucket S3)
In questa fase, aggiungi il codice sorgente e il file di specifica di compilazione al bucket di input.
Utilizzando l'utilità zip del tuo sistema operativo, crea un file denominato MessageUtil.zip
che includa MessageUtil.java
, TestMessageUtil.java
, pom.xml
e buildspec.yml
.
La struttura di directory del file MessageUtil.zip
deve avere il seguente aspetto.
MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
Importante
Non includere la directory
, ma solo le directory e i file contenuti nella directory (root directory name)
.(root directory name)
Carica il file MessageUtil.zip
nel bucket di input denominato codebuild-
. region-ID
-account-ID
-input-bucket
Importante
Per i repository Bitbucket CodeCommit GitHub, per convenzione, è necessario memorizzare un file di specifiche di build denominato buildspec.yml
nella radice (livello superiore) di ciascun repository o includere la dichiarazione delle specifiche di compilazione come parte della definizione del progetto di compilazione. Non create un ZIP file che contenga il codice sorgente del repository e il file delle specifiche di build.
Per l'input di build memorizzato solo nei bucket S3, devi creare un ZIP file che contenga il codice sorgente e, per convenzione, un file delle specifiche di build denominato buildspec.yml
alla radice (livello superiore) o includere la dichiarazione delle specifiche di compilazione come parte della definizione del progetto di compilazione.
Se si desidera utilizzare un nome diverso per il file della specifica di compilazione, oppure se si desidera fare riferimento a una specifica di compilazione in un percorso diverso da quello principale, è possibile specificare una sostituzione della specifica di compilazione come parte della definizione del progetto di compilazione. Per ulteriori informazioni, consulta Nome del file buildspec e posizione di storage.
Fase 5: creazione del progetto di compilazione
(Fase precedente: Fase 4: caricamento del codice di origine e del file buildspec)
In questo passaggio, crei un progetto di compilazione che AWS CodeBuild utilizza per eseguire la build. Un progetto di compilazione include informazioni su come eseguire una build, tra cui dove trovare il codice sorgente, quale ambiente di compilazione utilizzare, quali comandi di compilazione eseguire e dove archiviare l'output della build. Un ambiente di compilazione rappresenta una combinazione di sistema operativo, linguaggio di programmazione, runtime e strumenti CodeBuild utilizzati per eseguire una build. L'ambiente di compilazione è espresso come immagine Docker. Per ulteriori informazioni, consulta l'argomento relativo alla panoramica del Docker
Per questo ambiente di compilazione, si richiede di CodeBuild utilizzare un'immagine Docker che contenga una versione di Java Development Kit (JDK) e Apache Maven.
Per creare il progetto build
-
Utilizzate il per eseguire il comando AWS CLI : create-project
aws codebuild create-project --generate-cli-skeleton
JSON-i dati formattati vengono visualizzati nell'output. Copiare i dati in un file denominato
create-project.json
in una posizione sul computer locale o sull'istanza in cui AWS CLI è installato. Se si sceglie di utilizzare un nome di file diverso, assicurarsi di utilizzarlo durante tutto il tutorial.Modificare i dati copiati per seguire questo formato, quindi salvare i risultati:
{ "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
" }Replace (Sostituisci)
serviceIAMRole
con l'Amazon Resource Name (ARN) di un ruolo di CodeBuild servizio (ad esempio,arn:aws:iam::
). Per crearne uno, consulta Consentono CodeBuild di interagire con altri AWS servizi.account-ID
:role/role-name
In questi dati:
-
name
rappresenta un identificatore necessario per questo progetto di compilazione (in questo esempio,codebuild-demo-project
). I nomi dei progetti di compilazione devono essere univoci per tutti i progetti di compilazione nel tuo account. -
For
source
,type
è un valore obbligatorio che rappresenta il tipo di repository del codice sorgente (in questo esempio,S3
per un bucket Amazon S3). -
For
source
,location
rappresenta il percorso del codice sorgente (in questo esempio, il nome del bucket di input seguito dal nome del ZIP file). -
For
artifacts
,type
è un valore obbligatorio che rappresenta il tipo di repository dell'elemento di output della build (in questo esempio,S3
per un bucket Amazon S3). -
Per
artifacts
,location
rappresenta il nome del bucket di output creato o identificato in precedenza (in questo esempio,codebuild-
).region-ID
-account-ID
-output-bucket -
For
environment
,type
è un valore obbligatorio che rappresenta il tipo di ambiente di compilazione (in questo esempio,).LINUX_CONTAINER
-
For
environment
,image
è un valore obbligatorio che rappresenta il nome dell'immagine Docker e la combinazione di tag utilizzata da questo progetto di build, come specificato dal tipo di repository di immagini Docker (in questo esempio,aws/codebuild/standard:5.0
per un'immagine Docker nel repository di immagini CodeBuild Docker).aws/codebuild/standard
è il nome dell'immagine Docker.5.0
è il tag dell'immagine Docker.Per trovare più immagini Docker da utilizzare negli scenari, consulta il Riferimento ambiente di compilazione.
-
For
environment
,computeType
è un valore obbligatorio che rappresenta le risorse di elaborazione CodeBuild utilizzate (in questo esempio,BUILD_GENERAL1_SMALL
).
Nota
Gli altri valori disponibili nei dati in JSON formato originale, ad esempio
description
buildspec
,auth
(inclusotype
eresource
),path
namespaceType
,name
(perartifacts
),environmentVariables
(inclusoname
evalue
)packaging
,timeoutInMinutes
encryptionKey
, etags
(inclusokey
evalue
) sono facoltativi. Non vengono utilizzati in questo tutorial, perciò non vengono mostrati qui. Per ulteriori informazioni, consulta Creazione di un progetto di compilazione (AWS CLI). -
-
Passare alla directory contenente il file appena salvato, quindi eseguire nuovamente il comando create-project.
aws codebuild create-project --cli-input-json file://create-project.json
Se l'operazione ha esito positivo, dati simili a questo appaiono nell'output.
{ "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
rappresenta le informazioni su questo progetto di compilazione.-
tags
rappresenta tutti i tag dichiarati. -
packaging
rappresenta il modo in cui l'elemento di output di compilazione viene archiviato nel bucket di output.NONE
significa che una cartella viene creata nel bucket di output. L'elemento di output di compilazione viene archiviato in questa cartella. -
lastModified
rappresenta l'orario, in formato Unix, in cui le informazioni sul progetto di compilazione sono state modificate l'ultima volta. -
timeoutInMinutes
rappresenta il numero di minuti dopo i quali CodeBuild interrompe la compilazione se la compilazione non è stata completata. Il valore predefinito è 60 minuti. -
created
rappresenta l'orario, in formato Unix, in cui il progetto di compilazione è stato creato. -
environmentVariables
rappresenta tutte le variabili di ambiente dichiarate e disponibili CodeBuild per l'uso durante la compilazione. -
encryptionKey
rappresenta la ARN chiave gestita dal cliente CodeBuild utilizzata per crittografare l'artefatto di output della build. -
arn
rappresenta il progetto ARN di compilazione.
-
-
Nota
Dopo aver eseguito il create-project comando, potrebbe essere emesso un messaggio di errore simile al seguente: Utente: user-ARN
non è autorizzato a eseguire: codebuild: CreateProject. Ciò è probabilmente dovuto al fatto che lo hai configurato AWS CLI con le credenziali di un utente che non dispone di autorizzazioni sufficienti da utilizzare per CodeBuild creare progetti di compilazione. Per risolvere questo problema, configuralo AWS CLI
con credenziali appartenenti a una delle seguenti entità: IAM
-
Un utente amministratore nel tuo AWS account. Per ulteriori informazioni, consulta Creazione del primo utente e gruppo Account AWS root nella Guida per l'utente.
-
Un utente del tuo AWS account con
AWSCodeBuildAdminAccess
leAmazonS3ReadOnlyAccess
politicheIAMFullAccess
gestite associate a quell'utente o a un IAM gruppo a cui l'utente appartiene. Se nel tuo AWS account non hai un utente o un gruppo con queste autorizzazioni e non riesci ad aggiungere queste autorizzazioni al tuo utente o gruppo, contatta l'amministratore dell' AWS account per ricevere assistenza. Per ulteriori informazioni, consulta AWS politiche gestite (predefinite) per AWS CodeBuild.
Fase 6: esecuzione della compilazione
(Fase precedente: Fase 5: creazione del progetto di compilazione)
In questo passaggio, si ordina di AWS CodeBuild eseguire la build con le impostazioni del progetto di compilazione.
Per eseguire la build
-
Usa il AWS CLI per eseguire il start-build comando:
aws codebuild start-build --project-name
project-name
Replace (Sostituisci)
project-name
con il nome del progetto di build del passaggio precedente (ad esempio,codebuild-demo-project
). -
Se eseguito correttamente, nell'output compaiono dei dati simili ai seguenti:
{ "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
rappresenta le informazioni su questa compilazione.-
buildComplete
indica se la compilazione è stata completata (true
). In caso contrario,false
. -
initiator
rappresenta l'entità che ha avviato la compilazione. -
artifacts
rappresenta le informazioni sull'output di compilazione, tra cui la posizione. -
projectName
rappresenta il nome del progetto di compilazione. -
buildStatus
rappresenta l'attuale stato della compilazione nel momento in cui il comando start-build è stato eseguito. -
currentPhase
rappresenta la fase di compilazione attuale nel momento in cui il comando start-build è stato eseguito. -
startTime
rappresenta l'orario, in formato Unix, in cui il processo di compilazione è stato avviato. -
id
rappresenta l'ID della compilazione. -
arn
rappresenta ARN la build.
-
Annotare il valore
id
. Questo valore servirà nella fase successiva. -
Fase 7: visualizzazione del riepilogo delle informazioni sulla compilazione
(Fase precedente: Fase 6: esecuzione della compilazione)
In questa fase, visualizzi un riepilogo delle informazioni sullo stato della compilazione.
Per visualizzare un riepilogo delle informazioni sulla compilazione
-
Usa il AWS CLI per eseguire il batch-get-builds comando.
aws codebuild batch-get-builds --ids
id
Replace (Sostituisci)
id
con ilid
valore visualizzato nell'output del passaggio precedente.Se l'operazione ha esito positivo, dati simili a questo appaiono nell'output.
{ "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
rappresenta la build IDs per tutte le build in cui le informazioni non sono disponibili. In questo esempio, deve essere vuoto. -
builds
rappresenta le informazioni su ogni build di sono disponibili informazioni. In questo esempio, nell'output appaiono informazioni relative a una sola compilazione.-
phases
rappresenta l'insieme delle fasi di compilazione CodeBuild eseguite durante il processo di compilazione. Le informazioni su ogni fase di compilazione sono elencate separatamente comestartTime
,endTime
edurationInSeconds
(l'orario in cui la fase di compilazione è stata avviata ed è terminata, espresso in formato Unix, e della sua durata in secondi), ma anchephaseType
, ad esempio (SUBMITTED
,PROVISIONING
,DOWNLOAD_SOURCE
,INSTALL
,PRE_BUILD
,BUILD
,POST_BUILD
,UPLOAD_ARTIFACTS
,FINALIZING
oCOMPLETED
) ephaseStatus
(ad esempio,SUCCEEDED
,FAILED
,FAULT
,TIMED_OUT
,IN_PROGRESS
oSTOPPED
). La prima volta che esegui il comando batch-get-builds, potrebbero esserci poche fasi (o nessuna). Dopo esecuzioni successive del comando batch-get-builds con lo stesso ID di compilazione, nell'output dovrebbero essere visualizzate più fasi di compilazione. -
logs
rappresenta informazioni in Amazon CloudWatch Logs sui log della build. -
md5sum
esha256sum
rappresentano MD5 e SHA -256 hash dell'artefatto di output della build. Questi appaiono nell'output solo se il valorepackaging
del progetto di compilazione è impostato suZIP
. Non hai impostato tale valore in questo tutorial. Puoi utilizzare questi hash insieme a uno strumento di checksum per la conferma sia dell'integrità sia dell'autenticità dei file.Nota
Puoi anche utilizzare la console Amazon S3 per visualizzare questi hash. Seleziona la casella accanto all'artefatto di output della compilazione, scegli Actions (Operazioni), quindi Properties (Proprietà). Nel riquadro Proprietà, espandi Metadati e visualizza i valori per x-amz-meta-codebuild-content-md5 e -content-sha256. x-amz-meta-codebuild (Nella console Amazon S3, il ETagvalore dell'artefatto di output della build non deve essere interpretato come l'hash MD5 o SHA -256.)
Se usi il AWS SDKs per ottenere questi hash, i valori sono denominati e.
codebuild-content-md5
codebuild-content-sha256
-
endTime
rappresenta l'orario, in formato Unix, in cui il processo di compilazione è terminato.
-
Nota
I metadati di Amazon S3 hanno un' CodeBuild intestazione denominata
x-amz-meta-codebuild-buildarn
che contiene la CodeBuild build che pubblica glibuildArn
artefatti su Amazon S3.buildArn
Viene aggiunto per consentire il tracciamento della fonte per le notifiche e per fare riferimento alla build da cui viene generato l'artefatto. -
Fase 8: visualizzazione di informazioni dettagliate sulla compilazione
(Fase precedente: Fase 7: visualizzazione del riepilogo delle informazioni sulla compilazione)
In questo passaggio, visualizzerai informazioni dettagliate sulla tua build in CloudWatch Logs.
Nota
Per proteggere le informazioni riservate, nei CodeBuild log sono nascoste le seguenti informazioni:
-
AWS chiave IDs di accesso. Per ulteriori informazioni, vedere Gestione delle chiavi di accesso per IAM gli utenti nella Guida per l'AWS Identity and Access Management utente.
-
Stringhe specificate utilizzando l'archivio parametri. Per ulteriori informazioni, consulta la procedura dettagliata della console di Systems Manager Parameter Store e Systems Manager Parameter Store nella Guida per l'utente di Amazon EC2 Systems Manager.
-
Stringhe specificate utilizzando. AWS Secrets Manager Per ulteriori informazioni, consulta Gestione delle chiavi.
Per visualizzare informazioni dettagliate sulla compilazione
-
Utilizzare il browser Web per accedere alla posizione
deepLink
apparsa nell'output nella fase precedente (ad esempio,https://console.aws.amazon.com/cloudwatch/home?region=
).region-ID
#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE -
Nel flusso di CloudWatch log dei registri, è possibile sfogliare gli eventi del registro. Per impostazione predefinita, viene visualizzato solo l'ultimo set di eventi di log. Per visualizzare gli eventi di log precedenti, scorrere all'inizio dell'elenco.
-
In questo tutorial, la maggior parte degli eventi di registro contiene informazioni dettagliate sul CodeBuild download e l'installazione dei file di dipendenza della build nel relativo ambiente di compilazione, cosa che probabilmente non ti interessa. È possibile utilizzare la casella Filter events (Filtra eventi) per ridurre le informazioni visualizzate. Ad esempio, se si immette
"[INFO]"
in Filter events (Filtra eventi) vengono visualizzati solo gli eventi contenenti[INFO]
. Per ulteriori informazioni, consulta Filter and pattern syntax nella Amazon CloudWatch User Guide.
Queste parti di un flusso di log di CloudWatch Logs si riferiscono a questo 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 questo esempio, sono state completate CodeBuild con successo le fasi di pre-compilazione, compilazione e post-compilazione. Ha eseguito lo unit test e la creazione del file messageUtil-1.0.jar
è riuscita.
Fase 9: generazione dell'artefatto di output della compilazione
(Fase precedente: Fase 8: visualizzazione di informazioni dettagliate sulla compilazione)
In questo passaggio, si ottiene il messageUtil-1.0.jar
file CodeBuild creato e caricato nel bucket di output.
Puoi utilizzare la CodeBuild console o la console Amazon S3 per completare questo passaggio.
Per ottenere l'artefatto di output della build (console)AWS CodeBuild
-
Con la CodeBuild console ancora aperta e la pagina dei dettagli della build ancora visualizzata nel passaggio precedente, scegli la scheda Dettagli della build e scorri verso il basso fino alla sezione Artefatti.
Nota
Se la pagina dei dettagli della build non è visualizzata, nella barra di navigazione, scegli Cronologia build, quindi scegli il link Build run.
-
Il link alla cartella Amazon S3 si trova nella posizione di caricamento degli artefatti. Questo collegamento apre la cartella in Amazon S3 in cui si trova il file degli artefatti di output della
messageUtil-1.0.jar
build.
Per ottenere l'elemento di output della build (console Amazon S3)
Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Aprire
codebuild-
.region-ID
-account-ID
-output-bucket -
Aprire la cartella
codebuild-demo-project
. -
Aprire la cartella
target
, contenente il file dell'artefatto di output di compilazionemessageUtil-1.0.jar
.
Passaggio 10: eliminare i bucket S3
(Fase precedente: Fase 9: generazione dell'artefatto di output della compilazione)
Per evitare addebiti continui AWS sul tuo account, puoi eliminare i bucket di input e output utilizzati in questo tutorial. Per istruzioni, consulta Eliminare o svuotare un bucket nella Guida per l'utente di Amazon Simple Storage Service.
Se utilizzi l'IAMutente o un utente amministratore per eliminare questi bucket, IAM l'utente deve disporre di più autorizzazioni di accesso. Aggiungi la seguente dichiarazione tra i marker (### BEGIN ADDING STATEMENT HERE ###
e ### END
ADDING STATEMENTS HERE ###
) a una politica di accesso esistente per l'utente.
Le ellissi (...) in questa affermazione sono usate per brevità. Non rimuovere nessuna istruzione nella policy di accesso esistente. Non immettere queste ellissi nella policy.
{ "Version": "2012-10-17", "Id": "...", "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" }### END ADDING STATEMENT HERE ###
] }
Wrapping
In questo tutorial, creavi AWS CodeBuild un set di file di classe Java in un JAR file. Quindi hai visualizzato i risultati della compilazione.
Ora puoi provare a utilizzarlo CodeBuild nei tuoi scenari. Segui le istruzioni in Pianifica una compilazione. Se non ti senti ancora pronto, puoi provare a compilare alcuni degli esempi. Per ulteriori informazioni, consulta Usa esempi basati su casi per CodeBuild.