Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial: Konfigurieren Sie einen CodeBuild-hosted GitHub Actions-Runner
Dieses Tutorial zeigt Ihnen, wie Sie Ihre CodeBuild Projekte für die Ausführung von GitHub Actions-Jobs konfigurieren. Weitere Informationen zur Verwendung von GitHub Actions mit CodeBuild finden Sie unterTutorial: Konfigurieren Sie einen CodeBuild-hosted GitHub Actions-Runner.
Um dieses Tutorial abzuschließen, müssen Sie zunächst:
-
Stellen Sie eine Verbindung mit einem persönlichen Zugriffstoken, einem Secrets Manager-Schlüssel, einer OAuth-App oder GitHub einer App her. Wenn Sie eine Verbindung mit einer OAuth-App herstellen möchten, müssen Sie dazu die CodeBuild Konsole verwenden. Wenn Sie ein persönliches Zugriffstoken erstellen möchten, können Sie entweder die CodeBuild Konsole oder die API verwenden. ImportSourceCredentials Weitere Anweisungen finden Sie unter GitHub und GitHub Enterprise Server-Zugriff in CodeBuild.
-
Stellen Sie eine Verbindung CodeBuild zu Ihrem GitHub Konto her. Dazu können Sie einen der folgenden Schritte ausführen:
-
Sie können in der Konsole GitHub als Quellanbieter hinzufügen. Sie können eine Verbindung entweder mit einem persönlichen Zugriffstoken, einem Secrets Manager-Geheimnis, einer OAuth-App oder GitHub einer App herstellen. Detaillierte Anweisungen finden Sie unter GitHub und GitHub Enterprise Server-Zugriff in CodeBuild.
-
Sie können Ihre GitHub Anmeldeinformationen über die ImportSourceCredentials API importieren. Dies ist nur mit einem persönlichen Zugriffstoken möglich. Wenn Sie eine Verbindung über eine OAuth-App herstellen, müssen Sie stattdessen die Konsole verwenden. Detaillierte Anweisungen finden Sie unter Stellen Sie eine Verbindung GitHub mit einem Zugriffstoken (CLI) her.
Anmerkung
Dies muss nur getan werden, wenn Sie GitHub für Ihr Konto keine Verbindung hergestellt haben.
-
Schritt 1: Erstellen Sie ein CodeBuild Projekt mit einem Webhook
In diesem Schritt erstellen Sie ein CodeBuild Projekt mit einem Webhook und überprüfen es in der GitHub Konsole. Sie können GitHub Enterprise auch als Ihren Quellanbieter wählen. Weitere Informationen zum Erstellen eines Webhooks in GitHub Enterprise finden Sie unterGitHub manuelle Webhooks.
So erstellen Sie ein CodeBuild Projekt mit einem Webhook
Öffnen Sie die AWS CodeBuild Konsole unter. https://console.aws.amazon.com/codesuite/codebuild/home
-
Erstellen Sie ein Build-Projekt. Weitere Informationen finden Sie unter Erstellen Sie ein Build-Projekt (Konsole) und Ausführen eines Build (Konsole).
-
Wählen Sie unter Projekttyp die Option Runner-Projekt aus.
In Runner:
-
Wählen Sie als Runner-Anbieter GitHub.
-
Wählen Sie als Runner-Standort die Option Repository aus.
-
Wählen Sie für Repository-URL unter Repository die Option https://github.com/user-name/repository-name.
Anmerkung
Standardmäßig erhält Ihr Projekt nur
WORKFLOW_JOB_QUEUEDEreignisse für ein einzelnes Repository. Wenn Sie Ereignisse für alle Repositorys innerhalb einer Organisation oder eines Unternehmens erhalten möchten, finden Sie weitere Informationen unterGitHub globale Webhooks und Organisations-Webhooks. -
-
-
In Environment (Umgebung):
-
Wählen Sie ein unterstütztes Umgebungs-Image und berechnen Sie. Beachten Sie, dass Sie die Option haben, die Image- und Instanzeinstellungen zu überschreiben, indem Sie ein Label in Ihrem GitHub Aktionsworkflow YAML verwenden. Weitere Informationen finden Sie unter Schritt 2: Aktualisieren Sie Ihren GitHub Aktionsworkflow YAML.
-
-
In Buildspec (Build-Spezifikation):
-
Beachten Sie, dass Ihre Buildspec ignoriert wird, sofern sie nicht als Label hinzugefügt
buildspec-override:truewird. Stattdessen überschreibt es, CodeBuild um Befehle zu verwenden, die den selbst gehosteten Runner einrichten.
-
-
-
Fahren Sie mit den Standardwerten fort und wählen Sie dann Create build project.
-
Öffnen Sie die GitHub Konsole unter,
https://github.com/um zu überprüfen, ob ein Webhook erstellt wurde und für die Übermittlung von Workflow-Auftragsereignissen aktiviert ist.user-name/repository-name/settings/hooks
Schritt 2: Aktualisieren Sie Ihren GitHub Aktionsworkflow YAML
In diesem Schritt aktualisieren Sie Ihre YAML-Datei für den GitHub Aktionsworkflow, um Ihre Build-Umgebung GitHub
Aktualisieren Sie Ihren GitHub Aktionsworkflow (YAML).
Navigieren Sie zu Ihrem GitHub Aktionsworkflow YAML GitHubruns-on
-
Sie können den Projektnamen und die Ausführungs-ID angeben. In diesem Fall verwendet der Build Ihre bestehende Projektkonfiguration für die Berechnung, das Image, die Image-Version und die Instanzgröße. Der Projektname wird benötigt, um die zugehörigen AWS Einstellungen Ihres GitHub Actions-Jobs mit einem bestimmten CodeBuild Projekt zu verknüpfen. Indem Sie den Projektnamen in die YAML aufnehmen, CodeBuild ist es möglich, Jobs mit den richtigen Projekteinstellungen aufzurufen. Durch Angabe der Ausführungs-ID wird Ihr Build bestimmten Workflow-Ausführungen zugeordnet und der Build wird gestoppt, wenn der Workflow-Lauf abgebrochen wird. CodeBuild Weitere Informationen finden Sie unter
githubKontext. runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}Anmerkung
Stellen Sie sicher, dass Ihr
<project-name>mit dem Namen des Projekts übereinstimmt, das Sie im vorherigen Schritt erstellt haben. Wenn er nicht übereinstimmt, CodeBuild wird der Webhook nicht verarbeitet und der GitHub Aktionsworkflow hängt möglicherweise.Das Folgende ist ein Beispiel für einen GitHub Aktionsworkflow (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!" -
Sie können auch Ihr Bild und den Berechnungstyp im Label überschreiben. Eine Liste der kuratierten Bilder finden Sie unterBerechnen Sie Bilder, die vom Actions-Runner unterstützt CodeBuild-hosted GitHub werden. Informationen zur Verwendung benutzerdefinierter Bilder finden Sie unterLabelüberschreibungen werden vom Actions-Runner unterstützt CodeBuild-hosted GitHub. Der Berechnungstyp und das Bild im Etikett überschreiben die Umgebungseinstellungen in Ihrem Projekt. Verwenden Sie die folgende Syntax, um Ihre Umgebungseinstellungen für einen CodeBuild EC2- oder Lambda-Compute-Build zu überschreiben:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} image:<environment-type>-<image-identifier>instance-size:<instance-size>Das Folgende ist ein Beispiel für einen GitHub Aktionsworkflow 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!" -
Sie können die für Ihren Build verwendete Flotte im Label überschreiben. Dadurch werden die in Ihrem Projekt konfigurierten Flotteneinstellungen überschrieben, sodass die angegebene Flotte verwendet wird. Weitere Informationen finden Sie unter Führen Sie Builds auf Flotten mit reservierter Kapazität aus. Verwenden Sie die folgende Syntax, um Ihre Flotteneinstellungen für einen Amazon EC2-Rechenbuild zu überschreiben:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} fleet:<fleet-name>Verwenden Sie die folgende Syntax, um sowohl die Flotte als auch das für den Build verwendete Image zu überschreiben:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} fleet:<fleet-name>image:<environment-type>-<image-identifier>Im Folgenden finden Sie ein Beispiel für einen GitHub Aktionsworkflow (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!" -
Um Ihre GitHub Actions-Jobs auf einem benutzerdefinierten Image auszuführen, können Sie ein benutzerdefiniertes Image in Ihrem CodeBuild Projekt konfigurieren und vermeiden, eine Image-Override-Bezeichnung bereitzustellen. CodeBuild verwendet das im Projekt konfigurierte Bild, wenn kein Label für die Bildüberschreibung angegeben ist.
-
Optional können Sie Beschriftungen angeben, die nicht CodeBuild unterstützt werden. Diese Labels werden ignoriert, um die Attribute des Builds zu überschreiben, aber die Webhook-Anforderung schlägt nicht fehl. Das Hinzufügen
testLabelals Label verhindert beispielsweise nicht, dass der Build ausgeführt wird.
Anmerkung
Wenn eine von GitHub-hosted Runnern bereitgestellte Abhängigkeit in der CodeBuild Umgebung nicht verfügbar ist, können Sie die Abhängigkeit mithilfe von GitHub Aktionen in Ihrem Workflow-Lauf installieren. Beispielsweise können Sie die setup-python
Führen Sie die Buildspec-Befehle in den Phasen INSTALL, PRE_BUILD und POST_BUILD aus
CodeBuild Ignoriert standardmäßig alle Buildspec-Befehle, wenn ein selbst gehosteter Actions-Build ausgeführt wird. GitHub Um Buildspec-Befehle während des Builds auszuführen, buildspec-override:true können sie dem Label als Suffix hinzugefügt werden:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} buildspec-override:true
Mit diesem Befehl CodeBuild wird ein Ordner mit dem Namen actions-runner im primären Quellordner des Containers erstellt. Wenn der GitHub Actions-Runner während der BUILD Phase startet, wird der Runner im actions-runner Verzeichnis ausgeführt.
Bei der Verwendung einer Buildspec-Override in einem selbst GitHub gehosteten Actions-Build gibt es mehrere Einschränkungen:
-
CodeBuild führt während der Phase keine Buildspec-Befehle aus, da der selbst gehostete Runner in der
BUILDPhase ausgeführt wird.BUILD -
CodeBuild lädt während der Phase keine primären oder sekundären Quellen herunter.
DOWNLOAD_SOURCEWenn Sie eine Buildspec-Datei konfiguriert haben, wird nur diese Datei von der Hauptquelle des Projekts heruntergeladen. -
Wenn ein Build-Befehl in der
PRE_BUILDINSTALLOR-Phase fehlschlägt, CodeBuild wird der selbst gehostete Runner nicht gestartet und der Workflow-Job für GitHub Aktionen muss manuell abgebrochen werden. -
CodeBuild ruft das Runner-Token während der
DOWNLOAD_SOURCEPhase ab, die eine Ablaufzeit von einer Stunde hat. Wenn deinePRE_BUILDoderINSTALLPhasen eine Stunde überschreiten, läuft das Runner-Token möglicherweise ab, bevor der GitHub selbst gehostete Runner startet.
Schritt 3: Überprüfe deine Ergebnisse
Jedes Mal, wenn ein GitHub Aktionsworkflow ausgeführt wird, CodeBuild werden die Workflow-Auftragsereignisse über den Webhook empfangen. CodeBuild Startet für jeden Job im Workflow einen Build, um einen kurzlebigen GitHub Actions-Runner auszuführen. Der Runner ist für die Ausführung eines einzelnen Workflow-Jobs verantwortlich. Sobald der Job abgeschlossen ist, werden der Runner und der zugehörige Build-Prozess sofort beendet.
Um deine Workflow-Jobprotokolle einzusehen, navigiere zu deinem Repository in GitHub, wähle Aktionen, wähle den gewünschten Workflow und wähle dann den spezifischen Job aus, für den du die Logs überprüfen möchtest.
Du kannst die angeforderten Labels im Log überprüfen, während der Job darauf wartet, von einem selbst gehosteten Runner abgeholt zu werden. CodeBuild
Sobald der Job abgeschlossen ist, können Sie das Protokoll des Jobs einsehen.
GitHub Konfigurationsoptionen für den Actions Runner
Du kannst die folgenden Umgebungsvariablen in deiner Projektkonfiguration angeben, um die Setup-Konfiguration deiner selbst gehosteten Läufer zu ändern.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME-
CodeBuild registriert selbst gehostete Läufer unter dem Organisationsnamen, der als Wert dieser Umgebungsvariablen angegeben ist. Weitere Informationen zur Registrierung von Läufern auf Organisationsebene und zu den erforderlichen Berechtigungen findest du unter Konfiguration für einen Just-in-Time-Läufer für eine Organisation erstellen.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAME-
CodeBuild registriert selbst gehostete Läufer unter dem Unternehmensnamen, der als Wert dieser Umgebungsvariablen angegeben ist. Weitere Informationen zur Registrierung von Runnern auf Unternehmensebene und zu den erforderlichen Berechtigungen finden Sie unter Konfiguration für einen Just-in-Time-Runner für ein Unternehmen erstellen.
Anmerkung
Enterprise-Runner sind standardmäßig nicht für Organisations-Repositorys verfügbar. Damit selbst gehostete Läufer Workflow-Jobs annehmen können, musst du möglicherweise deine Zugangseinstellungen für Läufergruppen konfigurieren. Weitere Informationen findest du unter Enterprise-Runner für Repositorys verfügbar
machen. CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID-
CodeBuild registriert selbst gehostete Runner mit der Ganzzahl-Runner-Gruppen-ID, die als Wert dieser Umgebungsvariablen gespeichert ist. In der Standardeinstellung ist dieser Wert 1. Weitere Informationen zu selbst gehosteten Läufergruppen findest du unter Zugriff auf selbst gehostete Läufer mithilfe von Gruppen verwalten.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAMEUm die Registrierung von Läufern auf Organisationsebene mithilfe deiner YAML-Datei für den GitHub Aktionsworkflow zu konfigurieren, kannst du die folgende Syntax verwenden:
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_NAMEUm die Runner-Registrierung auf Unternehmensebene mithilfe Ihrer GitHub Actions Workflow-YAML-Datei zu konfigurieren, können Sie die folgende Syntax verwenden:
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_IDUm mithilfe Ihrer YAML-Datei für den GitHub Aktionsworkflow die Registrierung von Läufern für eine bestimmte Runner-Gruppen-ID zu konfigurieren, können Sie die folgende Syntax verwenden:
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!"
Webhook-Ereignisse für GitHub Aktionen filtern (CloudFormation)
Im folgenden YAML-formatted Teil einer CloudFormation
Vorlage wird eine Filtergruppe erstellt, die einen Build auslöst, wenn das Ergebnis „Wahr“ ergibt. Die folgende Filtergruppe spezifiziert eine Workflow-Jobanforderung für GitHub Aktionen mit einem Workflownamen, der dem regulären Ausdruck \[CI-CodeBuild\] entspricht.
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\]
GitHub Webhook-Ereignisse filtern (AWS CDK)
Die folgende AWS CDK Vorlage erstellt eine Filtergruppe, die einen Build auslöst, wenn das Ergebnis „Wahr“ ergibt. Die folgende Filtergruppe spezifiziert eine Workflow-Jobanfrage für GitHub Aktionen.
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)], })
Webhook-Ereignisse für GitHub Aktionen filtern (Terraform)
Die folgende Terraform-Vorlage erstellt eine Filtergruppe, die einen Build auslöst, wenn sie als wahr ausgewertet wird. Die folgende Filtergruppe spezifiziert eine Workflow-Jobanfrage für GitHub Aktionen.
resource "aws_codebuild_webhook" "example" { project_name = aws_codebuild_project.example.name build_type = "BUILD" filter_group { filter { type = "EVENT" pattern = "WORKFLOW_JOB_QUEUED" } } }
Webhook-Ereignisse für GitHub Aktionen filtern (AWS CLI)
Mit den folgenden AWS CLI Befehlen wird ein selbst gehostetes GitHub Actions Runner-Projekt mit einer Jobanforderungsfiltergruppe für den GitHub Aktionsworkflow erstellt, die einen Build auslöst, wenn die Auswertung den Wert „Wahr“ ergibt.
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\"}]]"