

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 eine CI/CD Pipeline mithilfe von AWS CodePipeline und AWS CDK ein
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk"></a>

*Konstantin Zarudaev, Yasha Dabas, Lars Kinder und Cizer Pereira, Amazon Web Services*

## Startseite
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-summary"></a>

Die Automatisierung Ihres Softwareerstellungs- und -veröffentlichungsprozesses mit kontinuierlicher Integration und kontinuierlicher Bereitstellung (CI/CD) supports repeatable builds and rapid delivery of new features to your users. You can quickly and easily test each code change, and you can catch and fix bugs before releasing your software. By running each change through your staging and release process, you can verify the quality of your application or infrastructure code. CI/CDverkörpert eine Kultur, eine Reihe von Betriebsprinzipien und eine [Sammlung von Praktiken](https://aws.amazon.com/devops/#cicd)), die Anwendungsentwicklungsteams dabei unterstützen, Codeänderungen häufiger und zuverlässiger vorzunehmen. Die Implementierung wird auch als *CI/CD-Pipeline* bezeichnet.

Dieses Muster definiert eine wiederverwendbare CI/CD-Pipeline (Continuous Integration and Continuous Delivery) auf Amazon Web Services (AWS) mit einem CodeCommit AWS-Repository. Die CodePipeline AWS-Pipeline [wurde mit dem AWS Cloud Development Kit (AWS CDK) v2](https://aws.amazon.com/cdk/) geschrieben.

Mithilfe CodePipeline können Sie die verschiedenen Phasen Ihres Softwareveröffentlichungsprozesses über die AWS-Managementkonsole, die AWS-Befehlszeilenschnittstelle (AWS CLI) CloudFormation, AWS oder AWS modellieren SDKs. Dieses Muster demonstriert die Implementierung von CodePipeline und seine Komponenten mithilfe von AWS CDK. Zusätzlich zu den Construct-Bibliotheken enthält AWS CDK ein Toolkit (den CLI-Befehl`cdk`), das das wichtigste Tool für die Interaktion mit Ihrer AWS-CDK-App ist. Das Toolkit bietet unter anderem die Möglichkeit, einen oder mehrere Stacks in CloudFormation Vorlagen zu konvertieren und sie auf einem AWS-Konto bereitzustellen.

Die Pipeline umfasst Tests zur Überprüfung der Sicherheit Ihrer Drittanbieter-Bibliotheken und trägt dazu bei, eine beschleunigte, automatisierte Veröffentlichung in den angegebenen Umgebungen sicherzustellen. Sie können die Gesamtsicherheit Ihrer Anwendungen erhöhen, indem Sie sie einem Validierungsprozess unterziehen.

Ziel dieses Musters ist es, die Verwendung von CI/CD Pipelines zur Bereitstellung Ihres Codes zu beschleunigen und gleichzeitig sicherzustellen, dass die von Ihnen bereitgestellten Ressourcen den DevOps bewährten Methoden entsprechen. Nachdem Sie den [Beispielcode](https://github.com/aws-samples/aws-codepipeline-cicd) implementiert haben, verfügen Sie über ein [AWS CodePipeline](https://aws.amazon.com/codepipeline/) mit Linting-, Test-, Sicherheitscheck-, Bereitstellungs- und Nachbereitstellungsprozessen. Dieses Muster beinhaltet auch Schritte für Makefile. Mithilfe eines Makefiles können Entwickler CI/CD Schritte lokal reproduzieren und so den Entwicklungsprozess beschleunigen.

## Voraussetzungen und Einschränkungen
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ Ein grundlegendes Verständnis im Folgenden:
  + AWS-CDK
  + AWS CloudFormation
  + AWS CodePipeline
  + TypeScript

**Einschränkungen**

Dieses Muster verwendet [AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) TypeScript nur für. Andere Sprachen, die von AWS CDK unterstützt werden, werden nicht abgedeckt.

**Produktversionen**

Verwenden Sie die neuesten Versionen der folgenden Tools:
+ AWS-Befehlszeilenschnittstelle (AWS Command Line Interface, AWS CLI)
+ cfn\_nag
+ git-remote-codecommit
+ Node.js

## Architektur
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-architecture"></a>

**Zieltechnologie-Stack**
+ AWS-CDK
+ AWS CloudFormation
+ AWS CodeCommit
+ AWS CodePipeline

**Zielarchitektur**

Die Pipeline wird durch eine Änderung im CodeCommit AWS-Repository (`SampleRepository`) ausgelöst. Zu Beginn CodePipeline erstellt es Artefakte, aktualisiert sich selbst und startet den Bereitstellungsprozess. Die daraus resultierende Pipeline stellt eine Lösung für drei unabhängige Umgebungen bereit:
+ Dev — Dreistufiger Codecheck in der aktiven Entwicklungsumgebung
+ Test — Integrations- und Regressionstestumgebung
+ Prod — Produktionsumgebung

Die Entwicklungsphase umfasst drei Schritte: Linting, Sicherheit und Komponententests. Diese Schritte laufen parallel ab, um den Prozess zu beschleunigen. Um sicherzustellen, dass die Pipeline nur funktionierende Artefakte bereitstellt, wird sie beendet, sobald ein Schritt im Prozess fehlschlägt. Nach einer Bereitstellung in der Entwicklungsphase führt die Pipeline Validierungstests durch, um die Ergebnisse zu überprüfen. Im Erfolgsfall stellt die Pipeline die Artefakte dann in der Testumgebung bereit, die die Validierung nach der Bereitstellung beinhaltet. Der letzte Schritt besteht darin, die Artefakte in der Prod-Umgebung bereitzustellen.

Das folgende Diagramm zeigt den Arbeitsablauf vom CodeCommit Repository bis zu den Build- und Aktualisierungsprozessen CodePipeline, die drei Schritte der Entwicklungsumgebung und die anschließende Bereitstellung und Validierung in jeder der drei Umgebungen.

![Die Entwicklungsumgebung umfasst Linting, Sicherheit und Komponententests, alles inklusive Bereitstellung und Validierung.](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/d617e735-8624-4722-8a3d-073bcc356328/images/92504aac-03e3-4c95-b225-74505f8dd136.png)


## Tools
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-tools"></a>

**AWS-Services**
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten. In diesem Muster können CloudFormation Vorlagen verwendet werden, um ein CodeCommit Repository und eine CodePipeline CI/CD-Pipeline zu erstellen.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) ist ein Versionskontrollservice, mit dem Sie Git-Repositorys privat speichern und verwalten können, ohne Ihr eigenes Quellcodeverwaltungssystem verwalten zu müssen.
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) ist ein CI/CD Service, der Ihnen hilft, die verschiedenen Phasen einer Softwareversion schnell zu modellieren und zu konfigurieren und die Schritte zu automatisieren, die für die kontinuierliche Veröffentlichung von Softwareänderungen erforderlich sind.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.

**Andere Tools**
+ [cfn\_nag](https://github.com/stelligent/cfn_nag) ist ein Open-Source-Tool, das in CloudFormation Vorlagen nach Mustern sucht, um potenzielle Sicherheitsprobleme zu identifizieren.
+ [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html)ist ein Hilfsprogramm zum Pushen und Abrufen von Code aus CodeCommit Repositorys, indem es Git erweitert.
+ [Node.js](https://nodejs.org/en/docs/) ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen konzipiert wurde.

**Code**

Der Code für dieses Muster ist im GitHub [AWS-Repository CodePipeline mit CI/CD Praktiken](https://github.com/aws-samples/aws-codepipeline-cicd) verfügbar.

## Best Practices
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-best-practices"></a>

Überprüfen Sie Ressourcen wie die Richtlinien von AWS Identity and Access Management (IAM), um sicherzustellen, dass sie mit den bewährten Methoden Ihres Unternehmens übereinstimmen.

## Epen
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-epics"></a>

### Tools installieren
<a name="install-tools"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Installieren Sie Tools auf macOS oder Linux. | Wenn Sie macOS oder Linux verwenden, können Sie die Tools installieren, indem Sie den folgenden Befehl in Ihrem bevorzugten Terminal ausführen oder [Homebrew für](https://docs.brew.sh/Homebrew-on-Linux) Linux verwenden.<pre>brew install<br />brew install git-remote-codecommit<br />brew install ruby brew-gem<br />brew-gem install cfn-nag</pre> | DevOps Ingenieur | 
| Richten Sie die AWS-CLI ein. | Verwenden Sie die Anweisungen für Ihr Betriebssystem, um AWS CLI einzurichten:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps Ingenieur | 

### Richten Sie die erste Bereitstellung ein
<a name="set-up-the-initial-deployment"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Laden Sie den Code herunter oder klonen Sie ihn. | Gehen Sie wie folgt vor, um den Code abzurufen, der von diesem Muster verwendet wird:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html)<pre>git clone --depth 1 https://github.com/aws-samples/aws-codepipeline-cicd.git</pre><br />Entfernen Sie das `.git` Verzeichnis aus dem geklonten Repository.<pre>cd ./aws-codepipeline-cicd<br />rm -rf ./.git</pre><br />Später werden Sie ein neu erstelltes CodeCommit AWS-Repository als Remote-Ursprung verwenden. | DevOps Ingenieur | 
| Connect zum AWS-Konto her. | Sie können eine Verbindung herstellen, indem Sie ein temporäres Sicherheitstoken oder eine Landingzone-Authentifizierung verwenden. Führen Sie die folgenden Befehle aus, um zu bestätigen, dass Sie das richtige Konto und die richtige AWS-Region verwenden.<pre>AWS_REGION="eu-west-1"<br />ACCOUNT_NUMBER=$(aws sts get-caller-identity --query Account --output text)<br />echo "${ACCOUNT_NUMBER}"</pre> | DevOps Ingenieur | 
| Bootstrapping für die Umwelt. | Führen Sie die folgenden Befehle aus, um eine AWS-CDK-Umgebung zu booten.<pre>npm install<br />npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"</pre><br />Nachdem Sie die Umgebung erfolgreich gebootet haben, sollte die folgende Ausgabe angezeigt werden.<pre>⏳  Bootstrapping environment aws://{account}/{region}...<br />✅  Environment aws://{account}/{region} bootstrapped</pre><br />Weitere Informationen zu AWS CDK-Bootstrapping finden Sie in der [AWS](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) CDK-Dokumentation. | DevOps Ingenieur | 
| Synthetisieren Sie eine Vorlage. | Verwenden Sie den Befehl, um eine AWS CDK-App zu synthetisieren. `cdk synth`<pre>npm run cdk synth</pre><br />Die Ausgabe sollte folgendermaßen aussehen.<pre>Successfully synthesized to <path-to-directory>/aws-codepipeline-cicd/cdk.out<br />Supply a stack id (CodePipeline, Dev-MainStack) to display its template.</pre> | DevOps Ingenieur | 
| Stellen Sie den CodePipeline Stack bereit. | Nachdem Sie die CloudFormation Vorlage nun gebootet und synthetisiert haben, können Sie sie bereitstellen. Bei der Bereitstellung werden die CodePipeline Pipeline und ein CodeCommit Repository erstellt, das als Quelle und Auslöser der Pipeline dient.<pre>npm run cdk -- deploy CodePipeline --require-approval never</pre><br />Nachdem Sie den Befehl ausgeführt haben, sollten Sie sehen, dass der CodePipeline Stack erfolgreich bereitgestellt und die Informationen ausgegeben wurden. Das `CodePipeline.RepositoryName` gibt Ihnen den Namen des CodeCommit Repositorys im AWS-Konto.<pre>CodePipeline: deploying...<br />CodePipeline: creating CloudFormation changeset...<br />✅  CodePipeline<br />Outputs:<br />CodePipeline.RepositoryName = SampleRepository<br />Stack ARN:<br />arn:aws:cloudformation:REGION:ACCOUNT-ID:stack/CodePipeline/STACK-ID</pre> | DevOps Ingenieur | 
| Richten Sie das CodeCommit Remote-Repository und den Branch ein. | Nach einer erfolgreichen Bereitstellung CodePipeline wird der erste Lauf der Pipeline initiiert, den Sie in der [ CodePipeline AWS-Konsole](https://eu-west-1.console.aws.amazon.com/codesuite/codepipeline/pipelines) finden. Da AWS CDK und CodeCommit kein Standard-Branch initiieren, schlägt dieser erste Pipeline-Lauf fehl und gibt die folgende Fehlermeldung zurück.<pre>The action failed because no branch named main was found in the selected AWS CodeCommit repository SampleRepository. Make sure you are using the correct branch name, and then try again. Error: null</pre><br />Um diesen Fehler zu beheben, richten Sie einen Remote-Ursprung als `SampleRepository` ein und erstellen Sie den erforderlichen `main` Branch.<pre>RepoName=$(aws cloudformation describe-stacks --stack-name CodePipeline --query "Stacks[0].Outputs[?OutputKey=='RepositoryName'].OutputValue" --output text)<br />echo "${RepoName}"<br />#<br />git init<br />git branch -m master main<br />git remote add origin codecommit://${RepoName}<br />git add .<br />git commit -m "Initial commit"<br />git push -u origin main</pre> | DevOps Ingenieur | 

### Testen Sie die bereitgestellte CodePipeline Pipeline
<a name="test-the-deployed-codepipeline-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bestätigen Sie eine Änderung, um die Pipeline zu aktivieren. | Nach einer erfolgreichen ersten Bereitstellung sollten Sie über eine vollständige CI/CD Pipeline mit einem `main` Zweig `SampleRepository` als Quellzweig verfügen. Sobald Sie die Änderungen an der `main` Verzweigung vorgenommen haben, initiiert die Pipeline die folgende Abfolge von Aktionen und führt sie aus:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | DevOps Ingenieur | 

### Testen Sie lokal mit einem Makefile
<a name="test-locally-by-using-a-makefile"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Führen Sie den Entwicklungsprozess mithilfe eines Makefiles aus. | Sie können die gesamte Pipeline lokal ausführen, indem Sie den `make` Befehl verwenden, oder Sie können einen einzelnen Schritt ausführen (z. B.`make linting`).<br />Führen Sie die folgenden Aktionen aus`make`, um die Verwendung zu testen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | App-Entwickler, DevOps Ingenieur | 

### Bereinigen von Ressourcen
<a name="clean-up-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie die AWS-CDK-App-Ressourcen. | Führen Sie den folgenden Befehl aus, um Ihre AWS CDK-App zu bereinigen.<pre>cdk destroy --all</pre><br />Beachten Sie, dass die Amazon Simple Storage Service (Amazon S3) -Buckets, die beim Bootstrapping erstellt werden, nicht automatisch gelöscht werden. Sie benötigen eine Aufbewahrungsrichtlinie, die das Löschen ermöglicht, oder Sie müssen sie manuell in Ihrem AWS-Konto löschen. | DevOps Ingenieur | 

## Fehlerbehebung
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-troubleshooting"></a>


| Problem | Lösung | 
| --- | --- | 
| Die Vorlage funktioniert nicht wie erwartet. | Wenn etwas schief geht und die Vorlage nicht funktioniert, stellen Sie sicher, dass Sie über Folgendes verfügen:[See the AWS documentation website for more details](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk.html) | 

## Zugehörige Ressourcen
<a name="set-up-a-ci-cd-pipeline-by-using-aws-codepipeline-and-aws-cdk-resources"></a>
+ [Erste Schritte mit allgemeinen Aufgaben in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)
+ [ CodePipeline AWS-Dokumentation](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)