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
Die allgemeinen Schritte zur Konfiguration eines CodeBuild Projekts für die Ausführung von GitHub Actions-Jobs lauten wie folgt:
-
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
-
Navigieren Sie zur CodeBuild Konsole, erstellen Sie ein CodeBuild Projekt mit einem Webhook und richten Sie Ihre Webhook-Filter ein.
-
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.
Themen
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:
-
Stellen Sie eine Connect mit einer OAuth-App her oder erstellen Sie ein persönliches Zugriffstoken. 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 unterGitHub und GitHub Enterprise Server-Zugriffstoken.
-
Connect CodeBuild zu Ihrem GitHub Konto her. Dazu können Sie einen der folgenden Schritte ausführen:
-
Sie können in GitHub der Konsole einen Quellanbieter hinzufügen. Sie können eine Verbindung entweder mit einer OAuth-App oder einem persönlichen Zugriffstoken herstellen. Anweisungen finden Sie unter GitHub Mit einem Zugriffstoken (Konsole) Connect .
-
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 mit einer OAuth-App herstellen, müssen Sie die Verbindung stattdessen über die Konsole herstellen. Anweisungen finden Sie unter GitHub Mit einem Zugriffstoken (CLI) Connect .
Anmerkung
Dies ist nur erforderlich, wenn Sie noch keine Verbindung zu GitHub Ihrem Konto 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 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).
-
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/
ein.user-name
/repository-name
-
-
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.
-
-
-
Fahren Sie mit den Standardwerten fort und wählen Sie dann Build-Projekt erstellen.
-
Ö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 Aktions-Workflow YAML
In diesem Schritt aktualisieren Sie Ihre GitHub Aktions-Workflow-YAML-Datei, um Ihre Build-Umgebung GitHub
Aktualisieren Sie Ihren GitHub Aktions-Workflow (YAML)
Navigieren Sie zu Ihrem GitHub Aktions-Workflow-YAML GitHub
runs-on
-
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
github
Kontext. 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-python
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 |
---|---|---|---|---|---|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-x86_64-standard:4.0 |
al2/standard/4.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-x86_64-standard:5.0 |
al2/standard/5,0 |
|
|
|
|
Amazon Linux 2 | aws/codebuild/amazonlinux2-aarch64-standard:2.0 |
al2/aarch64/standard/2.0 |
|
|
Amazon Linux 2023 | aws/codebuild/amazonlinux2-aarch64-standard:3.0 |
al2/aarch64/standard/3.0 |
|
|
|
|
Ubuntu 20.04 | aws/codebuild/standard:5.0 |
ubuntu/standard/5.0 |
|
|
Ubuntu 22.04 | aws/codebuild/standard:6.0 |
Ubuntu/Standard/6.0 |
|
|
|
Ubuntu 22.04 | aws/codebuild/standard:7.0 |
Ubuntu/Standard/7.0 |
|
|
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-1.0 |
N/A |
|
|
Windows Server Core 2019 | aws/codebuild/windows-base:2019-2.0 |
N/A | |
|
|
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 |
---|---|---|
|
|
|
|
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
![](images/hello-world-loading.png)
Sobald der Job abgeschlossen ist, können Sie das Protokoll des Jobs einsehen.
![](images/hello-world-log.png)
Ü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
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::
. Das Folgende ist ein Beispiel dafür, wie Sie diese Syntax in Ihrer YAML verwenden können:value
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
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.
-
Öffnen Sie die GitHub Konsole unter
https://github.com/
, um die Webhook-Einstellungen Ihres Repositorys einzusehen. Auf dieser Seite siehst du einen Webhook, der für dein Repository erstellt wurde.user-name
/repository-name
/settings/hooks -
Wähle Bearbeiten und bestätige, dass der Webhook für die Übermittlung von Workflow-Job-Ereignissen aktiviert ist.
-
Navigieren Sie zur Registerkarte Letzte Lieferungen, suchen Sie das entsprechende
workflow_job.queued
Ereignis und erweitern Sie das Ereignis. -
Überprüfe das Feld „Labels“ in der Payload und vergewissere dich, dass es den Erwartungen entspricht.
-
Überprüfen Sie abschließend die Registerkarte „Antwort“, da sie die Antwort oder Fehlermeldung enthält, von CodeBuild der zurückgegeben wurde.