View a markdown version of this page

Tutorial: configura un CodeBuild-hosted GitLab runner - 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à.

Tutorial: configura un CodeBuild-hosted GitLab runner

Questo tutorial mostra come configurare i tuoi CodeBuild progetti per eseguire lavori in GitLab CI/CD pipeline. Per ulteriori informazioni sull'utilizzo GitLab o sulla gestione GitLab automatica con CodeBuild, consultaSelf-managed GitLab corridori in AWS CodeBuild.

Per completare questo tutorial, è necessario innanzitutto:

  • Connettiti con un'app OAuth utilizzando. CodeConnections Tieni presente che quando ti connetti con un'app OAuth, devi utilizzare la CodeBuild console per farlo. Per ulteriori istruzioni, consulta GitLab accedi a CodeBuild.

  • Connettiti CodeBuild al tuo account. GitLab A tale scopo, puoi aggiungerlo GitLab come fornitore di origine nella console. Per istruzioni, consulta l’argomento GitLab accedi a CodeBuild.

    Nota

    Questa operazione deve essere eseguita solo se non ti sei connesso GitLab al tuo account.

    Con questa funzione, CodeBuild sono necessarie autorizzazioni aggiuntive, come create_runner e manage_runner dall'app GitLab OAuth. Se esistono CodeConnections per un determinato GitLab account, non vengono richiesti automaticamente gli aggiornamenti delle autorizzazioni. Per farlo, puoi accedere alla CodeConnections console e creare una connessione fittizia allo stesso GitLab account per attivare la riautorizzazione per ottenere le autorizzazioni aggiuntive. Dopo aver completato questo passaggio, tutte le connessioni esistenti possono utilizzare la funzione runner. Una volta completata, puoi eliminare la connessione fittizia.

Fase 1: Creare un CodeBuild progetto con un webhook

In questo passaggio, creerai un CodeBuild progetto con un webhook e lo esaminerai nella GitLab console.

Per creare un CodeBuild progetto con un webhook
  1. Apri la AWS CodeBuild console all'indirizzo. https://console.aws.amazon.com/codesuite/codebuild/home

  2. Creare un progetto di compilazione. Per informazioni, consulta Creare un progetto di compilazione (console) e Esecuzione di una compilazione (console).

    In Tipo di progetto, scegli Progetto Runner.

    • In Runner:

      • Per il provider Runner, scegli. GitLab

      • Per Credential, scegli una delle seguenti opzioni:

        • Scegli Credenziale di origine predefinita. La connessione predefinita applica una GitLab connessione predefinita a tutti i progetti.

        • Scegli Credenziale di origine personalizzata. La connessione personalizzata applica una GitLab connessione personalizzata che sostituisce le impostazioni predefinite del tuo account.

        Nota

        Se non hai già creato una connessione con il tuo provider, dovrai crearne una nuova GitLab . Per istruzioni, consulta l’argomento Connettiti CodeBuild a GitLab.

      • Per la posizione del Runner, scegli Repository.

      • Per Repository, scegli il nome del tuo progetto in GitLab specificando il percorso del progetto con il namespace.

    • In Environment (Ambiente):

      • Scegli un'immagine di ambiente supportata ed esegui il calcolo. Nota che hai la possibilità di sovrascrivere le impostazioni dell'immagine e dell'istanza utilizzando un'etichetta nella GitLab CI/CD pipeline YAML. Per ulteriori informazioni, consulta Passaggio 2: crea un file .gitlab-ci.yml nel tuo repository.

    • In Buildspec:

      • Nota che il tuo buildspec verrà ignorato a meno che non venga aggiunto come etichetta. buildspec-override:true Invece, lo CodeBuild sovrascriverà per utilizzare i comandi che configureranno il runner autogestito.

  3. Continua con i valori predefiniti e quindi scegli Crea progetto di compilazione.

  4. Apri la GitLab console all'indirizzo https://gitlab.com/user-name/repository-name/-/hooks per verificare che un webhook sia stato creato e sia abilitato a fornire eventi Workflow jobs.

Passaggio 2: crea un file .gitlab-ci.yml nel tuo repository

In questo passaggio, creerai un .gitlab-ci.yml file in cui configurare il tuo ambiente di compilazione e utilizzare i runner GitLab autogestiti in. GitLab CodeBuild Per ulteriori informazioni, consulta Usare corridori autogestiti.

Aggiorna la tua pipeline YAML GitLab CI/CD

Accedi https://gitlab.com/user-name/project-name/-/tree/branch-name e crea un .gitlab-ci.yml file nel tuo repository. Puoi configurare il tuo ambiente di compilazione effettuando una delle seguenti operazioni:

  • Puoi specificare il nome del CodeBuild progetto, nel qual caso la build utilizzerà la configurazione del progetto esistente per il calcolo, l'immagine, la versione dell'immagine e le dimensioni dell'istanza. Il nome del progetto è necessario per collegare le impostazioni AWS relative del GitLab lavoro a un progetto specifico CodeBuild. Includendo il nome del progetto in YAML, CodeBuild è possibile richiamare lavori con le impostazioni di progetto corrette.

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME

    $CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAMEè necessario per mappare la build su specifiche esecuzioni di job della pipeline e interrompere la compilazione quando l'esecuzione della pipeline viene annullata.

    Nota

    Assicurati che il tuo nome <project-name> corrisponda al nome del progetto in cui hai creato. CodeBuild Se non corrisponde, non CodeBuild elaborerà il webhook e la GitLab CI/CD pipeline potrebbe bloccarsi.

    Quello che segue è un esempio di GitLab CI/CD pipeline YAML:

    workflow: name: HelloWorld stages: # List of stages for jobs, and their order of execution - build build-job: # This job runs in the build stage, which runs first. stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
  • Puoi anche sovrascrivere l'immagine e il tipo di calcolo nel tag. Consulta Calcola le immagini supportate dal runner CodeBuild-hosted GitLab l'elenco delle immagini curate. Per l'utilizzo di immagini personalizzate, consultaLe sostituzioni delle etichette sono supportate dal runner CodeBuild-hosted GitLab. Il tipo di calcolo e l'immagine nel tag sovrascriveranno le impostazioni dell'ambiente del progetto. Per sovrascrivere le impostazioni dell'ambiente per una build di calcolo di Amazon EC2, utilizza la seguente sintassi:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:<environment-type>-<image-identifier> - instance-size:<instance-size>

    Di seguito è riportato un esempio di pipeline YAML: GitLab CI/CD

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:arm-3.0 - instance-size:small
  • Puoi sovrascrivere la flotta utilizzata per la tua build nel tag. Ciò sostituirà le impostazioni del parco veicoli configurate nel progetto per utilizzare il parco veicoli specificato. Per ulteriori informazioni, consulta Run si basa su flotte a capacità riservata. Per sovrascrivere le impostazioni del parco macchine per una build di calcolo Amazon EC2, utilizza la seguente sintassi:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name>

    Per sovrascrivere sia la flotta che l'immagine utilizzate per la compilazione, utilizza la seguente sintassi:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    Di seguito è riportato un esempio di GitLab CI/CD pipeline YAML:

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:myFleet - image:arm-3.0
  • Per eseguire i lavori della GitLab CI/CD pipeline su un'immagine personalizzata, potete configurare un'immagine personalizzata nel CodeBuild progetto ed evitare di fornire un'etichetta di sostituzione dell'immagine. CodeBuild utilizzerà l'immagine configurata nel progetto se non viene fornita alcuna etichetta di sostituzione dell'immagine.

Dopo aver eseguito il commit delle modifiche.gitlab-ci.yml, verrà attivata una GitLab pipeline che build-job invierà una notifica webhook che avvierà la compilazione. CodeBuild

Esegui i comandi buildspec nelle fasi INSTALL, PRE_BUILD e POST_BUILD

Per impostazione predefinita, CodeBuild ignora qualsiasi comando buildspec durante l'esecuzione di una build autogestita. GitLab Per eseguire i comandi buildspec durante la compilazione, buildspec-override:true può essere aggiunto come suffisso a: tags

tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - buildspec-override:true

Usando questo comando, CodeBuild creerà una cartella chiamata gitlab-runner nella cartella di origine principale del contenitore. Quando il GitLab corridore parte durante la BUILD fase, verrà eseguito nella gitlab-runner directory.

Esistono diverse limitazioni quando si utilizza un override buildspec in una build autogestita: GitLab

  • CodeBuild non eseguirà i comandi buildspec durante la BUILD fase, poiché il runner autogestito viene eseguito nella fase. BUILD

  • CodeBuild non scaricherà alcuna fonte primaria o secondaria durante la fase. DOWNLOAD_SOURCE Se hai configurato un file buildspec, solo quel file verrà scaricato dalla fonte primaria del progetto.

  • Se un comando di compilazione fallisce nella INSTALL fase PRE_BUILD o, non CodeBuild verrà avviato il runner autogestito e il processo della GitLab CI/CD pipeline dovrà essere annullato manualmente.

  • CodeBuild recupera il token runner durante la DOWNLOAD_SOURCE fase, che ha una scadenza di un'ora. Se le tue INSTALL fasi PRE_BUILD o le tue fasi superano un'ora, il token runner potrebbe scadere prima dell'inizio del GitLab runner autogestito.

Fase 3: Rivedi i risultati

Ogni volta che si verifica l'esecuzione di una GitLab CI/CD pipeline, CodeBuild riceverebbe gli eventi del job della CI/CD pipeline tramite il webhook. Per ogni job in CI/CD pipeline, CodeBuild avvia una build per eseguire un runner effimero. GitLab Il runner è responsabile dell'esecuzione di un singolo job nella pipeline. CI/CD Una volta completato il lavoro, il corridore e il processo di compilazione associato verranno immediatamente interrotti.

Per visualizzare i log dei lavori della CI/CD pipeline, accedi al tuo repository in GitLab, scegli Build , Jobs, quindi scegli il Job specifico per cui desideri esaminare i log.

Puoi esaminare le etichette richieste nel registro mentre il lavoro è in attesa di essere ritirato da un runner in autogestito. CodeBuild

Filtra gli eventi GitLab webhook (CloudFormation)

La YAML-formatted parte seguente di un CloudFormation modello crea un gruppo di filtri che attiva una build quando la valutazione è vera. Il seguente gruppo di filtri specifica una richiesta di lavoro di GitLab CI/CD pipeline con un nome di CI/CD pipeline corrispondente all'espressione regolare. \[CI-CodeBuild\]

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Source: Type: GITLAB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: group-name Scope: GITLAB_GROUP FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]