Blog

Wie man serverlose CI/CD-Pipelines für Docker-Images mit AWS erstellt

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
3 Minuten

Wenn Sie sich AWS-Services wie CodeBuild, CodeCommit, CodePipeline und ECR ansehen, könnten Sie denken, dass es sehr einfach ist,
eine einfache CI/CD-Build-Pipeline für ein Docker-Image zu erstellen. Aber das ist es nicht. In diesem Blog stellen wir eine CloudFormation
Vorlage vor, die eine serverlose CI/CD-Pipeline für Docker-Images erstellt. Mit der Vorlage können Sie CI/CD-Pipelines
für Docker-Images in wenigen Minuten erstellen!

Wie kann ich das tun?

Es ist ganz einfach: Sie müssen nur die CloudFormation-Vorlage herunterladen:

git clone https://github.com/binxio/blog-serverless-ci-cd-of-docker-images-with-aws.git
cd blog-serverless-ci-cd-of-docker-images-with-aws

und setzen Sie es ein:

aws --region eu-central-1 
          cloudformation create-stack 
       --stack-name paas-monitor-ci-cd 
       --template-body file://./serverless-docker-image-ci-cd.yaml 
       --capabilities CAPABILITIES_IAM

aws cloudformation wait stack-create-complete --stack-name paas-monitor-ci-cd

Dies erstellt:
* ein Git-Repository mit dem Namen paas-monitor
* ein Docker-Image-Repository mit dem Namen mvanholsteijn/paas-monitor
* ein Build-Projekt mit dem Namen paas-monitor
* eine IAM-Richtlinie, die den Zugriff auf das Build-Projekt kontrolliert
* ein Lambda, das Builds bei Repository-Commits startet

Klonen eines Quell-Repositorys

Um dies in Aktion zu sehen, brauchen Sie etwas zum Bauen, wie unseren paas-Monitor.

git clone https://github.com/mvanholsteijn/paas-monitor.git
cd paas-monitor

In diesem Repository finden Sie eine .buildspec.yaml, die CodeBuild
mitteilt, wie dieses Image erstellt werden soll. Sie sieht wie folgt aus:

version: 0.2

phases:
  install:
    runtime-versions:
        docker: 18
        golang: 1.12
  build:
    commands:
      - aws ecr get-login --no-include-email | sh
      - make REGISTRY_HOST=${REGISTRY_HOST} snapshot

Wie Sie sehen können, verwenden wir make, um einen portablen Build-Prozess zu erhalten, der sowohl lokal als auch auf verschiedenen CI-Servern läuft.

Installation des Git Remote Helper

Bevor Sie dies pushen können, müssen Sie den git remote helper für CodeCommit installieren, der es Ihnen ermöglicht, mit Ihren AWS-Anmeldedaten zu pushen: Keine ssh-Schlüssel erforderlich!

pip install git-remote-codecommit

Dieser Remote-Helfer wird aufgerufen, wenn Sie codecommit als Protokoll in der git
Repository-URL im folgenden Format verwenden: codecommit:<profile>/<name>. Dabei ist profile das AWS-Profil, das die zu verwendenden Anmeldeinformationen enthält, und name der Name des gewünschten Repositorys.

zu CodeCommit schieben

Jetzt können Sie das Git-Repository in das CodeCommit-Repository übertragen:

git remote add aws codecommit:${AWS_PROFILE:-default}/paas-monitor
git push aws --tags
git push aws

Dadurch wird der Build-Prozess gestartet. Um den Fortschritt zu sehen, rufen Sie die CodeBuild-Konsole auf. Sie sollte in etwa so aussehen:
Wie man serverlose CI/CD-Pipelines für Docker-Images mit AWS erstellt

wiederverwenden

Wenn Sie diese Vorlage für Ihre eigenen Build-Pipelines wiederverwenden möchten, geben Sie bei der Erstellung des Stacks
einfach den Namen Ihres Repositorys und Ihren Benutzer an:

read -p 'repository name: ' REPOSITORY_NAME
read -p 'repository user: ' REPOSITORY_USER

aws cloudformation create-stack 
       --stack-name ${REPOSITORY_NAME}-ci-cd 
       --template-body file://./serverless-docker-image-ci-cd.yaml 
       --capabilities CAPABILITIES_IAM 
       --parameters ParameterKey=RepositoryName,ParameterValue=${REPOSITORY_NAME} 
                     ParameterKey=RepositoryUser,ParameterValue=${REPOSITORY_USER}

Fazit

Mit dieser CloudFormation-Vorlage haben wir AWS CodeBuild, CodeCommit, Lambda und ECR kombiniert, um eine serverlose CI/CD-Pipeline für Docker-Images zu erstellen.
Dieselbe Vorlage kann wiederverwendet werden, um Pipelines für andere Images zu erstellen. Es können Varianten der Vorlage erstellt werden, um andere Artefakte auf der Grundlage eines Git-Repositorys
zu erstellen oder Dinge bei AWS bereitzustellen. Es ist nicht einfach, aber es ist komplett serverlos!

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.