Sobes.tech
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