Назад к вопросам
Junior
65
questionbank

Каков процесс сборки в CI/CD?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

  1. Cборка исходного кода проекта.
  2. Запуск юнит-тестов.
  3. Выполнение интеграционных тестов.
  4. Сборка артефакта (например, Docker-образ, JAR-файл, пакет).
  5. Сканирование артефакта на уязвимости и соблюдение стандартов.
  6. Публикация артефакта в репозиторий артефактов.
  7. Запуск регрессионных и функциональных тестов на собранном артефакте.
  8. Создание отчета о сборке с результатами всех шагов.

Пример файла сборки в Jenkins (Pipeline):

// Jenkins Pipeline (Groovy)
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building the project...'
                sh 'mvn clean package' // Пример для Maven
            }
        }
        stage('Unit Tests') {
            steps {
                echo 'Running unit tests...'
                sh 'mvn test'
            }
        }
        stage('Integration Tests') {
            steps {
                echo 'Running integration tests...'
                sh 'mvn integration-test'
            }
        }
        stage('Build Docker Image') {
            steps {
                echo 'Building Docker image...'
                script {
                    docker.build("my-app:${env.BUILD_ID}")
                }
            }
        }
        stage('Publish Artifact') {
            steps {
                 echo 'Publishing artifact...'
                 // Пример публикации в Nexus
                 nexusPublisher nexusInstanceId: 'nexus', nexusRepositoryId: 'maven-releases', artifacts: [
                    [artifactId: 'my-app',
                     classifier: '',
                     file: 'target/my-app.jar',
                     groupId: 'com.example',
                     type: 'jar',
                     version: "${env.BUILD_ID}-SNAPSHOT"]
                 ]
            }
        }
        stage('Security Scan') {
            steps {
                echo 'Scanning for vulnerabilities...'
                // Пример использования SonarQube
                withSonarQubeEnv('SonarQube') {
                    sh 'mvn sonar:sonar'
                }
            }
        }
    }
    post {
        always {
            echo 'Build finished.'
            junit '**/target/surefire-reports/*.xml' // Публикация отчетов о тестах
        }
        failure {
            echo 'Build failed.'
        }
    }
}