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à.
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'OAuthapp, devi utilizzare la CodeBuild console per farlo. Se desideri creare un token di accesso personale, puoi utilizzare la CodeBuild console o utilizzare il ImportSourceCredentials API. Per ulteriori istruzioni, consultaGitHub e l'accesso a GitHub Enterprise Server in CodeBuild.
-
Connect CodeBuild al tuo GitHub account. A tale scopo, puoi effettuare una delle seguenti operazioni:
-
Puoi aggiungerlo GitHub come provider di origine nella console. Puoi connetterti con un token di accesso personale, un segreto di Secrets Manager, OAuth un'app o GitHub un'app. Per istruzioni, consulta GitHub e l'accesso a GitHub Enterprise Server in CodeBuild.
-
Puoi importare GitHub le tue credenziali tramite. ImportSourceCredentials API Questo può essere fatto solo con un token di accesso personale. Se ti connetti tramite un'OAuthapp, devi invece connetterti utilizzando la console. Per istruzioni, consulta Connect GitHub con un token di accesso (CLI) .
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
-
Apri la AWS CodeBuild console su 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 Source (Origine):
-
Per Source provider, scegli. GitHub
-
Per Repository, scegli Repository nel mio GitHub account.
-
Per Repository URL, inserisci.
https://github.com/
user-name
/repository-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 -
-
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 GitHubActions workflow jobs.
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):
-
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 nel flusso di lavoro GitHub Actions. YAML Per ulteriori informazioni, consulta Passaggio 2: aggiorna il flusso di lavoro GitHub Actions YAML
-
-
In Buildspec:
-
Nota che il tuo buildspec verrà ignorato a meno che non
buildspec-override:true
venga aggiunto come etichetta. Invece, lo CodeBuild sovrascriverà per utilizzare i comandi che configureranno il runner self-hosted.
-
-
-
Continua con i valori predefiniti, quindi scegli Crea progetto di compilazione.
-
Apri la GitHub console all'indirizzo
https://github.com/
per verificare che un webhook sia stato creato e che sia abilitato a fornire eventi Workflow jobs.user-name
/repository-name
/settings/hooks
Passaggio 2: aggiorna il flusso di lavoro GitHub Actions YAML
In questo passaggio, aggiornerai il YAML file del flusso di lavoro GitHub Actions GitHub
Aggiorna il flusso di lavoro Actions GitHub YAML
Vai GitHub
runs-on
-
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 inYAML, 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
github
context. runs-on: codebuild-
<project-name>
-${{ github.run_id }}-${{ github.run_attempt }}Nota
Assicurati che il tuo
<project-name>
corrisponde al nome del progetto 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 YAML Actions:
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. Immagini di calcolo supportate con il runner -hosted Actions CodeBuild GitHub 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 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 Actions: GitHub YAML
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 GitHub Actions: YAML
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!"
-
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-python
Esegui i comandi buildspec nelle fasiINSTALL, PRE _ e _ BUILD 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
fasePRE_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 tueINSTALL
fasiPRE_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

Una volta completato il lavoro, potrai visualizzarne il registro.

Filter GitHub Actions webhook events ()AWS CloudFormation
La parte YAML formattata di seguito di un AWS CloudFormation
modello 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"
}
}
}