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 GitHub Actions runner
Questo tutorial mostra come configurare i tuoi CodeBuild progetti per eseguire lavori GitHub Actions. Per ulteriori informazioni sull'utilizzo di GitHub Actions con, CodeBuild consultaTutorial: configura un CodeBuild-hosted GitHub Actions runner.
Per completare questo tutorial, è necessario innanzitutto:
-
Connettiti con un token di accesso personale, un segreto di Secrets Manager, un'app OAuth o GitHub un'app. Se desideri connetterti con un'app OAuth, 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.
-
Connettiti CodeBuild al tuo GitHub account. A tale scopo, puoi effettuare una delle seguenti operazioni:
-
Puoi aggiungerlo GitHub come fornitore di origine nella console. Puoi connetterti con un token di accesso personale, un segreto di Secrets Manager, un'app OAuth o GitHub un'app. Per istruzioni, consulta l’argomento GitHub e l'accesso a GitHub Enterprise Server in CodeBuild.
-
Puoi importare GitHub le tue credenziali tramite l'API. ImportSourceCredentials Questa operazione può essere eseguita solo con un token di accesso personale. Se ti connetti utilizzando un'app OAuth, devi invece connetterti utilizzando la console. Per istruzioni, consulta l’argomento Connettiti GitHub con un token di accesso (CLI).
Nota
Questa operazione deve essere eseguita solo se non ti sei connesso al tuo GitHub account.
-
Passaggio 1: crea 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 saperne di più sulla creazione di un webhook in GitHub Enterprise, consultaGitHub webhook manuali.
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 Progetto Runner.
In Runner:
-
Per il provider Runner, scegli. GitHub
-
Per la posizione di Runner, scegli Repository.
-
Per l'URL del repository in Repository, scegli. https://github.com/user-name/repository-name
Nota
Per impostazione predefinita, il progetto riceverà solo
WORKFLOW_JOB_QUEUEDeventi per un singolo repository. Se desideri ricevere eventi per tutti i repository all'interno di un'organizzazione o impresa, consulta. GitHub webhook globali e organizzativi -
-
-
In Environment (Ambiente):
-
Scegli un'immagine dell'ambiente supportata ed esegui il calcolo. Nota che hai la possibilità di sovrascrivere le impostazioni dell'immagine e dell'istanza utilizzando un'etichetta nel tuo flusso di lavoro GitHub Actions YAML. Per ulteriori informazioni, consulta Passaggio 2: aggiorna il tuo flusso di lavoro GitHub Actions YAML
-
-
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 self-hosted.
-
-
-
Continua con i valori predefiniti e quindi scegli Create build project.
-
Apri la GitHub console all'indirizzo
https://github.com/per verificare che un webhook sia stato creato e sia abilitato a fornire eventi Workflow jobs.user-name/repository-name/settings/hooks
Passaggio 2: aggiorna il tuo flusso di lavoro GitHub Actions YAML
In questo passaggio, aggiornerai il file YAML del flusso di lavoro di GitHub Actions GitHub
Aggiorna il tuo flusso di lavoro GitHub Actions (YAML).
Accedi GitHubruns-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 le dimensioni dell'istanza. Il nome del progetto è necessario per collegare le impostazioni AWS relative del job GitHub Actions a un progetto specifico CodeBuild. Includendo il nome del progetto in YAML, CodeBuild è possibile richiamare lavori con le impostazioni di progetto corrette. Fornendo l'ID di esecuzione, CodeBuild associa la build a specifiche esecuzioni del flusso di lavoro e la interrompe quando l'esecuzione del flusso di lavoro viene annullata. Per ulteriori informazioni, consulta
githubcontesto.runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}Nota
Assicurati che il tuo nome
<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 Azioni 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. Consulta Calcola le immagini supportate con Actions runner CodeBuild-hosted GitHub l'elenco delle immagini curate. Per l'utilizzo di immagini personalizzate, consultaLe sostituzioni delle etichette sono supportate da Actions runner CodeBuild-hosted GitHub. Il tipo di calcolo e l'immagine nell'etichetta sovrascriveranno le impostazioni dell'ambiente del progetto. Per sovrascrivere le impostazioni dell'ambiente per una build di elaborazione 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 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!" -
Puoi sovrascrivere il parco macchine utilizzato per la tua build nell'etichetta. Ciò sostituirà le impostazioni della flotta configurate nel progetto per utilizzare la flotta specificata. Per ulteriori informazioni, consulta Run si basa su flotte a capacità riservata. Per sovrascrivere le impostazioni del parco macchine per una build di calcolo Amazon EC2, utilizza 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 compilazione, utilizza 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 }} 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 daranno esito negativo alla richiesta del webhook. Ad esempio, l'aggiunta
testLabelcome etichetta non impedirà l'esecuzione della build.
Nota
Se una dipendenza fornita dai GitHub-hosted runner non è disponibile nell' CodeBuildambiente, puoi installarla utilizzando GitHub Actions nell'esecuzione del flusso di lavoro. Ad esempio, puoi usare l'setup-python
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
Usando 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 Actions ospitata autonomamente: GitHub
-
CodeBuild non eseguirà i comandi buildspec durante la
BUILDfase, poiché il runner self-hosted 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 primaria del progetto. -
Se un comando di compilazione ha esito negativo nella
INSTALLfasePRE_BUILDo, non CodeBuild verrà avviato il runner ospitato autonomamente e il processo del flusso di lavoro GitHub Actions deve essere annullato manualmente. -
CodeBuild recupera il token runner durante la
DOWNLOAD_SOURCEfase, che ha una scadenza di un'ora. Se le tueINSTALLfasiPRE_BUILDo le tue fasi superano un'ora, il token del runner potrebbe scadere prima dell'inizio del GitHub runner ospitato autonomamente.
Fase 3: Rivedi i risultati
Ogni volta che si verifica l'esecuzione di un workflow GitHub Actions, CodeBuild riceverebbe gli eventi relativi al job del workflow tramite il webhook. Per ogni processo del flusso di lavoro, CodeBuild avvia una build per eseguire un Actions runner temporaneo. GitHub Il runner è responsabile dell'esecuzione di un singolo processo del flusso di lavoro. Una volta completato il lavoro, il corridore e il processo di compilazione associato verranno immediatamente interrotti.
Per visualizzare i registri dei processi del flusso di lavoro, accedi al tuo repository in GitHub, scegli Azioni, scegli il flusso di lavoro desiderato, quindi scegli il lavoro 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 in hosting autonomo. CodeBuild
Una volta completato il lavoro, sarà possibile visualizzare 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 configurazione dei runner 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, vedi Create configuration for a just-in-time runner for an organization.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAME-
CodeBuild registrerà i corridori ospitati autonomamente con il nome aziendale specificato come valore di questa variabile di ambiente. Per ulteriori informazioni sulla registrazione dei runner a livello aziendale e sulle autorizzazioni necessarie, vedi Create configuration for a just-in-time runner for an Enterprise.
Nota
Per impostazione predefinita, i runner aziendali non sono disponibili negli archivi dell'organizzazione. Per consentire ai runner ospitati autonomamente di accettare i lavori del flusso di lavoro, potrebbe essere necessario configurare le impostazioni di accesso del gruppo di corridori. Per ulteriori informazioni, consulta Rendere i runner aziendali disponibili nei repository.
CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID-
CodeBuild registrerà i corridori ospitati autonomamente con l'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, vedi Gestione dell'accesso ai corridori ospitati autonomamente utilizzando i gruppi.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAMEPer configurare la registrazione dei corridori a livello di organizzazione utilizzando il file YAML del flusso di lavoro GitHub Actions, puoi utilizzare la seguente sintassi:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} organization-registration-name:myOrganization steps: - run: echo "Hello World!"CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAMEPer configurare la registrazione dei runner di livello aziendale utilizzando il file YAML del flusso di lavoro GitHub Actions, puoi utilizzare la seguente sintassi:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} enterprise-registration-name:myEnterprise steps: - run: echo "Hello World!"CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_IDPer configurare la registrazione dei corridori con un ID di gruppo di corridori specifico utilizzando il file YAML del flusso di lavoro GitHub Actions, puoi utilizzare la seguente sintassi:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} registration-group-id:3 steps: - run: echo "Hello World!"
GitHub Filtra: azioni, eventi webhook (CloudFormation)
La YAML-formatted parte seguente di un CloudFormation
modello crea un gruppo di filtri che attiva una build quando la valutazione è vera. 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 Scope: GITHUB_ORGANIZATION FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]
Filtra gli GitHub eventi webhook di Actions (AWS CDK)
Il AWS CDK modello seguente crea un gruppo di filtri che attiva una build quando la valutazione è vera. 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)], })
Filtra gli eventi webhook di GitHub Actions (Terraform)
Il seguente modello Terraform crea un gruppo di filtri che attiva una build quando risulta vera. 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" } } }
Filtra gli GitHub eventi webhook di Actions (AWS CLI)
AWS CLI I comandi seguenti creano un progetto GitHub Actions runner ospitato autonomamente con un gruppo di filtri per le richieste di lavoro del flusso di lavoro di GitHub Actions che attiva una build quando risulta vera.
aws codebuild create-project \ --name <project name> \ --source "{\"type\":\"GITHUB\",\"location\":\"<repository location>\",\"buildspec\":\"\"}" \ --artifacts {"\"type\":\"NO_ARTIFACTS\""} \ --environment "{\"type\": \"LINUX_CONTAINER\",\"image\": \"aws/codebuild/amazonlinux-x86_64-standard:5.0\",\"computeType\": \"BUILD_GENERAL1_MEDIUM\"}" \ --service-role "<service role ARN>"
aws codebuild create-webhook \ --project-name <project name> \ --filter-groups "[[{\"type\":\"EVENT\",\"pattern\":\"WORKFLOW_JOB_QUEUED\"}]]"