DevOps CI/CD-Pipeline


Kurze Projektbeschreibung:
Ich möchte mein neues Projekt vorstellen, bei dem meine Website auf einem Docker-Server bereitgestellt wird. Die verwendeten Ressourcen für dieses Projekt sind:
VSCode, um mein Repository von GitHub zu klonen
GitHub-Webhooks für automatische Trigger
AWS-Instanzen für die Server:
Jenkins zur Automatisierung der Pipeline
SonarQube zur Überprüfung des Codes auf Sicherheitslücken
Docker zur Bereitstellung der Website
Um einen sicheren Zugriff auf die Website über den Browser zu ermöglichen, habe ich ein SSL-Zertifikat im AWS Certificate Manager erstellt und einen CNAME-Eintrag in AWS Route 53 eingerichtet. Außerdem habe ich eine CloudFront-Distribution mit einem A-Eintrag erstellt, um den Datenverkehr an meinen Docker-Server mit installierter Nginx-Anwendung weiterzuleiten.
Dieses Projekt ist eine CI/CD-Pipeline, die meine Website mithilfe einer automatisierten Pipeline in Docker ausführt und den Zugriff über HTTPS ermöglicht.
📌 Schritte zur Umsetzung
Ich habe drei Ubuntu T2.medium Instanzen auf AWS erstellt für:
Jenkins-Server
SonarQube-Server
Docker-Server ↓
Ich habe mich über das Terminal mit den Servern verbunden und deren Hostnamen entsprechend angepasst mit Commando hostnamectl set-hostname <Server Name>. ↓
In GitHub habe ich ein Repository erstellt und mit VSCode mein Repository geklont.
Dort habe ich HTML- und CSS-Dateien sowie eine Dockerfile geschrieben und alles in das Repository gepusht:
👉 GitHub Repository – website-jenkins-dockerIch habe in GitHub Webhooks eingerichtet, um automatisch Änderungen im Repository über die Jenkins-Pipeline zu triggern.
Ich habe auf meinen Jenkins-Server über den Browser zugegriffen, die benötigten Plugins wie Docker und SonarScanner installiert und anschließend eine Pipeline erstellt, die automatisch auf Änderungen im GitHub-Repository reagiert.
In SonarQube habe ich ein Projekt mit dem Namen
website-jenkins-docker
erstellt.
Nach dem Erstellen eines Tokens für Jenkins habe ich die IP-Adresse und den Token des SonarQube-Servers in Jenkins integriert. ↓↓Nach einer erfolgreichen Analyse durch SonarQube habe ich den Docker-Server in die Jenkins-Pipeline integriert.
Über den SSH-Agent wurde das Projekt website-jenkins-docker
auf dem Docker-Server ausgeführt, und Nginx wurde dort installiert.
Ich konnte meine Website im Browser über localhost und den HTTP-Port aufrufen. ↓
Für eine sichere HTTPS-Verbindung (Port 443) habe ich:
Ein SSL-Zertifikat im AWS Certificate Manager (ACM) erstellt
Einen CNAME-Eintrag in AWS Route 53 gesetzt ↓
Zur Weiterleitung des Traffics habe ich eine CloudFront-Distribution erstellt,
die das bereits in ACM generierte SSL-Zertifikat verwendet.
Mit einem A-Eintrag in Route 53 wird der Traffic von Port 80 (HTTP) auf Port 443 (HTTPS) zum Docker-Server geleitet, der die Website hostet. ↓Am Ende konnte ich erfolgreich auf meine Website über eine sichere HTTPS-Verbindung (Port 443)
unter meiner persönlichen Domain https://mahmoodi-tech.de zugreifen: ↓
✅ Ergebnis
Eine vollständige CI/CD-Pipeline, die:
Änderungen automatisch von GitHub abruft
Den Code auf Schwachstellen mit SonarQube überprüft
Die Website auf einem Docker-Server bereitstellt
Über HTTPS sicher zugänglich ist
Subscribe to my newsletter
Read articles from Abdul Samad Mahmoodi directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Abdul Samad Mahmoodi
Abdul Samad Mahmoodi
"I'm Abdul Samad Mahmoodi, an AWS Certified Solutions Architect passionate about DevOps, Cloud Engineering, and CI/CD automation. I love building scalable cloud solutions using AWS, Terraform, Kubernetes, and Docker."