Выборка конвейерные скрипты Дженкинса для анализа Polyspace

Конвейеры Дженкинса позволяют автоматизировать рабочий процесс конвейера непрерывного развёртывания через скрипты в Дженкинсе. Можно записать Конвейерные скрипты, которые разрабатывают проекты, тестовые наборы запуска и выполняют все необходимые проверки, прежде чем код будет готов к поставке. Можно зарегистрироваться в этих скриптах как в части системы управления версиями и подвергнуть их тому же анализу и управлению версиями как сам код.

Можно запустить анализ Polyspace® в Конвейерном скрипте Дженкинса. Если вы не используете Вольные Проекты вместо Конвейеров в Дженкинсе, используйте плагин Polyspace для сценариев удобств. См. Демонстрационные Скрипты для Анализа Polyspace с Дженкинсом. Если вы используете Конвейеры, изменяете скрипт, предоставленный, чтобы запустить анализ Polyspace.

Необходимые условия

Чтобы запустить анализ Polyspace сервера и рассмотреть результаты в Polyspace доступ к веб-интерфейсу, необходимо выполнить одноразовую настройку.

  • Чтобы запустить анализ, необходимо установить один экземпляр Серверного продукта Polyspace.

  • Чтобы загрузить результаты, необходимо настроить компоненты, требуемые размещать веб-интерфейс Polyspace доступ.

  • Чтобы просмотреть загруженные результаты, у вас и каждого разработчика, рассматривающего результаты, должна быть одна лицензия Polyspace.

Смотрите сервер Polyspace установки и доступ к продуктам.

Запустите анализ Polyspace шаг за шагом в конвейерном скрипте

Создать Конвейерный скрипт Дженкинса:

  1. В интерфейсе Дженкинса выберите New Item слева. Выберите Pipeline.

  2. В разделе Pipeline проекта выберите Pipeline script для Definition. Введите этот скрипт.

    Части полужирным указывают на места, где необходимо изменить скрипт для исходного кода и установки Polyspace.

    node {
        def module = "folder_to_hold_sources_and_results" // Replace with another foldername (or use job workspace)
        def git_url = "https://github.com/lz4/lz4.git" //Replace with another Git URL
        def git_sandbox = "${module}/lz4_sources" //Replace with path to sources
        def polyspace_bin = "/usr/local/Polyspace/R2019a/polyspace/bin" // Replace with Polyspace installation folder
        def configure = "${polyspace_bin}/polyspace-configure"
        def configure_opts = "${module}/lz4.opts"
        def analyze = "${polyspace_bin}/polyspace-bug-finder-server"
        def results_dir = "${module}/results"
        def protocol = "https" //Replace with "http" if Polyspace Access URL uses http
        def host = "your-host-name" //Replace with host name of server hosting Polyspace Access
        def port = "9443" //Replace with port number of server hosting Polyspace Access
        def subject = "Polyspace analysis: $git_url" //Replace with a different mail subject line
        def body = "Log available on ${BUILD_URL}/ConsoleFull" //Replace with a different mail body line
        def to = "john@email.com" //Replace with a comma-separated list of email addresses
        
        stage ("Prepare") {
            sh script: "env"
            sh label: "Cleanup", script: "rm -fr $module; mkdir -p $module"
        }
        
        stage ("Checkout") {
            sh label: "Check out", script: "git clone $git_url $git_sandbox"
        }
        
        stage ("Configure") {
            sh label: "Polyspace configure", script: "$configure -allow-overwrite -prog \"lz4\" -author jenkins -output-options-file $configure_opts make -C $git_sandbox"
        }
        
        stage ("Analyze") {
            sh label: "Polyspace analysis", script: "$analyze -options-file $configure_opts -checkers all -results-dir $results_dir "
        }
        
        stage ("Upload") {
            withCredentials([usernamePassword(credentialsId: 'credentials-id-from-jenkins-credentials-plugin', passwordVariable: 'password', usernameVariable: 'username')]) 
            {
                def access = "${polyspace_bin}/polyspace-access -tmp-dir tmp-dir -protocol ${protocol} -host ${host} -port ${port} -login ${username} -encrypted-password ${password}"
                sh label: "Create folder on server", script: "$access -create-project \"/public/JenkinsProject\""
                sh label: "Upload results on server", script: "$access -parent-project \"/public/JenkinsProject\" -upload $results_dir"
            }
        }
        
        stage ("Notification") {
            mail body: "$body", subject: "$subject", to: "$to"
        }
    }

Когда вы разрабатываете этот проект, вы видите различные этапы анализа как это:

Graphical view of a Jenkins Pipeline run showing the duration of each stage of Pipeline

Этот скрипт может быть частью большего скрипта, который вы сохраняете в Jenkinsfile и соглашаетесь на свою систему управления версиями. Смотрите Используя Jenkinsfile.

Можно изменить скрипт по мере необходимости:

  • Скрипт запускает каждый шаг аналитического рабочего процесса Polyspace в отдельном stage раздел. Можно объединить несколько шагов вместе в одном stage.

  • Скрипт запускает команды Shell Linux® при помощи sh директива. Можно запустить команды Windows® при помощи bat директива вместо этого.

  • Скрипт использует данные из плагина Учетных данных, чтобы извлечь имя пользователя и пароль. Если вы сохраняете учетные данные в некоторой другой форме, можно заменить withCredentials команда, которая связывает удостоверения пользователя с переменными.

  • Скрипт создает исходный код с помощью make-файла на песочнице Git с этим make команда:

    make -C $git_sandbox
    Если вы используете различную команду сборки, можно заменить эту линию на команду сборки.

Для получения дополнительной информации о Специфичном для конвейера синтаксисе в этом скрипте см.:

Для получения дополнительной информации о командах Polyspace в этом скрипте см.:

Смотрите также