Junior
¿Qué herramientas de integración y entrega continua (CI/CD) conoces?
sobes.tech AI
Respuesta de la IA
Jenkins, GitLab CI, GitHub Actions, CircleCI, TeamCity, Azure DevOps Pipelines, Bamboo, Travis CI.
Categorías principales de herramientas CI/CD:
- Plataformas de ciclo completo: Ofrecen soluciones integradas que incluyen gestión de repositorios, CI, CD, monitoreo y otras funciones.
- GitLab (GitLab CI)
- GitHub (GitHub Actions)
- Azure DevOps
- Herramientas CI/CD de uso general: Sistemas flexibles que se pueden integrar con diversas herramientas para construcción, pruebas y despliegue.
- Jenkins
- CircleCI
- Bamboo
- TeamCity
- Travis CI
- Sistemas de construcción: Enfocados en automatizar el proceso de compilación, prueba y empaquetado del código.
- Maven
- Gradle
- Ant
- Herramientas de despliegue: Especializadas en automatizar la entrega de aplicaciones a diferentes entornos.
- Ansible
- Chef
- Puppet
- Spinnaker
- Argo CD
Ejemplo de configuración Jenkinsfile para 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' // Construcción de la aplicación con Maven
}
}
stage('Test') {
steps {
sh 'mvn test' // Ejecución de pruebas
}
}
stage('Build Docker Image') {
steps {
script { // Creación de la imagen Docker
docker.build("my-app:${env.BUILD_ID}")
}
}
}
stage('Deploy') {
steps {
// Pasos para desplegar, por ejemplo, en Kubernetes
echo "Desplegando la imagen my-app:${env.BUILD_ID}..."
}
}
}
}
Ejemplo de configuración GitLab CI para un pipeline similar:
# .gitlab-ci.yml
image: maven:latest # Uso de la imagen Maven
stages:
- build
- test
- docker_build
- deploy
build:
stage: build
script:
- mvn clean package -B # Construcción de la aplicación con Maven en modo batch
test:
stage: test
script:
- mvn test -B # Ejecución de pruebas en modo batch
docker_build:
stage: docker_build
image: docker:latest # Uso de la imagen Docker
services:
- docker:dind # Ejecución de Docker en Docker
variables:
DOCKER_HOST: tcp://docker:2375 # Variable de entorno para acceso a Docker
DOCKER_TLS_CERTDIR: "" # Desactivar TLS
script:
- docker build -t my-app:$CI_COMMIT_SHORT_SHA . # Construcción de la imagen Docker
- docker push my-app:$CI_COMMIT_SHORT_SHA # Push de la imagen al repositorio
deploy:
stage: deploy
script:
- echo "Desplegando la imagen my-app:$CI_COMMIT_SHORT_SHA..."
only:
- main # Solo en push a la rama main