Junior
Kādus nepārtrauktās integrācijas un piegādes (CI/CD) rīkus jūs pazīstat?
sobes.tech AI
Atbilde no AI
Jenkins, GitLab CI, GitHub Actions, CircleCI, TeamCity, Azure DevOps Pipelines, Bamboo, Travis CI.
Galvenās CI/CD rīku kategorijas:
- Pilna cikla platformas: Nodrošina visaptverošus risinājumus, kas ietver repozitoriju pārvaldību, CI, CD, uzraudzību un citas funkcijas:
- GitLab (GitLab CI)
- GitHub (GitHub Actions)
- Azure DevOps
- Vispārējā mērķa CI/CD rīki: Elastīgas sistēmas, kuras var integrēt ar dažādiem rīkiem būvēšanai, testēšanai un izvietošanai:
- Jenkins
- CircleCI
- Bamboo
- TeamCity
- Travis CI
- Būvniecības sistēmas: Orientētas uz procesa automatizāciju, tostarp koda kompilēšanu, testēšanu un iepakošanu:
- Maven
- Gradle
- Ant
- Izvietošanas rīki: Specializēti automatizēt lietojumprogrammu piegādi dažādās vidēs:
- Ansible
- Chef
- Puppet
- Spinnaker
- Argo CD
Piemērs Jenkinsfile konfigurācijai vienkāršam 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' // Lietojumprogrammas būvēšana ar Maven
}
}
stage('Test') {
steps {
sh 'mvn test' // Testu palaišana
}
}
stage('Build Docker Image') {
steps {
script { // Docker attēla izveide
docker.build("my-app:${env.BUILD_ID}")
}
}
}
stage('Deploy') {
steps {
// Soļi izvietošanai, piemēram, Kubernetes
echo "my-app:${env.BUILD_ID} attēla izvietošana..."
}
}
}
}
Piemērs GitLab CI konfigurācijai tādam pašam pipeline:
# .gitlab-ci.yml
image: maven:latest # Maven attēla izmantošana
stages:
- build
- test
- docker_build
- deploy
build:
stage: build
script:
- mvn clean package -B # Lietojumprogrammas būvēšana ar Maven
test:
stage: test
script:
- mvn test -B # Testu palaišana
docker_build:
stage: docker_build
image: docker:latest # Docker attēla izmantošana
services:
- docker:dind # Docker iekš Docker pakalpojuma palaišana
variables:
DOCKER_HOST: tcp://docker:2375 # Vides mainīgais Docker pakalpojumam
DOCKER_TLS_CERTDIR: "" # TLS izslēgšana
script:
- docker build -t my-app:$CI_COMMIT_SHORT_SHA . # Docker attēla būvēšana
- docker push my-app:$CI_COMMIT_SHORT_SHA # Attēla augšupielāde
deploy:
stage: deploy
script:
- echo "my-app:$CI_COMMIT_SHORT_SHA izvietošana..."
only:
- main # Tiek izpildīts tikai, ja ir push uz galveno zaru
"}}}}}]},