Junior
Welche Tools für kontinuierliche Integration und Lieferung (CI/CD) kennen Sie?
sobes.tech KI
Antwort von AI
Jenkins, GitLab CI, GitHub Actions, CircleCI, TeamCity, Azure DevOps Pipelines, Bamboo, Travis CI.
Hauptkategorien von CI/CD-Tools:
- Vollständige Plattformen: Bieten umfassende Lösungen, die Repository-Management, CI, CD, Überwachung und weitere Funktionen umfassen.
- GitLab (GitLab CI)
- GitHub (GitHub Actions)
- Azure DevOps
- Allzweck-CI/CD-Tools: Flexible Systeme, die mit verschiedenen Tools für Build, Test und Deployment integriert werden können.
- Jenkins
- CircleCI
- Bamboo
- TeamCity
- Travis CI
- Build-Systeme: Konzentrieren sich auf die Automatisierung des Kompilierungs-, Test- und Verpackungsprozesses.
- Maven
- Gradle
- Ant
- Deployment-Tools: Spezialisieren sich auf die Automatisierung der Anwendungsbereitstellung in verschiedenen Umgebungen.
- Ansible
- Chef
- Puppet
- Spinnaker
- Argo CD
Beispiel für eine Jenkinsfile-Konfiguration für eine einfache CI-Pipeline:
// Dockerfile
FROM openjdk:11-jre-slim
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
// Jenkinsfile
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package' // Anwendung bauen mit Maven
}
}
stage('Test') {
steps {
sh 'mvn test' // Tests ausführen
}
}
stage('Build Docker Image') {
steps {
script { // Docker-Image erstellen
docker.build("my-app:${env.BUILD_ID}")
}
}
}
stage('Deploy') {
steps {
// Schritte für Deployment, z.B. auf Kubernetes
echo "Deployment des Images my-app:${env.BUILD_ID}..."
}
}
}
}
Beispiel für eine GitLab CI-Konfiguration für eine ähnliche Pipeline:
# .gitlab-ci.yml
image: maven:latest # Verwendung des Maven-Images
stages:
- build
- test
- docker_build
- deploy
build:
stage: build
script:
- mvn clean package -B # Anwendung bauen mit Maven im Batch-Modus
test:
stage: test
script:
- mvn test -B # Tests im Batch-Modus ausführen
docker_build:
stage: docker_build
image: docker:latest # Verwendung des Docker-Images
services:
- docker:dind # Docker in Docker
variables:
DOCKER_HOST: tcp://docker:2375 # Umgebungsvariable für Docker-Zugriff
DOCKER_TLS_CERTDIR: "" # TLS deaktivieren
script:
- docker build -t my-app:$CI_COMMIT_SHORT_SHA . # Docker-Image bauen
- docker push my-app:$CI_COMMIT_SHORT_SHA # Image pushen
deploy:
stage: deploy
script:
- echo "Deployment des Images my-app:$CI_COMMIT_SHORT_SHA..."
only:
- main # Nur bei Push auf main