View a markdown version of this page

Tutorial: Konfigurieren Sie einen CodeBuild-hosted GitHub Actions-Runner - AWS CodeBuild

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:

    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
  1. Öffnen Sie die AWS CodeBuild Konsole unter. https://console.aws.amazon.com/codesuite/codebuild/home

  2. Erstellen Sie ein Build-Projekt. Weitere Informationen finden Sie unter Erstellen Sie ein Build-Projekt (Konsole) und Ausführen eines Build (Konsole).

  3. Wählen Sie unter Projekttyp die Option Runner-Projekt aus.

    In Runner:

    1. Wählen Sie als Runner-Anbieter GitHub.

    2. Wählen Sie als Runner-Standort die Option Repository aus.

    3. 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_QUEUED Ereignisse 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:true wird. Stattdessen überschreibt es, CodeBuild um Befehle zu verwenden, die den selbst gehosteten Runner einrichten.

  4. Fahren Sie mit den Standardwerten fort und wählen Sie dann Create build project.

  5. Öffnen Sie die GitHub Konsole unter, https://github.com/user-name/repository-name/settings/hooks um zu überprüfen, ob ein Webhook erstellt wurde und für die Übermittlung von Workflow-Auftragsereignissen aktiviert ist.

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 zu konfigurieren und selbst gehostete GitHub Actions-Runner in zu verwenden. CodeBuild Weitere Informationen finden Sie unter Verwenden von Labels mit selbst gehosteten Runnern und. Labelüberschreibungen werden vom Actions-Runner unterstützt CodeBuild-hosted GitHub

Aktualisieren Sie Ihren GitHub Aktionsworkflow (YAML).

Navigieren Sie zu Ihrem GitHub Aktionsworkflow YAML GitHub und aktualisieren Sie die runs-on Einstellung, um Ihre Build-Umgebung zu konfigurieren. Dazu können Sie einen der folgenden Schritte ausführen:

  • 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 github Kontext.

    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 testLabel als 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 Aktion verwenden, um Python für Ihre Build-Umgebung zu installieren.

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 BUILD Phase ausgeführt wird. BUILD

  • CodeBuild lädt während der Phase keine primären oder sekundären Quellen herunter. DOWNLOAD_SOURCE Wenn Sie eine Buildspec-Datei konfiguriert haben, wird nur diese Datei von der Hauptquelle des Projekts heruntergeladen.

  • Wenn ein Build-Befehl in der PRE_BUILD INSTALL OR-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_SOURCE Phase ab, die eine Ablaufzeit von einer Stunde hat. Wenn deine PRE_BUILD oder INSTALL Phasen 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

Das Protokoll des Jobs wird geladen.

Sobald der Job abgeschlossen ist, können Sie das Protokoll des Jobs einsehen.

Das Protokoll des Jobs.

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_NAME

Um 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_NAME

Um 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_ID

Um 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\"}]]"