Richten Sie selbst gehostete GitHub Action-Runner ein in AWS CodeBuild - 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.

Richten Sie selbst gehostete GitHub Action-Runner ein in AWS CodeBuild

Sie können Ihr Projekt so konfigurieren, dass selbst gehostete GitHub Actions-Runner in CodeBuild Containern eingerichtet werden, um Ihre GitHub Actions-Workflow-Jobs zu verarbeiten. Dies kann erreicht werden, indem Sie mithilfe Ihres CodeBuild Projekts einen Webhook einrichten und Ihre GitHub Aktions-Workflow-YAML so aktualisieren, dass selbst gehostete Runner verwendet werden, die auf Maschinen gehostet werden. CodeBuild Weitere Informationen finden Sie unter Über selbst gehostete Runner.

Die allgemeinen Schritte zur Konfiguration eines CodeBuild Projekts für die Ausführung von GitHub Actions-Jobs lauten wie folgt:

  1. Falls Sie dies noch nicht getan haben, erstellen Sie ein persönliches Zugriffstoken oder stellen Sie eine Verbindung mit einer OAuth-App her, mit der Sie Ihr Projekt verbinden möchten. GitHub

  2. Navigieren Sie zur CodeBuild Konsole, erstellen Sie ein CodeBuild Projekt mit einem Webhook und richten Sie Ihre Webhook-Filter ein.

  3. Aktualisieren Sie Ihren GitHub Aktions-Workflow YAML, um Ihre GitHub Build-Umgebung zu konfigurieren.

Ein detaillierteres Verfahren finden Sie unterTutorial: Einen CodeBuild selbst GitHub gehosteten Actions-Runner konfigurieren.

Mit dieser Funktion können Ihre GitHub Actions-Workflow-Jobs nativ integriert werden AWS, was durch Funktionen wie IAM AWS CloudTrail, AWS Secrets Manager Integration und Amazon VPC für Sicherheit und Komfort sorgt. Sie können auf die neuesten Instance-Typen zugreifen, einschließlich ARM-basierter Instances.

Tutorial: Einen CodeBuild selbst GitHub gehosteten Actions-Runner konfigurieren

Dieses Tutorial zeigt Ihnen, wie Sie Ihre CodeBuild Projekte für die Ausführung GitHub von Actions-Jobs konfigurieren.

Voraussetzungen

Um dieses Tutorial abzuschließen, müssen Sie zunächst:

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

    • In Source (Quelle):

      • Wählen Sie als Quellanbieter die Option GitHub.

      • Wählen Sie unter Repository die Option Repository in meinem GitHub Konto aus.

      • Geben Sie als Repository URL (Repository-URL) die URL https://github.com/user-name/repository-name ein.

    • Unter Webhook-Ereignisse der Primärquelle:

      • Wählen Sie für Webhook — optional die Option Jedes Mal neu erstellen, wenn eine Codeänderung in dieses Repository übertragen wird.

      • Wählen Sie als Ereignistyp WORKFLOW_JOB_QUEUED aus. Sobald diese Option aktiviert ist, werden Builds nur noch durch Workflow-Auftragsereignisse für Aktionen ausgelöst. GitHub

        Anmerkung

        CodeBuild verarbeitet GitHub Aktions-Workflow-Job-Ereignisse nur, wenn ein Webhook Filtergruppen enthält, die den WORKFLOW_JOB_QUEUED-Ereignisfilter enthalten.

    • In Environment (Umgebung):

      • Wählen Sie ein unterstütztes Umgebungs-Image und Compute aus. Beachten Sie, dass Sie die Möglichkeit haben, die Image- und Instanzeinstellungen zu überschreiben, indem Sie ein Label in Ihrem GitHub Aktions-Workflow YAML verwenden. Weitere Informationen finden Sie unter Schritt 2: Aktualisieren Sie Ihren GitHub Aktions-Workflow YAML.

    • In Buildspec (Build-Spezifikation):

      • Beachten Sie, dass Ihre Buildspec ignoriert wird. Stattdessen CodeBuild wird es überschrieben, um Befehle zu verwenden, die den selbst gehosteten Runner einrichten. Die Hauptaufgabe dieses Projekts besteht darin, einen selbst gehosteten Runner für die Ausführung von CodeBuild GitHub Actions-Workflow-Jobs einzurichten.

  3. Fahren Sie mit den Standardwerten fort und wählen Sie dann Build-Projekt erstellen.

  4. Ö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 Aktions-Workflow YAML

In diesem Schritt aktualisieren Sie Ihre GitHub Aktions-Workflow-YAML-Datei, um Ihre Build-Umgebung GitHubzu konfigurieren und selbst gehostete GitHub Actions-Runner zu verwenden. CodeBuild Weitere Informationen finden Sie unter Verwenden von Labels mit selbst gehosteten Runnern.

Aktualisieren Sie Ihren GitHub Aktions-Workflow (YAML)

Navigieren Sie zu Ihrem GitHub Aktions-Workflow-YAML GitHubund aktualisieren Sie die runs-onEinstellung, um Ihre Build-Umgebung zu konfigurieren. Dazu können Sie einen der folgenden Schritte ausführen:

  • Sie können den Projektnamen und die Run-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. Durch die Aufnahme des Projektnamens in die YAML CodeBuild ist es möglich, Jobs mit den richtigen Projekteinstellungen aufzurufen. Durch Angabe der Run-ID CodeBuild wird Ihr Build bestimmten Workflow-Läufen zugeordnet und der Build gestoppt, wenn der Workflow-Lauf abgebrochen wird. 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>Name mit dem Namen des Projekts übereinstimmt, das Sie im vorherigen Schritt erstellt haben. Wenn es nicht übereinstimmt, CodeBuild wird der Webhook nicht verarbeitet und der GitHub Aktionsworkflow kann hängen bleiben.

    Im Folgenden finden Sie ein Beispiel für einen GitHub Aktions-Workflow-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 Ihren Berechnungstyp im Label überschreiben. Dadurch werden die Umgebungseinstellungen Ihres Projekts außer Kraft gesetzt. Verwenden Sie die folgende Syntax, um Ihre Umgebungseinstellungen für einen Amazon EC2 EC2-Compute-Build zu überschreiben:

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

    Verwenden Sie die folgende Syntax, um Ihre Umgebungseinstellungen für einen Lambda-Compute-Build zu überschreiben:

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

    Im Folgenden finden Sie ein Beispiel für einen GitHub Aktions-Workflow-YAML:

    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!"
Anmerkung

Wenn eine von GitHub -hosted runners bereitgestellte Abhängigkeit in der CodeBuild Umgebung nicht verfügbar ist, können Sie die Abhängigkeit mithilfe von GitHub Actions in Ihrer Workflow-Ausführung installieren. Sie können die setup-pythonAktion beispielsweise verwenden, um Python für Ihre Build-Umgebung zu installieren.

Unterstützte Compute-Images

In Ihrem Label können Sie Ihre Amazon EC2 EC2-Umgebungseinstellungen überschreiben, indem Sie die Werte in den ersten drei Spalten verwenden. CodeBuild stellt die folgenden Amazon EC2 EC2-Compute-Images bereit:

Image Image-Version Instance-Größe Plattform Image-Kennung Definition

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/A

windows

2.0

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

windows

3.0

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

Darüber hinaus können Sie Ihre Lambda-Umgebungseinstellungen überschreiben, indem Sie die folgenden Werte verwenden. Weitere Informationen zu CodeBuild Lambda Compute finden Sie unter Working withArbeiten mit AWS Lambda Compute in AWS CodeBuild. CodeBuild unterstützt die folgenden Lambda-Compute-Images:

Umgebungstyp Laufzeitversion Instance-Größe

linux-lambda

dotnet6

go1.21

corretto11

corretto17

corretto21

nodejs18

nodejs20

python3.11

python3.12

ruby3.2

1GB

2GB

4GB

8GB

10GB

arm-lambda

Weitere Informationen finden Sie unter Berechnungsmodi und Typen der Build-Umgebung und Docker-Images bereitgestellt von CodeBuild.

Schritt 3: Überprüfen Sie Ihre Ergebnisse

Immer 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 Ihre Workflow-Job-Logs einzusehen, navigieren Sie zu Ihrem Repository in GitHub, wählen Sie Aktionen, wählen Sie den gewünschten Workflow aus und wählen Sie dann den spezifischen Job aus, für den Sie die Logs überprüfen möchten.

Sie können die angeforderten Labels im Protokoll überprüfen, während der Job darauf wartet, von einem selbst gehosteten Runner übernommen zu werden. CodeBuild

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

Über CodeBuild -hosted GitHub Actions Runner

Wann sollte ich die Bild- und Instanzüberschreibungen in das Label aufnehmen?

Sie können die Image- und Instanzüberschreibungen in das Label aufnehmen, um für jeden Ihrer GitHub Actions-Workflow-Jobs eine andere Build-Umgebung anzugeben. Dies ist möglich, ohne dass mehrere CodeBuild Projekte oder Webhooks erstellt werden müssen. Dies ist beispielsweise nützlich, wenn Sie eine Matrix für Ihre Workflow-Jobs verwenden müssen.

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!"
Anmerkung

Anführungszeichen können erforderlich sein, wenn runs-on mehrere Beschriftungen den GitHub Aktionskontext enthalten.

Kann ich diese Funktion verwenden AWS CloudFormation ?

Ja, Sie können eine Filtergruppe in Ihre AWS CloudFormation Vorlage aufnehmen, die in Ihrem Projekt-Webhook einen Jobereignisfilter für den GitHub Aktionsworkflow festlegt.

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

Weitere Informationen finden Sie unter GitHub Webhook-Ereignisse filtern ()AWS CloudFormation.

Wenn Sie Hilfe beim Einrichten von Projektanmeldedaten in Ihrer AWS CloudFormation Vorlage benötigen, finden Sie weitere Informationen AWS::CodeBuild::SourceCredentialim AWS CloudFormation Benutzerhandbuch.

Wie kann ich Geheimnisse maskieren, wenn ich diese Funktion verwende?

Standardmäßig werden Geheimnisse, die im Protokoll gedruckt werden, nicht maskiert. Wenn Sie Ihre Geheimnisse maskieren möchten, können Sie die folgende Syntax verwenden:::add-mask::value. Das Folgende ist ein Beispiel dafür, wie Sie diese Syntax in Ihrer YAML verwenden können:

name: Secret Job on: [push] jobs: Secret-Job: runs-on: codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} env: SECRET_NAME: "secret-name" steps: - run: echo "::add-mask::$SECRET_NAME"

Weitere Informationen finden Sie unter Maskieren eines Werts bei einer Anmeldung. GitHub

In welchen Regionen wird die Verwendung eines CodeBuild -gehosteten GitHub Actions-Runners unterstützt?

CodeBuild-gehostete GitHub Actions-Runner werden in allen CodeBuild Regionen unterstützt. Weitere Informationen darüber, AWS-Regionen wo CodeBuild es verfügbar ist, findest du unter AWS Dienste nach Regionen.

Welche Plattformen unterstützen die Verwendung eines CodeBuild -gehosteten GitHub Actions-Runners?

CodeBuild-gehostete GitHub Actions-Runner werden sowohl auf Amazon EC2 als auch auf Compute unterstützt. AWS Lambda Sie können die folgenden Plattformen verwenden: Amazon Linux 2, Amazon Linux 2023, Ubuntu und Windows Server Core 2019. Weitere Informationen finden Sie unter EC2-Compute-Images und Lambda-Computing-Bilder.

Fehlerbehebung: Wie behebe ich Fehler, wenn der Webhook nicht funktioniert?

Problem: Ihr Webhook funktioniert nicht oder Ihr Workflow-Job hängt. GitHub

Mögliche Ursache: Ihr Webhook-Workflow-Job-Ereignis löst möglicherweise keinen Build aus. Überprüfen Sie die Antwortprotokolle, um die Antwort oder Fehlermeldung einzusehen.

Empfohlene Lösung: Verwenden Sie die folgenden Anweisungen, um diesen Fehler zu debuggen.

  1. Öffnen Sie die GitHub Konsole unterhttps://github.com/user-name/repository-name/settings/hooks, um die Webhook-Einstellungen Ihres Repositorys einzusehen. Auf dieser Seite siehst du einen Webhook, der für dein Repository erstellt wurde.

  2. Wähle Bearbeiten und bestätige, dass der Webhook für die Übermittlung von Workflow-Job-Ereignissen aktiviert ist.

  3. Navigieren Sie zur Registerkarte Letzte Lieferungen, suchen Sie das entsprechende workflow_job.queued Ereignis und erweitern Sie das Ereignis.

  4. Überprüfe das Feld „Labels“ in der Payload und vergewissere dich, dass es den Erwartungen entspricht.

  5. Überprüfen Sie abschließend die Registerkarte „Antwort“, da sie die Antwort oder Fehlermeldung enthält, von CodeBuild der zurückgegeben wurde.