Sobes.tech
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 ճյուղի push-ների դեպքում
"}}}}}]},