Tutorial: Einen CodeBuild -gehosteten Runner GitLab konfigurieren - 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: Einen CodeBuild -gehosteten Runner GitLab konfigurieren

Dieses Tutorial zeigt Ihnen, wie Sie Ihre CodeBuild Projekte für die Ausführung von GitLab CI/CD-Pipeline-Jobs konfigurieren. Weitere Informationen zur Verwendung von GitLab oder zur GitLab Selbstverwaltung mit finden Sie CodeBuild unter. Selbstverwaltete Läufer GitLab in AWS CodeBuild

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

  • Stellen Sie eine Connect mit einer OAuth App her, indem Sie CodeConnections. Beachten Sie, dass Sie beim Herstellen einer Verbindung mit einer OAuth App die CodeBuild Konsole verwenden müssen. Weitere Anweisungen finden Sie unterGitLab Zugriff in CodeBuild.

  • Connect CodeBuild zu Ihrem GitLab Konto her. Dazu können Sie in der Konsole einen Quellanbieter hinzufügen GitLab . Detaillierte Anweisungen finden Sie unter GitLab Zugriff in CodeBuild.

    Anmerkung

    Dies ist nur erforderlich, wenn Sie noch keine Verbindung GitLab zu Ihrem Konto hergestellt haben.

    Für diese Funktion sind zusätzliche CodeBuild Berechtigungen erforderlich, z. B. create_runner und manage_runner von der GitLab OAuth App. Wenn CodeConnections für ein bestimmtes GitLab Konto bereits solche vorhanden sind, werden nicht automatisch Aktualisierungen der Berechtigungen angefordert. Dazu können Sie zur CodeConnections Konsole gehen und eine Dummy-Verbindung zu demselben GitLab Konto herstellen, um die erneute Autorisierung auszulösen und die zusätzlichen Berechtigungen zu erhalten. Damit können alle vorhandenen Verbindungen die Runner-Funktion nutzen. Sobald der Vorgang abgeschlossen ist, können Sie die Dummy-Verbindung löschen.

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 GitLab Konsole.

Um ein CodeBuild Projekt mit einem Webhook zu erstellen
  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. GitLab

      • Wählen Sie für Credential eine der folgenden Optionen aus:

        • Wählen Sie Standard-Quellanmeldedaten aus. Standardverbindung wendet eine GitLab Standardverbindung für alle Projekte an.

        • Wählen Sie Benutzerdefinierte Quellanmeldedaten. Benutzerdefinierte Verbindung wendet eine benutzerdefinierte GitLab Verbindung an, die die Standardeinstellungen Ihres Kontos überschreibt.

        Anmerkung

        Wenn Sie noch keine Verbindung zu Ihrem Anbieter hergestellt haben, müssen Sie eine neue GitLab Verbindung erstellen. Detaillierte Anweisungen finden Sie unter Connect dich CodeBuild mit GitLab.

      • Wählen Sie für Repository den Namen Ihres Projekts aus, GitLab indem Sie den Projektpfad mit dem Namespace angeben.

    • Gehen Sie unter Webhook-Ereignisse in der Primärquelle wie folgt vor:

      • 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 dies aktiviert ist, werden Builds nur noch durch GitLab CI/CD-Pipeline-Job-Ereignisse ausgelöst.

        Anmerkung

        CodeBuild verarbeitet GitLab CI/CD-Pipeline-Job-Ereignisse nur, wenn ein Webhook Filtergruppen enthält, die den WORKFLOW _ _ -Ereignisfilter enthalten. JOB QUEUED

        Build-Konfiguration, die nur durch GitLab CI/CD-Pipeline-Job-Ereignisse ausgelöst wird.
    • In Environment (Umgebung):

    • In Buildspec (Build-Spezifikation):

      • Beachten Sie, dass Ihre Buildspec ignoriert wird, sofern sie nicht als Label hinzugefügt buildspec-override:true wird. Stattdessen überschreibt sie sie, CodeBuild um Befehle zu verwenden, die den selbstverwalteten Runner einrichten.

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

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

Schritt 2: Erstellen Sie eine .gitlab-ci.yml-Datei in Ihrem Repository

In diesem Schritt erstellen Sie eine .gitlab-ci.yml Datei, um Ihre Build-Umgebung GitLabzu konfigurieren und selbstverwaltete Runner darin zu verwenden. GitLab CodeBuild Weitere Informationen finden Sie unter Verwenden von selbstverwalteten Runnern.

Aktualisieren Sie Ihre GitLab CI/CD-Pipeline YAML

Navigieren Sie zu Ihrem https://gitlab.com/user-name/project-name/-/tree/branch-name Repository und erstellen Sie eine .gitlab-ci.yml Datei darin. Sie können Ihre Build-Umgebung konfigurieren, indem Sie einen der folgenden Schritte ausführen:

  • Sie können den CodeBuild Projektnamen angeben. In diesem Fall verwendet der Build Ihre bestehende Projektkonfiguration für Rechenleistung, Image, Image-Version und Instanzgröße. Der Projektname wird benötigt, um die AWS zugehörigen Einstellungen Ihres GitLab Jobs mit einem bestimmten CodeBuild Projekt zu verknüpfen. Durch die Aufnahme des Projektnamens in CodeBuild ist es möglichYAML, Jobs mit den richtigen Projekteinstellungen aufzurufen.

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME

    $CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAMEist erforderlich, um den Build bestimmten Pipeline-Jobausführungen zuzuordnen und den Build zu beenden, wenn der Pipeline-Lauf abgebrochen wird.

    Anmerkung

    Stellen Sie sicher, dass Ihr <project-name> entspricht dem Namen des Projekts, in dem Sie es erstellt haben CodeBuild. Wenn es nicht übereinstimmt, CodeBuild wird der Webhook nicht verarbeitet und die GitLab CI/CD-Pipeline kann hängen bleiben.

    Im Folgenden finden Sie ein Beispiel für eine CI/CD-Pipeline GitLab : YAML

    workflow: name: HelloWorld stages: # List of stages for jobs, and their order of execution - build build-job: # This job runs in the build stage, which runs first. stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME
  • Sie können auch Ihr Bild und Ihren Berechnungstyp im Tag überschreiben. Eine Liste der verfügbaren Bilder finden Sie unter. Compute Images, die mit dem -hosted Runner unterstützt werden CodeBuild GitLab Der Berechnungstyp und das Bild in der Bezeichnung überschreiben die Umgebungseinstellungen in Ihrem Projekt. Verwenden Sie die folgende Syntax, um Ihre Umgebungseinstellungen für einen EC2 Amazon-Compute-Build zu überschreiben:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:<environment-type>-<image-identifier> - instance-size:<instance-size>

    Das Folgende ist ein Beispiel für eine GitLab CI/CD-Pipeline: YAML

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - image:arm-3.0 - instance-size:small
  • Sie können die für Ihren Build verwendete Flotte im Tag ü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 EC2 Amazon-Compute-Build zu überschreiben:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name>

    Verwenden Sie die folgende Syntax, um sowohl die Flotte als auch das für den Build verwendete Image zu überschreiben:

    tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:<fleet-name> - image:<environment-type>-<image-identifier>

    Im Folgenden finden Sie ein Beispiel für eine GitLab CI/CD-Pipeline: YAML

    stages: - build build-job: stage: build script: - echo "Hello World!" tags: - codebuild-myProject-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - fleet:myFleet - image:arm-3.0
  • Um Ihre GitLab CI/CD-Pipeline-Jobs auf einem benutzerdefinierten Image auszuführen, können Sie in Ihrem CodeBuild Projekt ein benutzerdefiniertes Image konfigurieren und die Angabe eines Image-Override-Labels vermeiden. CodeBuild verwendet das im Projekt konfigurierte Image, wenn kein Image-Override-Label angegeben ist.

Nachdem Sie Ihre Änderungen übernommen haben.gitlab-ci.yml, wird eine GitLab Pipeline ausgelöst, die build-job eine Webhook-Benachrichtigung sendet, mit der Ihr Build gestartet wird. CodeBuild

Führen Sie die Buildspec-Befehle in den PhasenINSTALL, PRE _ und _ BUILD aus POST BUILD

CodeBuild Ignoriert standardmäßig alle Buildspec-Befehle, wenn ein selbstverwalteter Build ausgeführt wird. GitLab Um Buildspec-Befehle während des Builds auszuführen, buildspec-override:true kann Folgendes als Suffix hinzugefügt werden: tags

tags: - codebuild-<codebuild-project-name>-$CI_PROJECT_ID-$CI_PIPELINE_IID-$CI_JOB_NAME - buildspec-override:true

Mit diesem Befehl CodeBuild wird ein Ordner mit dem Namen gitlab-runner im primären Quellordner des Containers erstellt. Wenn der GitLab Runner während der BUILD Phase startet, wird der Runner im gitlab-runner Verzeichnis ausgeführt.

Bei der Verwendung einer Buildspec-Überschreibung in einem selbstverwalteten Build gibt es mehrere Einschränkungen: GitLab

  • CodeBuild führt während der Phase keine Buildspec-Befehle aus, da der selbstverwaltete Runner in der BUILD Phase ausgeführt wird. BUILD

  • CodeBuild lädt während der Phase keine Primär- oder Sekundärquellen herunter. DOWNLOAD_SOURCE Wenn Sie eine Buildspec-Datei konfiguriert haben, wird nur diese Datei von der Primärquelle des Projekts heruntergeladen.

  • Wenn ein Build-Befehl in der PRE_BUILD INSTALL Oder-Phase fehlschlägt, CodeBuild wird der selbstverwaltete Runner nicht gestartet und der GitLab CI/CD-Pipeline-Job muss manuell abgebrochen werden.

  • CodeBuild ruft das Runner-Token während der DOWNLOAD_SOURCE Phase ab, die eine Ablaufzeit von einer Stunde hat. Wenn Ihre PRE_BUILD oder Ihre INSTALL Phasen eine Stunde überschreiten, läuft das Runner-Token möglicherweise ab, bevor der GitLab selbstverwaltete Runner startet.

Schritt 3: Überprüfe deine Ergebnisse

Wann immer ein GitLab CI/CD pipeline run occurs, CodeBuild would receive the CI/CD pipeline job events through the webhook. For each job in the CI/CD pipeline, CodeBuild starts a build to run an ephemeral GitLab runner. The runner is responsible for executing a single CI/CD Pipeline-Job. Sobald der Job abgeschlossen ist, werden der Runner und der zugehörige Build-Prozess sofort beendet.

Um Ihre CI/CD-Pipeline-Jobprotokolle anzuzeigen, navigieren Sie zu Ihrem Repository in GitLab, wählen Sie Build, Jobs und 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 verwalteten Runner übernommen zu werden. CodeBuild

GitLab Webhook-Ereignisse filtern ()AWS CloudFormation

Der folgende YAML -formatierte Teil einer AWS CloudFormation Vorlage erstellt eine Filtergruppe, die einen Build auslöst, wenn sie als wahr ausgewertet wird. Die folgende Filtergruppe gibt einen GitLab CI/CD pipeline job request with a CI/CD Pipeline-Namen an, der dem regulären Ausdruck entspricht. \[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: GITLAB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: group-name FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]