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 CodeBuild progetti per eseguire processi di GitLab CI/CD pipeline. Per ulteriori informazioni sull'utilizzo GitLab o sulla gestione GitLab autonoma con CodeBuild, consultaSelf-managed GitLab corridori in AWS CodeBuild.
Per completare questo tutorial, è necessario innanzitutto:
-
Connect con un'app OAuth utilizzando. CodeConnections Tieni presente che quando ti connetti a un'app OAuth, devi utilizzare la CodeBuild console per farlo. Per ulteriori istruzioni, consulta GitLab accesso in CodeBuild.
-
Connect CodeBuild al tuo GitLab account. A tale scopo, puoi aggiungerlo GitLab come provider di origine nella console. Per istruzioni, consulta GitLab accesso in CodeBuild.
Nota
Questa operazione deve essere eseguita solo se non hai ancora effettuato GitLab la connessione al tuo account.
Con questa funzione, sono CodeBuild necessarie autorizzazioni aggiuntive, ad esempio
create_runneremanage_runnerdall'app GitLab OAuth. Se esistono CodeConnections per un determinato GitLab account, non richiede automaticamente gli aggiornamenti delle autorizzazioni. A tale scopo, puoi accedere alla CodeConnections console e creare una connessione fittizia allo stesso GitLab account per attivare la riautorizzazione e ottenere le autorizzazioni aggiuntive. In questo modo, tutte le connessioni esistenti possono utilizzare la funzionalità 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
Apri la AWS CodeBuild console all'indirizzo https://console.aws.amazon.com/codesuite/codebuild/home
. -
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 Runner project.
-
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 Credenziali di origine personalizzate. La connessione personalizzata applica una GitLab connessione personalizzata che sostituisce le impostazioni predefinite dell'account.
Nota
Se non hai già creato una connessione con il tuo provider, dovrai crearne una nuova GitLab . Per istruzioni, consulta Connect 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 lo spazio dei nomi.
-
-
In Environment (Ambiente):
-
Scegli un'immagine Environment supportata e Calcola. Tieni presente 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:trueInvece, lo CodeBuild sovrascriverà per utilizzare i comandi che configureranno il runner autogestito.
-
-
-
Continua con i valori predefiniti, quindi scegli Crea progetto di compilazione.
-
Apri la GitLab console all'indirizzo
https://gitlab.com/per verificare che un webhook sia stato creato e che sia abilitato a fornire eventi Workflow jobs.user-name/repository-name/-/hooks
Passaggio 2: crea un file.gitlab-ci.yml nel tuo repository
In questo passaggio, creerai un .gitlab-ci.yml file per configurare l'ambiente di compilazione e utilizzare i runner GitLab
Aggiorna la tua pipeline YAML GitLab CI/CD
Vai al tuo https://gitlab.com/ repository e crea un user-name/project-name/-/tree/branch-name.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 la dimensione 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 è consentito 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 compilazione a specifiche esecuzioni di processi di pipeline e interrompere la compilazione quando l'esecuzione della pipeline viene annullata.Nota
Assicurati che
<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.Di seguito è riportato 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. Vedi Immagini di calcolo supportate dal runner CodeBuild-hosted GitLab per un elenco di 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 di ambiente del progetto. Per sovrascrivere le impostazioni dell'ambiente per una build di calcolo Amazon EC2, usa 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ò sovrascriverà le impostazioni della flotta configurate nel tuo progetto per utilizzare la flotta specificata. Per ulteriori informazioni, consulta Run si basa su flotte a capacità riservata. Per sovrascrivere le impostazioni del tuo parco macchine per una build di calcolo Amazon EC2, usa 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 build, usa 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, puoi configurare un'immagine personalizzata nel tuo 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 confermato le modifiche a.gitlab-ci.yml, verrà attivata una GitLab pipeline e 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 quando si esegue una build autogestita. GitLab Per eseguire i comandi buildspec durante la compilazione, buildspec-override:true possono essere aggiunti come suffisso a: tags
tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - buildspec-override:true
Utilizzando 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, il corridore 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
BUILDfase, poiché il runner autogestito viene eseguito durante la fase.BUILD -
CodeBuild non scaricherà alcuna fonte primaria o secondaria durante la fase.
DOWNLOAD_SOURCESe hai configurato un file buildspec, solo quel file verrà scaricato dalla fonte principale del progetto. -
Se un comando build fallisce nella
INSTALLfasePRE_BUILDor, non CodeBuild avvierà il runner autogestito e il processo della GitLab CI/CD pipeline dovrà essere annullato manualmente. -
CodeBuild recupera il token runner durante la
DOWNLOAD_SOURCEfase, che ha una scadenza di un'ora. Se le tueINSTALLfasiPRE_BUILDo superano un'ora, il runner token potrebbe scadere prima dell'inizio del runner autogestito GitLab .
Passaggio 3: rivedi i risultati
Ogni volta che si verifica l'esecuzione di una GitLab CI/CD pipeline, riceve CodeBuild gli eventi del processo della CI/CD pipeline tramite il webhook. Per ogni job nella CI/CD pipeline, CodeBuild avvia una build per eseguire un runner effimero. GitLab Il runner è responsabile dell'esecuzione di un singolo processo di pipeline. CI/CD Una volta completato il lavoro, il runner 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 il quale desideri esaminare i log.
Puoi rivedere le etichette richieste nel registro mentre il lavoro è in attesa di essere completato da un runner autogestito. CodeBuild
Filtra gli GitLab eventi webhook ()CloudFormation
La YAML-formatted parte seguente di un CloudFormation
modello crea un gruppo di filtri che attiva una build quando restituisce true. 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\]