Sobes.tech
Junior

Milyen folyamatos integrációs és szállítási (CI/CD) eszközöket ismer?

sobes.tech MI

Válasz az MI-től

Jenkins, GitLab CI, GitHub Actions, CircleCI, TeamCity, Azure DevOps Pipelines, Bamboo, Travis CI.

A CI/CD eszközök fő kategóriái:

  • Teljes körű platformok: Komplett megoldásokat kínálnak, beleértve a tárhelykezelést, CI-t, CD-t, monitorozást és más funkciókat.
    • GitLab (GitLab CI)
    • GitHub (GitHub Actions)
    • Azure DevOps
  • Általános célú CI/CD eszközök: Rugalmas rendszerek, amelyeket különböző eszközökkel lehet integrálni az építéshez, teszteléshez és telepítéshez.
    • Jenkins
    • CircleCI
    • Bamboo
    • TeamCity
    • Travis CI
  • Építési rendszerek: Az automatizálásra összpontosítanak a kód fordításában, tesztelésében és csomagolásában.
    • Maven
    • Gradle
    • Ant
  • Telepítési eszközök: A szoftverek különböző környezetekbe történő automatikus szállítására specializálódtak.
    • Ansible
    • Chef
    • Puppet
    • Spinnaker
    • Argo CD

Példa Jenkinsfile konfiguráció egy egyszerű CI pipeline-hoz:

// 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' // Az alkalmazás buildelése Maven-nel
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test' // Tesztek futtatása
            }
        }
        stage('Build Docker Image') {
            steps {
                script { // Docker kép készítése
                    docker.build("my-app:${env.BUILD_ID}") 
                }
            }
        }
        stage('Deploy') {
            steps {
                // Telepítési lépések, például Kubernetes-re
                echo "A my-app:${env.BUILD_ID} kép telepítése..."
            }
        }
    }
}

Példa GitLab CI konfiguráció azonos pipeline-hoz:

# .gitlab-ci.yml
image: maven:latest # Maven kép használata

stages:
 - build
 - test
 - docker_build
 - deploy

build:
  stage: build
  script:
    - mvn clean package -B # Az alkalmazás buildelése Maven-nel csomagolási módban

test:
  stage: test
  script:
    - mvn test -B # Tesztek futtatása csomagolási módban

docker_build:
  stage: docker_build
  image: docker:latest # Docker kép használata
  services:
    - docker:dind # Docker in Docker szolgáltatás
  variables:
    DOCKER_HOST: tcp://docker:2375 # Környezeti változó a Docker eléréséhez
    DOCKER_TLS_CERTDIR: "" # TLS kikapcsolása
  script:
    - docker build -t my-app:$CI_COMMIT_SHORT_SHA . # Docker kép építése
    - docker push my-app:$CI_COMMIT_SHORT_SHA # Kép pusholása a tárolóba

deploy:
  stage: deploy
  script:
    - echo "A my-app:$CI_COMMIT_SHORT_SHA kép telepítése..."
  only:
    - main # Csak a main branch push esetén fut
"}}}}}}**