Junior
Quelles outils de CI/CD connaissez-vous?
sobes.tech IA
Réponse de l'IA
Jenkins, GitLab CI, GitHub Actions, CircleCI, TeamCity, Azure DevOps Pipelines, Bamboo, Travis CI.
Principales catégories d'outils CI/CD:
- Plateformes de cycle complet: Fournissent des solutions complètes incluant la gestion des dépôts, CI, CD, surveillance et autres fonctionnalités.
- GitLab (GitLab CI)
- GitHub (GitHub Actions)
- Azure DevOps
- Outils CI/CD polyvalents: Systèmes flexibles pouvant être intégrés avec divers outils pour la construction, les tests et le déploiement.
- Jenkins
- CircleCI
- Bamboo
- TeamCity
- Travis CI
- Systèmes de build: Axés sur l'automatisation du processus de compilation, de test et d'emballage du code.
- Maven
- Gradle
- Ant
- Outils de déploiement: Spécialisés dans l'automatisation de la livraison des applications dans différents environnements.
- Ansible
- Chef
- Puppet
- Spinnaker
- Argo CD
Exemple de configuration Jenkinsfile pour un pipeline CI simple:
// 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' // Construction de l'application avec Maven
}
}
stage('Test') {
steps {
sh 'mvn test' // Exécution des tests
}
}
stage('Build Docker Image') {
steps {
script { // Création de l'image Docker
docker.build("my-app:${env.BUILD_ID}")
}
}
}
stage('Deploy') {
steps {
// Étapes pour déployer, par exemple, sur Kubernetes
echo "Déploiement de l'image my-app:${env.BUILD_ID}..."
}
}
}
}
Exemple de configuration GitLab CI pour un pipeline similaire:
# .gitlab-ci.yml
image: maven:latest # Utilisation de l'image Maven
stages:
- build
- test
- docker_build
- deploy
build:
stage: build
script:
- mvn clean package -B # Construction de l'application avec Maven en mode batch
test:
stage: test
script:
- mvn test -B # Exécution des tests en mode batch
docker_build:
stage: docker_build
image: docker:latest # Utilisation de l'image Docker
services:
- docker:dind # Exécution de Docker dans Docker
variables:
DOCKER_HOST: tcp://docker:2375 # Variable d'environnement pour accéder au service Docker
DOCKER_TLS_CERTDIR: "" # Désactivation de TLS
script:
- docker build -t my-app:$CI_COMMIT_SHORT_SHA . # Construction de l'image Docker
- docker push my-app:$CI_COMMIT_SHORT_SHA # Pousser l'image dans le dépôt
deploy:
stage: deploy
script:
- echo "Déploiement de l'image my-app:$CI_COMMIT_SHORT_SHA..."
only:
- main # Exécuter uniquement lors d'un push sur la branche main