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 # მხოლოდ main ბრენჩზე პუშის დროს
"}}}}}]},