Guida introduttiva con CodeBuild - AWS CodeBuild

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.

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 di Amazon S3, i prezzi e AWS Key Management Service i prezzi di Amazon CloudWatch .

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

  1. In una directory vuota sul tuo computer o istanza locale, creare la struttura della directory.

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. Utilizzando un editor di testo a scelta, creare questo file, nominarlo MessageUtil.java e quindi salvarlo nella directory src/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 metodo printMessage crea l'output. Il metodo salutationMessage restituisce Hi! seguito dalla stringa di caratteri.

  3. 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 classe MessageUtil su Robert. Quindi effettua dei test per vedere se l'impostazione della variabile message è riuscita controllando se le stringhe Robert e Hi!Robert sono visualizzate nell'output.

  4. 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 e TestMessageUtil.java in un file denominato messageUtil-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.

  • phasesrappresenta le fasi di compilazione durante le quali è possibile indicare di CodeBuild eseguire comandi. Queste fasi di compilazione sono elencate qui come install, pre_build, build e post_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 il mvn 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 comandi echo sono posizionati in ciascuna fase di build. Quando visualizzerai informazioni dettagliate sulla build più avanti in questo tutorial, l'output di questi echo 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.

  • artifactsrappresenta l'insieme di artefatti di output della build che CodeBuild vengono caricati nel bucket di output. filesrappresenta i file da includere nell'output della build. CodeBuild carica il singolo messageUtil-1.0.jar file trovato nella directory target relativa nell'ambiente di compilazione. Il nome del file messageUtil-1.0.jar e il nome della directory target 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-bucket region-ID è la AWS regione del bucket e account-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 (root directory name), ma solo le directory e i file contenuti nella directory (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 sul sito web Docker Docs.

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
  1. Accedi AWS Management Console e apri la console all'indirizzo codebuild/home. AWS CodeBuild https://console.aws.amazon.com/codesuite/

  2. 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.

  3. 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.

  4. 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 le AmazonS3ReadOnlyAccess politiche IAMFullAccess 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.

  5. In Source, come provider di origine, scegli Amazon S3.

  6. Per Bucket, scegli codebuild- region-ID-account-ID-bucket di input.

  7. Per S3 object key (Chiave oggetto S3), immettere MessageUtil.zip.

  8. In Environment (Ambiente), per Environment image (Immagine ambiente), lasciare selezionato Managed image (Immagine gestita).

  9. Per il sistema operativo, scegli Amazon Linux.

  10. In Runtime(s) (Runtime), seleziona Standard.

  11. Per Image, scegli aws/codebuild/amazonlinux2-x86_64-standard:corretto11.

  12. 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).

  13. Per Buildspec (Specifica di compilazione), lasciare selezionata l'opzione Use a buildspec file (Utilizza un file buildspec).

  14. In Artifacts, per Tipo, scegli Amazon S3.

  15. Per il nome di Bucket, scegli codebuild- region-ID-account-ID-bucket di uscita.

  16. Lasciare vuoti i campi Name (Nome) e Path (Percorso).

  17. 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
  1. Apri la AWS CodeBuild console su https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Nel riquadro di navigazione, scegliere Build projects (Progetti di compilazione).

  3. 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

  1. 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).

  2. 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.

  3. 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:

Per visualizzare informazioni dettagliate sulla compilazione
  1. 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.

  2. 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.

  3. 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
  1. 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.

  2. 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)
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Aprire codebuild-region-ID-account-ID-output-bucket.

  3. Aprire la cartella codebuild-demo-project.

  4. Aprire la cartella target, contenente il file dell'artefatto di output di compilazione messageUtil-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 di Amazon S3, i prezzi e AWS Key Management Service i prezzi di Amazon CloudWatch .

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

  1. In una directory vuota sul tuo computer o istanza locale, creare la struttura della directory.

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. Utilizzando un editor di testo a scelta, creare questo file, nominarlo MessageUtil.java e quindi salvarlo nella directory src/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 metodo printMessage crea l'output. Il metodo salutationMessage restituisce Hi! seguito dalla stringa di caratteri.

  3. 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 classe MessageUtil su Robert. Quindi effettua dei test per vedere se l'impostazione della variabile message è riuscita controllando se le stringhe Robert e Hi!Robert sono visualizzate nell'output.

  4. 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 e TestMessageUtil.java in un file denominato messageUtil-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.

  • phasesrappresenta le fasi di compilazione durante le quali è possibile indicare di CodeBuild eseguire comandi. Queste fasi di compilazione sono elencate qui come install, pre_build, build e post_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 il mvn 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 comandi echo sono posizionati in ciascuna fase di build. Quando visualizzerai informazioni dettagliate sulla build più avanti in questo tutorial, l'output di questi echo 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.

  • artifactsrappresenta l'insieme di artefatti di output della build che CodeBuild vengono caricati nel bucket di output. filesrappresenta i file da includere nell'output della build. CodeBuild carica il singolo messageUtil-1.0.jar file trovato nella directory target relativa nell'ambiente di compilazione. Il nome del file messageUtil-1.0.jar e il nome della directory target 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-bucket region-ID è la AWS regione del bucket e account-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 (root directory name), ma solo le directory e i file contenuti nella directory (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 sul sito web Docker Docs.

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
  1. 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::account-ID:role/role-name). Per crearne uno, consulta Consentono CodeBuild di interagire con altri AWS servizi.

    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.

    • Forsource, type è un valore obbligatorio che rappresenta il tipo di repository del codice sorgente (in questo esempio, S3 per un bucket Amazon S3).

    • Forsource, location rappresenta il percorso del codice sorgente (in questo esempio, il nome del bucket di input seguito dal nome del ZIP file).

    • Forartifacts, 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).

    • Forenvironment, type è un valore obbligatorio che rappresenta il tipo di ambiente di compilazione (in questo esempio,). LINUX_CONTAINER

    • Forenvironment, 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.

    • Forenvironment, 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 descriptionbuildspec, auth (incluso type eresource), pathnamespaceType, name (perartifacts), environmentVariables (incluso name evalue)packaging, timeoutInMinutesencryptionKey, e tags (incluso key 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).

  2. 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.

      • timeoutInMinutesrappresenta 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.

      • environmentVariablesrappresenta tutte le variabili di ambiente dichiarate e disponibili CodeBuild per l'uso durante la compilazione.

      • encryptionKeyrappresenta la ARN chiave gestita dal cliente CodeBuild utilizzata per crittografare l'artefatto di output della build.

      • arnrappresenta 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 le AmazonS3ReadOnlyAccess politiche IAMFullAccess 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
  1. 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).

  2. 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.

      • arnrappresenta 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 il id 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" } ] }
    • buildsNotFoundrappresenta 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.

      • phasesrappresenta l'insieme delle fasi di compilazione CodeBuild eseguite durante il processo di compilazione. Le informazioni su ogni fase di compilazione sono elencate separatamente come startTime, endTime e durationInSeconds (l'orario in cui la fase di compilazione è stata avviata ed è terminata, espresso in formato Unix, e della sua durata in secondi), ma anche phaseType, ad esempio (SUBMITTED, PROVISIONING, DOWNLOAD_SOURCE, INSTALL, PRE_BUILD, BUILD, POST_BUILD, UPLOAD_ARTIFACTS, FINALIZING o COMPLETED) e phaseStatus (ad esempio, SUCCEEDED, FAILED, FAULT, TIMED_OUT, IN_PROGRESS o STOPPED). 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.

      • logsrappresenta informazioni in Amazon CloudWatch Logs sui log della build.

      • md5sume sha256sum rappresentano MD5 e SHA -256 hash dell'artefatto di output della build. Questi appaiono nell'output solo se il valore packaging del progetto di compilazione è impostato su ZIP. 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 gli buildArn artefatti su Amazon S3. buildArnViene 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:

Per visualizzare informazioni dettagliate sulla compilazione
  1. 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).

  2. 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.

  3. 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
  1. 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.

  2. 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)
  1. Apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Aprire codebuild-region-ID-account-ID-output-bucket.

  3. Aprire la cartella codebuild-demo-project.

  4. Aprire la cartella target, contenente il file dell'artefatto di output di compilazione messageUtil-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.