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

Questo tutorial mostra come configurare i CodeBuild progetti per eseguire i job GitHub Actions. Per ulteriori informazioni sull'utilizzo di GitHub Actions, CodeBuild vedereTutorial: configura un GitHub Actions CodeBuild runner ospitato.

Per completare questo tutorial, è necessario innanzitutto:

  • Connettiti con un token di accesso personale, un segreto, un'app o OAuth GitHub un'app di Secrets Manager. Se desideri connetterti con un' OAuth app, devi utilizzare la CodeBuild console per farlo. Se desideri creare un token di accesso personale, puoi utilizzare la CodeBuild console o utilizzare l'ImportSourceCredentials API. Per ulteriori istruzioni, consulta GitHub e l'accesso a GitHub Enterprise Server in CodeBuild.

  • Connect CodeBuild al tuo GitHub account. A tale scopo, puoi effettuare una delle seguenti operazioni:

    Nota

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

Fase 1: Creare un CodeBuild progetto con un webhook

In questo passaggio, creerai un CodeBuild progetto con un webhook e lo esaminerai nella GitHub console. Puoi anche scegliere GitHub Enterprise come fornitore di origine. Per ulteriori informazioni sulla creazione di un webhook all'interno di GitHub Enterprise, consultaGitHub webhook manuali.

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

  3. In Tipo di progetto, scegli Runner project.

    In Runner:

    1. Per il provider Runner, scegli. GitHub

    2. Per la posizione del Runner, scegli Repository.

    3. Per Repository URL in Repository, scegli repository-name. https://github.com/user-name/

    Nota

    Per impostazione predefinita, il progetto riceverà solo WORKFLOW_JOB_QUEUED eventi per un singolo repository. Se desideri ricevere eventi per tutti gli archivi all'interno di un'organizzazione o di un'azienda, consulta. GitHub webhook globali e organizzativi

    • In Environment (Ambiente):

    • 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 self-hosted.

  4. Continua con i valori predefiniti, quindi scegli Crea progetto di compilazione.

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

Passaggio 2: aggiorna il flusso di lavoro di GitHub Actions (YAML)

In questo passaggio, aggiornerai il file YAML del flusso di lavoro GitHub Actions GitHubper configurare l'ambiente di compilazione e utilizzare i runner self-hosted di GitHub Actions in. CodeBuild Per ulteriori informazioni, consulta Uso delle etichette con runner ospitati autonomamente e. Le sostituzioni delle etichette sono supportate con il runner Actions -hosted CodeBuild GitHub

Aggiorna il tuo flusso di lavoro GitHub Actions (YAML)

Vai GitHube aggiorna l'runs-onimpostazione nel tuo flusso di lavoro GitHub Actions YAML per configurare il tuo ambiente di compilazione. A tale scopo, puoi effettuare una delle seguenti operazioni:

  • Puoi specificare il nome del progetto e l'ID di esecuzione, 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 lavoro GitHub Actions a un progetto specifico CodeBuild. Includendo il nome del progetto in YAML, CodeBuild è consentito richiamare lavori con le impostazioni di progetto corrette. Fornendo l'ID di esecuzione, CodeBuild mapperà la build a specifiche esecuzioni del flusso di lavoro e interromperà la compilazione quando l'esecuzione del flusso di lavoro viene annullata. Per ulteriori informazioni, consulta githubcontext.

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
    Nota

    Assicurati che <project-name> corrisponda al nome del progetto che hai creato nel passaggio precedente. Se non corrisponde, non CodeBuild elaborerà il webhook e il flusso di lavoro GitHub Actions potrebbe bloccarsi.

    Di seguito è riportato un esempio di flusso di lavoro GitHub Actions YAML:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!"
  • Puoi anche sovrascrivere l'immagine e il tipo di calcolo nell'etichetta. Vedi Immagini di calcolo supportate con il runner -hosted Actions CodeBuild GitHub per un elenco di immagini curate. Per l'utilizzo di immagini personalizzate, consultaLe sostituzioni delle etichette sono supportate con il runner Actions -hosted CodeBuild GitHub . 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 calcolo CodeBuild EC2 o Lambda, usa la seguente sintassi:

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - image:<environment-type>-<image-identifier> - instance-size:<instance-size>

    Di seguito è riportato un esempio di flusso di lavoro YAML di Actions GitHub :

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - image:arm-3.0 - instance-size:small steps: - run: echo "Hello World!"
  • Puoi sovrascrivere la flotta utilizzata per la tua build nell'etichetta. Ciò sovrascriverà 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 tuo parco macchine per una build di EC2 calcolo Amazon, usa la seguente sintassi:

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - fleet:<fleet-name>

    Per sovrascrivere sia la flotta che l'immagine utilizzate per la build, usa la seguente sintassi:

    runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    Di seguito è riportato un esempio di flusso di lavoro YAML di GitHub Actions:

    name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} - fleet:myFleet - image:arm-3.0 steps: - run: echo "Hello World!"
  • Per eseguire i lavori GitHub Actions 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.

  • Facoltativamente, puoi fornire etichette diverse da quelle supportate CodeBuild . Queste etichette verranno ignorate allo scopo di sovrascrivere gli attributi della build, ma non falliranno la richiesta del webhook. Ad esempio, l'aggiunta testLabel come etichetta non impedirà l'esecuzione della build.

Nota

Se una dipendenza fornita da GitHub -hosted runners non è disponibile nell' CodeBuildambiente, puoi installare la dipendenza utilizzando GitHub Actions nell'esecuzione del flusso di lavoro. Ad esempio, puoi usare l'setup-pythonazione per installare Python per il tuo ambiente di compilazione.

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 Actions ospitata autonomamente. GitHub Per eseguire i comandi buildspec durante la compilazione, è buildspec-override:true possibile aggiungere come suffisso all'etichetta:

runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} - buildspec-override:true

Utilizzando questo comando, CodeBuild creerà una cartella chiamata actions-runner nella cartella di origine principale del contenitore. Quando il runner GitHub Actions si avvia durante la BUILD fase, il runner verrà eseguito nella actions-runner directory.

Esistono diverse limitazioni quando si utilizza un override buildspec in una build di Actions ospitata autonomamente: GitHub

  • CodeBuild non eseguirà i comandi buildspec durante la BUILD fase, poiché il runner ospitato autonomamente 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 self-hosted e il processo di workflow GitHub Actions 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 ospitato autonomamente. GitHub

Passaggio 3: rivedi i risultati

Ogni volta che viene eseguito un flusso di lavoro GitHub Actions, riceve CodeBuild gli eventi del processo del flusso di lavoro tramite il webhook. Per ogni job del flusso di lavoro, CodeBuild avvia una build per eseguire un Actions runner temporaneo. GitHub Il runner è responsabile dell'esecuzione di un singolo processo di workflow. Una volta completato il processo, il runner e il processo di compilazione associato verranno immediatamente interrotti.

Per visualizzare i registri dei lavori del flusso di lavoro, accedi al tuo repository in GitHub, scegli Azioni, scegli il flusso di lavoro desiderato, 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 ritirato da un runner che si occupa di hosting autonomo. CodeBuild

Caricamento del registro del lavoro.

Una volta completato il lavoro, potrai visualizzarne il registro.

Il registro del lavoro.

GitHub Opzioni di configurazione di Actions Runner

È possibile specificare le seguenti variabili di ambiente nella configurazione del progetto per modificare la configurazione di installazione dei corridori ospitati autonomamente.

CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME

CodeBuild registrerà i corridori ospitati autonomamente con il nome dell'organizzazione specificato come valore di questa variabile di ambiente. Per ulteriori informazioni sulla registrazione dei corridori a livello di organizzazione e sulle autorizzazioni necessarie, consulta Creare una configurazione per un corridore per un' just-in-timeorganizzazione.

CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID

CodeBuild registrerà i corridori ospitati autonomamente nell'ID intero del gruppo di corridori memorizzato come valore di questa variabile di ambiente. Per impostazione predefinita, questo valore è 1. Per ulteriori informazioni sui gruppi di corridori ospitati autonomamente, consulta Gestione dell'accesso ai corridori ospitati autonomamente tramite gruppi.

Filtra GitHub Azioni webhook events ()AWS CloudFormation

La seguente parte di un AWS CloudFormation modello in formato YAML crea un gruppo di filtri che attiva una build quando restituisce true. Il seguente gruppo di filtri specifica una richiesta di lavoro del flusso di lavoro GitHub Actions con un nome di flusso di lavoro 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: GITHUB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: organization-name FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]

Filter GitHub Actions webhook events ()AWS CDK

Il AWS CDK modello seguente crea un gruppo di filtri che attiva una build quando restituisce true. Il seguente gruppo di filtri specifica una richiesta di lavoro del flusso di lavoro GitHub Actions.

import { aws_codebuild as codebuild } from 'aws-cdk-lib'; import {EventAction, FilterGroup} from "aws-cdk-lib/aws-codebuild"; const source = codebuild.Source.gitHub({ owner: 'owner', repo: 'repo', webhook: true, webhookFilters: [FilterGroup.inEventOf(EventAction.WORKFLOW_JOB_QUEUED)], })

Eventi webhook di Filter GitHub Actions (Terraform)

Il seguente modello Terraform crea un gruppo di filtri che attiva una build quando restituisce true. Il seguente gruppo di filtri specifica una richiesta di lavoro del flusso di lavoro GitHub Actions.

resource "aws_codebuild_webhook" "example" { project_name = aws_codebuild_project.example.name build_type = "BUILD" filter_group { filter { type = "EVENT" pattern = "WORKFLOW_JOB_QUEUED" } } }