Junior
Кои инструменти за непрекъсната интеграция и доставка (CI/CD) познавате?
sobes.tech AI
Отговор от AI
Jenkins, GitLab CI, GitHub Actions, CircleCI, TeamCity, Azure DevOps Pipelines, Bamboo, Travis CI.
Основни категории инструменти за CI/CD:
- Пълни платформи: Предоставят цялостни решения, включващи управление на репозитории, CI, CD, мониторинг и други функции.
- GitLab (GitLab CI)
- GitHub (GitHub Actions)
- Azure DevOps
- Общи инструменти за CI/CD: Гъвкави системи, които могат да се интегрират с различни инструменти за създаване, тестване и внедряване.
- Jenkins
- CircleCI
- Bamboo
- TeamCity
- Travis CI
- Системи за изграждане: Фокусирани върху автоматизацията на процеса на компилиране, тестване и опаковане на кода.
- Maven
- Gradle
- Ant
- Инструменти за внедряване: Специализирани в автоматизацията на доставката на приложения в различни среди.
- Ansible
- Chef
- Puppet
- Spinnaker
- Argo CD
Пример за конфигурация на Jenkinsfile за прост CI пайплайн:
// 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' // Създаване на приложението с Maven
}
}
stage('Test') {
steps {
sh 'mvn test' // Стартиране на тестовете
}
}
stage('Build Docker Image') {
steps {
script { // Създаване на Docker образ
docker.build("my-app:${env.BUILD_ID}")
}
}
}
stage('Deploy') {
steps {
// Стъпки за внедряване, например на Kubernetes
echo "Внедряване на образа my-app:${env.BUILD_ID}..."
}
}
}
}
Пример за конфигурация на GitLab CI за същия пайплайн:
# .gitlab-ci.yml
image: maven:latest # Използване на Maven образ
stages:
- build
- test
- docker_build
- deploy
build:
stage: build
script:
- mvn clean package -B # Създаване на приложението с Maven в пакетен режим
test:
stage: test
script:
- mvn test -B # Стартиране на тестовете в пакетен режим
docker_build:
stage: docker_build
image: docker:latest # Използване на Docker образ
services:
- docker:dind # Стартиране на Docker в Docker услуга
variables:
DOCKER_HOST: tcp://docker:2375 # Променлива за достъп до Docker услугата
DOCKER_TLS_CERTDIR: "" # Изключване на TLS
script:
- docker build -t my-app:$CI_COMMIT_SHORT_SHA . # Създаване на Docker образ
- docker push my-app:$CI_COMMIT_SHORT_SHA # Публикуване на образа
deploy:
stage: deploy
script:
- echo "Внедряване на образа my-app:$CI_COMMIT_SHORT_SHA..."
only:
- main # Изпълнява се само при push към main
"}}}}}]},