Configura gli GitHub Actions runner ospitati autonomamente in AWS 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à.

Configura gli GitHub Actions runner ospitati autonomamente in AWS CodeBuild

Puoi configurare il tuo progetto per configurare gli GitHub Actions runner ospitati autonomamente in CodeBuild contenitori per elaborare i GitHub job del flusso di lavoro Actions. Questo può essere fatto configurando un webhook utilizzando il CodeBuild progetto e aggiornando il flusso di lavoro GitHub Actions YAML per utilizzare runner ospitati autonomamente ospitati su macchine. CodeBuild Per ulteriori informazioni, consulta Informazioni sui corridori ospitati autonomamente.

I passaggi di alto livello per configurare un CodeBuild progetto per l'esecuzione dei job GitHub Actions sono i seguenti:

  1. Se non l'hai già fatto, crea un token di accesso personale o connettiti con un'app OAuth a cui connettere il tuo progetto. GitHub

  2. Accedi alla CodeBuild console e crea un CodeBuild progetto con un webhook e configura i filtri webhook.

  3. Aggiorna il tuo flusso di lavoro GitHub Actions in YAML GitHub per configurare il tuo ambiente di compilazione.

Per una procedura più dettagliata, consulta. Tutorial: configura un Actions runner ospitato CodeBuild autonomamente GitHub

Questa funzionalità consente ai job del flusso di lavoro GitHub Actions di ottenere l'integrazione nativa con AWS, il che offre sicurezza e praticità attraverso funzionalità come IAM AWS CloudTrail, AWS Secrets Manager integrazione e Amazon VPC. Puoi accedere ai tipi di istanze più recenti, incluse le istanze basate su ARM.

Tutorial: configura un Actions runner ospitato CodeBuild autonomamente GitHub

Questo tutorial mostra come configurare i CodeBuild progetti per eseguire i job GitHub Actions.

Prerequisiti

Per completare questo tutorial, è necessario innanzitutto:

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.

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 Source (Origine):

      • Per Provider di origine, scegli GitHub.

      • Per Repository, scegli Repository nel mio GitHub account.

      • Nel campo Repository URL (URL repository), inserire https://github.com/user-name/repository-name

    • 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, selezionate WORKFLOW_JOB_QUEUED. Una volta abilitato, le build verranno attivate solo dagli eventi Actions workflow jobs. GitHub

        Nota

        CodeBuild elaborerà gli eventi dei job del flusso di lavoro GitHub Actions solo se un webhook ha gruppi di filtri contenenti il filtro di eventi WORKFLOW_JOB_QUEUED.

    • In Environment (Ambiente):

      • Scegliete un'immagine Environment supportata e Compute. Tieni presente che hai la possibilità di sovrascrivere le impostazioni dell'immagine e dell'istanza utilizzando un'etichetta nel flusso di lavoro GitHub Actions (YAML). Per ulteriori informazioni, consulta Passaggio 2: aggiorna il flusso di lavoro di GitHub Actions (YAML)

    • In Buildspec:

      • Nota che il tuo Buildspec verrà ignorato. Invece, lo CodeBuild sovrascriverà per utilizzare i comandi che configureranno il runner ospitato autonomamente. La responsabilità principale di questo progetto è quella di configurare un runner ospitato autonomamente per eseguire i processi del flusso di lavoro CodeBuild di Actions. GitHub

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

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

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. Ciò sovrascriverà le impostazioni di ambiente del progetto. Per sovrascrivere le impostazioni dell'ambiente per una build di calcolo Amazon EC2, usa la seguente sintassi:

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

    Per sovrascrivere le impostazioni dell'ambiente per una build di calcolo Lambda, usa la seguente sintassi:

    runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}-<environment-type>-<runtime-version>-<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 }}-arm-3.0-small steps: - run: echo "Hello World!"
Nota

Se una dipendenza fornita da GitHub -hosted runners non è disponibile nell' CodeBuild ambiente, 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.

Immagini di calcolo supportate

Nell'etichetta, puoi sovrascrivere le impostazioni dell'ambiente Amazon EC2 utilizzando i valori nelle prime tre colonne. CodeBuild fornisce le seguenti immagini di calcolo di Amazon EC2:

Immagine Versione dell'immagine Dimensioni istanza Piattaforma Identificatore dell'immagine Definizione

linux

4.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Amazon Linux 2 aws/codebuild/amazonlinux2-x86_64-standard:4.0 al2/standard/4.0

linux

5.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-x86_64-standard:5.0 al2/standard/5.0

arm

2.0

small

large

Amazon Linux 2 aws/codebuild/amazonlinux2-aarch64-standard:2.0 al2/aarch64/standard/2.0

arm

3.0

Amazon Linux 2023 aws/codebuild/amazonlinux2-aarch64-standard:3.0 al2/aarch64/standard/3.0

ubuntu

5.0

small

medium

large

xlarge

2xlarge

gpu_small

gpu_large

Ubuntu 20.04 aws/codebuild/standard:5.0 ubuntu/standard/5.0

ubuntu

6.0

Ubuntu 22.04 aws/codebuild/standard:6.0 ubuntu/standard/6.0

ubuntu

7.0

Ubuntu 22.04 aws/codebuild/standard:7.0 ubuntu/standard/7.0

windows

1.0

medium

large

Windows Server Core 2019 aws/codebuild/windows-base:2019-1.0 N/D

windows

2.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-2.0 N/D

windows

3.0

Windows Server Core 2019 aws/codebuild/windows-base:2019-3.0 N/D

Inoltre, puoi sovrascrivere le impostazioni dell'ambiente Lambda utilizzando i seguenti valori. Per ulteriori informazioni sul calcolo CodeBuild Lambda, consulta Working with. Lavorare con il AWS Lambda calcolo in AWS CodeBuild CodeBuild supporta le seguenti immagini di calcolo Lambda:

Tipo di ambiente Versione di runtime Dimensioni istanza

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

Per ulteriori informazioni, consulta Modi e tipi di calcolo dell'ambiente di creazione e Immagini Docker fornite da CodeBuild.

Fase 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 workflow, 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

Una volta completato il lavoro, potrai visualizzarne il registro.

Informazioni su CodeBuild -hosted GitHub Actions runner

Quando devo includere l'immagine e le sostituzioni delle istanze nell'etichetta?

Puoi includere le sostituzioni di immagini e istanze nell'etichetta per specificare un ambiente di compilazione diverso per ciascuno dei processi del flusso di lavoro Actions. GitHub Questa operazione può essere eseguita senza la necessità di creare più CodeBuild progetti o webhook. Ad esempio, ciò è utile quando è necessario utilizzare una matrice per i lavori del flusso di lavoro.

name: Hello World on: [push] jobs: Hello-World-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.os }} strategy: matrix: os: [arm-3.0-small, al2-5.0-large] steps: - run: echo "Hello World!"
Nota

Le virgolette potrebbero essere necessarie se runs-on sono presenti più etichette contenenti il contesto GitHub Actions.

Posso usare AWS CloudFormation per questa funzionalità?

Sì, puoi includere un gruppo di filtri nel tuo AWS CloudFormation modello che specifichi un filtro GitHub Actions workflow Job Event nel webhook del progetto.

Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED

Per ulteriori informazioni, consulta Filtra gli eventi GitHub webhook ()AWS CloudFormation.

Se hai bisogno di aiuto per configurare le credenziali del progetto nel tuo AWS CloudFormation modello, consulta AWS::CodeBuild::SourceCredentialla Guida per l'AWS CloudFormation utente per ulteriori informazioni.

Quali regioni supportano l'utilizzo di un GitHub Actions CodeBuild runner -hosted?

CodeBuildI runner -hosted GitHub Actions sono supportati in tutte le regioni. CodeBuild Per ulteriori informazioni su Regioni AWS dove CodeBuild è disponibile, consulta AWS Servizi per regione.

Quali piattaforme supportano l'utilizzo di un GitHub Actions runner CodeBuild ospitato?

CodeBuild-hosted GitHub Actions runner sono supportati sia su Amazon AWS LambdaEC2 che su Compute. Puoi utilizzare le seguenti piattaforme: Amazon Linux 2, Amazon Linux 2023, Ubuntu e Windows Server Core 2019. Per ulteriori informazioni, consulta Immagini di calcolo EC2 e Immagini di calcolo Lambda.

Risoluzione dei problemi: come posso risolvere i problemi se il webhook non funziona?

Problema: il webhook non funziona o il processo del flusso di lavoro è in sospeso. GitHub

Possibile causa: il tuo evento webhook Workflow jobs potrebbe non riuscire ad attivare una build. Esamina i registri delle risposte per visualizzare la risposta o il messaggio di errore.

Soluzione consigliata: per eseguire il debug di questo errore, utilizzare le seguenti istruzioni.

  1. Apri la GitHub console all'indirizzo https://github.com/user-name/repository-name/settings/hooks per visualizzare le impostazioni del webhook del tuo repository. In questa pagina, vedrai un webhook creato per il tuo repository.

  2. Scegli Modifica e conferma che il webhook è abilitato a fornire eventi di lavoro Workflow.

  3. Vai alla scheda Consegne recenti, trova l'evento corrispondente workflow_job.queued ed espandi l'evento.

  4. Controlla il campo delle etichette nel Payload e assicurati che sia come previsto.

  5. Infine, esamina la scheda Risposta, poiché contiene la risposta o il messaggio di errore restituito da CodeBuild.