infostart2020-nsk-example

Подготовка окружения

Важно: Требуется как минимум 8GB ОЗУ на машине.

Создание Pipeline в Jenkins

  1. Добавляем новый item c видом Pipeline
  2. В настройках заполняем поле с Pipeline с примером ниже (Jenkinsfile) или выбираем взять из SCM. Если выбрано второе указываем адрес текущего репозитория.
  3. Если какие то действия не нужны - комментируем.
  4. Перед запуском проверяем что все установлено из раздела "Подготовка окружения" выше.

Можно почитать следующие статьи:

Jenkinsfile

#!groovy

node {
    
    def scannerHome = tool name: 'sonar-scanner'
    // есть разные способы, один из них хранить dt в отдельном каталоге на узле
    // более правильный - скачивать dt файл из "облака"
    def pathToDT = 'build/dt/base.dt' 
    
    // более правильный способ - pipeline script from SCM
    stage('Актуализация проекта GIT') {
        git branch: 'master', url: 'https://github.com/otymko/infostart2020-nsk-example.git' 
    }
    
    // Комментируем если тестирование не нужно
    stage('Подготовка окружения') {
        cmd("@call vrunner init-dev --dt ${pathToDT} --settings ./vb-params.json")
        cmd("@call vrunner compileext --settings ./vb-params.json --updatedb")
    }
    
    // Комментируем если тестирование не нужно
    stage('Модульные тесты') {
        cmd("@call vrunner xunit --settings ./vb-params.json")
    }
    
    // Комментируем если стат. анализ не нужен
    stage('Статический анализ') {
        withSonarQubeEnv('My SonarQube') {
            cmd("${scannerHome}/bin/sonar-scanner")
        }
    }
    
    // Комментируем если документация Swagger не нужна
    stage('Генерация Swagger API') {
        cmd('@call swagger generate --src-path src/configuration --out build/swagger --format json')
        cmd('@call bootprint openapi build/swagger/Пример_Заказы.json build/swagger')
        publishHTML (target : [allowMissing: false,
             alwaysLinkToLastBuild: true,
             keepAll: true,
             reportDir: 'build/swagger',
             reportFiles: 'index.html',
             reportName: 'Swagger API',
             reportTitles: 'API HTTP-сервиса'])
    }
    
    // Комментируем если документация Autodocgen не нужна
    stage('Генерация AutodocGen') {
        cmd('@call autodocgen generate -c autodocgen-properties.json -f html .')
        publishHTML (target : [allowMissing: false,
             alwaysLinkToLastBuild: true,
             keepAll: true,
             reportDir: 'build/autodoc',
             reportFiles: '**/*.html',
             reportName: 'AutodocGen API',
             reportTitles: 'Документация методов'])
    }
    
    // Комментируем если тестирование не нужно
    stage('Публикация отчета Allure') {
       allure([
        results: [[path: 'build/allure']]  
       ])
    }

    
}

def cmd(command) {
    bat "chcp 65001\n${command}"
}