Tutorial: configura un CodeBuild runner ospitato GitLab - 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 runner ospitato GitLab

Questo tutorial mostra come configurare i CodeBuild progetti per eseguire lavori di pipeline GitLab CI/CD. Per ulteriori informazioni sull'utilizzo GitLab o sulla gestione GitLab automatica con CodeBuild, consulta. Runner GitLab autogestiti in AWS CodeBuild

Per completare questo tutorial, è necessario innanzitutto:

  • Connect con un'OAuthapp utilizzando CodeConnections. Tieni presente che quando ti connetti a un'OAuthapp, devi utilizzare la CodeBuild console per farlo. Per ulteriori istruzioni, consultaGitLab 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_runner e manage_runner dall' GitLab OAuthapp. 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
  1. Apri la AWS CodeBuild console su 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 Source (Origine):

      • Per Source provider, scegli. GitLab

      • Per Credential, scegliete 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 Repository, scegli il nome del tuo progetto in GitLab specificando il percorso del progetto con lo spazio dei nomi.

    • Negli eventi webhook di Primary Source:

      • Per Webhook: facoltativo, seleziona Ricostruisci ogni volta che viene inviata una modifica al codice in questo repository.

      • Per Tipo di evento, seleziona _ _. WORKFLOW JOB QUEUED Una volta abilitata, le build verranno attivate solo dagli eventi GitLab CI/CD pipeline jobs.

        Nota

        CodeBuild elaborerà gli eventi dei processi di pipeline GitLab CI/CD solo se un webhook ha gruppi di filtri contenenti il filtro di eventi _ _. WORKFLOW JOB QUEUED

    • 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 tua pipeline GitLab CI/CD. 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, 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 che 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 per configurare l'ambiente di compilazione e utilizzare i runner autogestiti GitLabin esso. GitLab CodeBuild Per ulteriori informazioni, consulta Utilizzare corridori autogestiti.

Aggiorna la tua pipeline CI/CD GitLab YAML

Accedi al tuo https://gitlab.com/user-name/project-name/-/tree/branch-name repository e crea un .gitlab-ci.yml file. 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 inYAML, 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 il tuo <project-name> corrisponde al nome del progetto in cui hai creato CodeBuild. Se non corrisponde, non CodeBuild elaborerà il webhook e la pipeline GitLab CI/CD potrebbe bloccarsi.

    Di seguito è riportato un esempio di pipeline CI/CD: GitLab 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. Immagini di calcolo supportate con il runner -hosted CodeBuild GitLab Per un elenco delle immagini disponibili, consulta la sezione. Il tipo di calcolo e l'immagine nell'etichetta sovrascriveranno le impostazioni di ambiente del progetto. Per sovrascrivere le impostazioni dell'ambiente per una build di EC2 calcolo Amazon, 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 CI/CD: GitLab YAML

    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 EC2 calcolo Amazon, 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 pipeline GitLab CI/CD: 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 processi della pipeline GitLab CI/CD su un'immagine personalizzata, è possibile 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 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, _ e INSTALL _ PRE BUILD 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 BUILD fase, poiché il runner autogestito viene eseguito durante la 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 principale del progetto.

  • Se un comando build fallisce nella INSTALL fase PRE_BUILD or, non CodeBuild avvierà il runner autogestito e il processo della pipeline GitLab CI/CD 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 superano un'ora, il runner token potrebbe scadere prima dell'inizio del runner autogestito GitLab .

Passaggio 3: rivedi i risultati

Ogni volta che si tratta di un lavoro in GitLab CI/CD pipeline run occurs, CodeBuild would receive the CI/CD pipeline job events through the webhook. For each job in the CI/CD pipeline, CodeBuild starts a build to run an ephemeral GitLab runner. The runner is responsible for executing a single CI/CD pipeline. Una volta completato il lavoro, il runner e il processo di compilazione associato verranno immediatamente interrotti.

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

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

Filtra gli GitLab eventi webhook ()AWS CloudFormation

La seguente parte YAML formattata di un AWS CloudFormation modello crea un gruppo di filtri che attiva una build quando restituisce true. Il seguente gruppo di filtri specifica un nome di GitLab CI/CD pipeline job request with a 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 FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]