Versioni di runtime nel file buildspec di esempio per 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à.

Versioni di runtime nel file buildspec di esempio per CodeBuild

Se usi l'immagine standard di Amazon Linux 2 (AL2) versione 1.0 o successiva o l'immagine standard di Ubuntu versione 2.0 o successiva, puoi specificare uno o più runtime nella runtime-versions sezione del tuo file buildspec. Questo esempio illustra come modificare il runtime del progetto, specificare uno o più runtime e specificare un runtime che dipende da un altro runtime. Per informazioni sui runtime supportati, vedi Immagini Docker fornite da CodeBuild.

Nota

Se utilizzi Docker nel container di compilazione, la compilazione deve essere eseguita in modalità con privilegi. Per ulteriori informazioni, consulta Esecuzione di una compilazione in AWS CodeBuild e Creazione di un progetto di compilazione in AWS CodeBuild.

Aggiornamento della versione runtime

Puoi modificare il runtime utilizzato dal tuo progetto con una nuova versione aggiornando la runtime-versions sezione del tuo file buildspec. I seguenti esempi mostrano come specificare le versioni 8 e 11 di Java:

  • Una sezione runtime-versions che specifica la versione 8 di Java:

    phases: install: runtime-versions: java: corretto8
  • Una sezione runtime-versions che specifica la versione 11 di Java:

    phases: install: runtime-versions: java: corretto11

I seguenti esempi mostrano come specificare diverse versioni di Python usando l'immagine standard di Ubuntu 5.0 o l'immagine standard di Amazon Linux 2 3.0:

  • Una runtime-versions sezione che specifica la versione 3.7 di Python:

    phases: install: runtime-versions: python: 3.7
  • Una runtime-versions sezione che specifica la versione 3.8 di Python:

    phases: install: runtime-versions: python: 3.8

Questo esempio illustra un progetto che inizia con il runtime Java versione 8 e viene aggiornato al runtime Java versione 10.

  1. Scaricare e installare Maven. Per informazioni, consultare le pagine del sito Web di Apache Maven relative al download di Apache Maven e all'installazione di Apache Maven.

  2. Passare a una directory vuota sull'istanza o sul computer locale, quindi eseguire il comando Maven.

    mvn archetype:generate "-DgroupId=com.mycompany.app" "-DartifactId=ROOT" "-DarchetypeArtifactId=maven-archetype-webapp" "-DinteractiveMode=false"

    Se il comando è eseguito correttamente, vengono creati la struttura e i file della directory.

    . └── ROOT ├── pom.xml └── src └── main ├── resources └── webapp ├── WEB-INF │ └── web.xml └── index.jsp
  3. Crea un file denominato buildspec.yml con i seguenti contenuti. Archivia il file nella directory (root directory name)/my-web-app.

    version: 0.2 phases: install: runtime-versions: java: corretto8 build: commands: - java -version - mvn package artifacts: files: - '**/*' base-directory: 'target/my-web-app'

    Nel file buildspec:

    • La sezione runtime-versions specifica che il progetto utilizza la versione 8 del runtime Java .

    • Il comando - java -version visualizza la versione di Java utilizzata dal progetto al momento della compilazione.

    La struttura del file dovrebbe avere il seguente aspetto.

    (root directory name) └── my-web-app ├── src │ ├── main │ ├── resources │ └── webapp │ └── WEB-INF │ └── web.xml │ └── index.jsp ├── buildspec.yml └── pom.xml
  4. Carica il contenuto della my-web-app directory in un bucket di input S3 o in un repository CodeCommit, GitHub o Bitbucket.

    Importante

    Non caricare (root directory name) o (root directory name)/my-web-app, ma solo le directory e i file all'interno di (root directory name)/my-web-app.

    Se si sta usando un bucket di input S3, assicurarsi di creare un file ZIP che contenga la struttura e i file della directory, quindi caricarlo nel bucket di input. Non aggiungere (root directory name) o (root directory name)/my-web-app al file ZIP, ma solo le directory e i file all'interno di (root directory name)/my-web-app.

  5. Apri la console all'indirizzo https://console.aws.amazon.com/codesuite/codebuild/home. AWS CodeBuild

  6. Creare un progetto di compilazione. Per ulteriori informazioni, consulta Creare un progetto di compilazione (console) e Esecuzione di una compilazione (console). Lasciare tutte le impostazioni sui valori predefiniti, ad eccezione delle seguenti.

    • In Environment (Ambiente):

      • Per Environment image (Immagine ambiente), scegliere Managed image (Immagine gestita).

      • Per Operating system (Sistema operativo), scegliere Amazon Linux 2.

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

      • Per Image, scegli aws/codebuild/amazonlinux2-x86_64-standard:4.0.

  7. Selezionare Start build (Avvia compilazione).

  8. In Build configuration (Configurazione della compilazione) accettare le impostazioni predefinite, quindi scegliere Build configuration (Avvia compilazione).

  9. Al termine della compilazione, visualizzare l’output della compilazione nella scheda Build logs (Log di compilazione). Verrà visualizzato un output simile al seguente:

    [Container] Date Time Phase is DOWNLOAD_SOURCE [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml [Container] Date Time Processing environment variables [Container] Date Time Selecting 'java' runtime version 'corretto8' based on manual selections... [Container] Date Time Running command echo "Installing Java version 8 ..." Installing Java version 8 ... [Container] Date Time Running command export JAVA_HOME="$JAVA_8_HOME" [Container] Date Time Running command export JRE_HOME="$JRE_8_HOME" [Container] Date Time Running command export JDK_HOME="$JDK_8_HOME" [Container] Date Time Running command for tool_path in "$JAVA_8_HOME"/bin/* "$JRE_8_HOME"/bin/*;
  10. Aggiorna la sezione runtime-versions con Java versione 11:

    install: runtime-versions: java: corretto11
  11. Dopo aver salvato la modifica, esegui nuovamente la compilazione e visualizza l’output di compilazione. La versione di Java installata visualizzata è 11. Verrà visualizzato un output simile al seguente:

    [Container] Date Time Phase is DOWNLOAD_SOURCE [Container] Date Time CODEBUILD_SRC_DIR=/codebuild/output/src460614277/src [Container] Date Time YAML location is /codebuild/output/src460614277/src/buildspec.yml [Container] Date Time Processing environment variables [Container] Date Time Selecting 'java' runtime version 'corretto11' based on manual selections... Installing Java version 11 ... [Container] Date Time Running command export JAVA_HOME="$JAVA_11_HOME" [Container] Date Time Running command export JRE_HOME="$JRE_11_HOME" [Container] Date Time Running command export JDK_HOME="$JDK_11_HOME" [Container] Date Time Running command for tool_path in "$JAVA_11_HOME"/bin/* "$JRE_11_HOME"/bin/*;

Specifica di due runtime

Puoi specificare più di un runtime nello stesso progetto di build. CodeBuild Questo progetto di esempio utilizza due file di origine: uno che utilizza il comando Vai a runtime e uno che utilizza il runtime Node.js.

  1. Crea una directory denominata my-source.

  2. Nella directory my-source, crea una directory denominata golang-app,

  3. Crea un file denominato hello.go con i seguenti contenuti. Archivia il file nella directory golang-app.

    package main import "fmt" func main() { fmt.Println("hello world from golang") fmt.Println("1+1 =", 1+1) fmt.Println("7.0/3.0 =", 7.0/3.0) fmt.Println(true && false) fmt.Println(true || false) fmt.Println(!true) fmt.Println("good bye from golang") }
  4. Nella directory my-source, crea una directory denominata nodejs-app, che deve trovarsi allo stesso livello della directory golang-app.

  5. Crea un file denominato index.js con i seguenti contenuti. Archivia il file nella directory nodejs-app.

    console.log("hello world from nodejs"); console.log("1+1 =" + (1+1)); console.log("7.0/3.0 =" + 7.0/3.0); console.log(true && false); console.log(true || false); console.log(!true); console.log("good bye from nodejs");
  6. Crea un file denominato package.json con i seguenti contenuti. Archivia il file nella directory nodejs-app.

    { "name": "mycompany-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"run some tests here\"" }, "author": "", "license": "ISC" }
  7. Crea un file denominato buildspec.yml con i seguenti contenuti. Archivia il file nella my-source directory, allo stesso livello delle directory nodejs-app e golang-app. La runtime-versions sezione specifica i runtime di Node.js versione 12 e Go versione 1.13.

    version: 0.2 phases: install: runtime-versions: golang: 1.13 nodejs: 12 build: commands: - echo Building the Go code... - cd $CODEBUILD_SRC_DIR/golang-app - go build hello.go - echo Building the Node code... - cd $CODEBUILD_SRC_DIR/nodejs-app - npm run test artifacts: secondary-artifacts: golang_artifacts: base-directory: golang-app files: - hello nodejs_artifacts: base-directory: nodejs-app files: - index.js - package.json
  8. La struttura del file dovrebbe avere il seguente aspetto.

    my-source ├── golang-app │ └── hello.go ├── nodejs.app │ ├── index.js │ └── package.json └── buildspec.yml
  9. Carica il contenuto della my-source directory in un bucket di input S3 o in un repository CodeCommit, GitHub o Bitbucket.

    Importante

    Se si sta usando un bucket di input S3, assicurarsi di creare un file ZIP che contenga la struttura e i file della directory, quindi caricarlo nel bucket di input. Non aggiungere my-source al file ZIP, ma solo le directory e i file all'interno di my-source.

  10. Apri la console all'indirizzo https://console.aws.amazon.com/codesuite/codebuild/home. AWS CodeBuild

  11. Creare un progetto di compilazione. Per ulteriori informazioni, consulta Creare un progetto di compilazione (console) e Esecuzione di una compilazione (console). Lasciare tutte le impostazioni sui valori predefiniti, ad eccezione delle seguenti.

    • In Environment (Ambiente):

      • Per Environment image (Immagine ambiente), scegliere Managed image (Immagine gestita).

      • Per Operating system (Sistema operativo), scegliere Amazon Linux 2.

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

      • Per Image, scegli aws/codebuild/amazonlinux2-x86_64-standard:4.0.

  12. Scegliere Create build project (Crea progetto di compilazione).

  13. Selezionare Start build (Avvia compilazione).

  14. In Build configuration (Configurazione della compilazione) accettare le impostazioni predefinite, quindi scegliere Build configuration (Avvia compilazione).

  15. Al termine della compilazione, visualizzare l’output della compilazione nella scheda Build logs (Log di compilazione). Verrà visualizzato un output simile al seguente. che mostra l’output dei runtime Go e Node.js. Inoltre, mostra l'output alle applicazioni Go e Node.js.

    [Container] Date Time Processing environment variables [Container] Date Time Selecting 'golang' runtime version '1.13' based on manual selections... [Container] Date Time Selecting 'nodejs' runtime version '12' based on manual selections... [Container] Date Time Running command echo "Installing Go version 1.13 ..." Installing Go version 1.13 ... [Container] Date Time Running command echo "Installing Node.js version 12 ..." Installing Node.js version 12 ... [Container] Date Time Running command n $NODE_12_VERSION installed : v12.20.1 (with npm 6.14.10) [Container] Date Time Moving to directory /codebuild/output/src819694850/src [Container] Date Time Registering with agent [Container] Date Time Phases found in YAML: 2 [Container] Date Time INSTALL: 0 commands [Container] Date Time BUILD: 1 commands [Container] Date Time Phase complete: DOWNLOAD_SOURCE State: SUCCEEDED [Container] Date Time Phase context status code: Message: [Container] Date Time Entering phase INSTALL [Container] Date Time Phase complete: INSTALL State: SUCCEEDED [Container] Date Time Phase context status code: Message: [Container] Date Time Entering phase PRE_BUILD [Container] Date Time Phase complete: PRE_BUILD State: SUCCEEDED [Container] Date Time Phase context status code: Message: [Container] Date Time Entering phase BUILD [Container] Date Time Running command echo Building the Go code... Building the Go code... [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/golang-app [Container] Date Time Running command go build hello.go [Container] Date Time Running command echo Building the Node code... Building the Node code... [Container] Date Time Running command cd $CODEBUILD_SRC_DIR/nodejs-app [Container] Date Time Running command npm run test > mycompany-app@1.0.0 test /codebuild/output/src924084119/src/nodejs-app > echo "run some tests here" run some tests here