Pull to refresh

Интеграция инструментов статистического анализа кода для OpenStack на Jenkins CI

Reading time3 min
Views6.3K
Интеграция PyLint с Jenkins

Установка pylint на Centos

pip install pylint

Генерация конфигурационного файла

touch pylint.cfg
pylint --generate-rcfile > pylint.cfg

После генерации файла его необходимо поместить в корневой каталог проекта

Запуск в Jenkins

1. В настройках Jenkins — управление плагинами установить плагины “Violations plugin” для генерации наглядного отчета
2. Создать проект (job) со свободной конфигурацией
3. В пункте управления исходным кодом вставить ссылку до репозитория
4. В пункте сборки выбрать “Выполнить команду shell” или “Execute Shell”. В поле ввода ввести команду:

find /var/lib/jenkins/workspace/$JOB_NAME/<path/to/check> -iname "*.py" | xargs pylint --disable=all

5. В пункте послесборочных операций выбрать “Report Violations“
6. Сохранить проект и выполнить

Рис.1. Результат выполнения проверок PyLint
image

Рис.2. Результат выполнения проверок PyLint — продолжение 1
image

Рис.3. Результат выполнения проверок PyLint — продолжение 2
image

Рис.4. Результат выполнения проверок PyLint — продолжение 3
image

Рис.5. Результат выполнения проверок PyLint — продолжение 4
image

Рис.6. Результат выполнения проверок PyLint — продолжение 5
image

Интеграция SonarQube с Jenkins

Установка и настройка MySQL для SonarQube:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum update -y

sudo yum install mysql-server

sudo systemctl start mysqld

sudo mysql_secure_installation - нажать enter если пароль по умолчанию отсутствует

mysql -u root -p

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';

Установка SonarQube на Centos:

Скачивание установочного файла в /opt

cd /opt 
sudo wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.0.zip

Установка unzip и java

sudo yum install unzip -y
sudo yum install java-1.8.0-openjdk -y

Разархивирование sonarqube

sudo unzip sonarqube-6.0.zip
mv sonarqube-6.0 sonarqube

Настройка конфигурационного файла

vi /opt/sonarqube/conf/sonar.properties

sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.web.host=localhost
sonar.web.context=/sonar
sonar.web.port=9000
По ссылке http://localhost:9000 будет находиться сервер sonarqube

Запуск SonarQube:

cd /opt/sonar/bin/linux-x86-64/
sudo ./sonar.sh start

Настройка SonarQube как сервиса:

Создать файл

/etc/init.d/sonar

Скопировать в содержимое файла

#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
 
/usr/bin/sonar $*

Создание ссылки на SonarQube

sudo ln -s /opt/sonarqube/bin/linux-x86-64/sonar.sh /usr/bin/sonar

Настройка прав и добавление в boot

sudo chmod 755 /etc/init.d/sonar
sudo chkconfig --add sonar

Запуск sonar

sudo service sonar start

Установка sonar runner:

yum install sonar-runner
wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
unzip sonar-runner-dist-2.4.zip
mv sonar-runner-2.4 /opt/sonar-runner
export SONAR_RUNNER_HOME=/opt/sonar-runner
export PATH=$PATH:$SONAR_RUNNER_HOME/bin

Необходимо в корне проекта создать файл sonar-project.properties. Пример содержания файла:

image

Запуск в Jenkins:

1. В настройках Jenkins — управление плагинами установить плагины “SonarQube Scanner for Jenkins” для генерации наглядного отчета
2. Перейти в “Настройки Jenkins” — “Конфигурирование системы” — “SonarQube servers” (если данной конфигурации не будет, то необходимо перезагрузить Jenkins). Далее нужно заполнить поля конфигурации:

Рис.8. Настройка SonarQube сервера в системе непрерывной интеграции Jenkins
image

3. Перейти в “Настройки Jenkins” — “Global Tool Configuration” — “SonarQube Scanner”. Заполнить поля конфигурации

Рис.9. Настройка SonarQube сканера в системе непрерывной интеграции Jenkins
image

4. Создать проект (job) со свободной конфигурацией
5. В пункте управления исходным кодом вставить ссылку до репозитория
6. В пункте сборки выбрать “Execute SonarQube Scanner”
В поле “Analysis properties” ввести параметры из файла sonar-project.properties или указать путь до данного файла
7. Сохранить проект и запустить

Рис.10. Результат выполнения работы SonarQube
image

Рис.11. Результат выполнения работы SonarQube — продолжение 1
image

Перейдя по ссылке из результата выполнения проекта localhost:9000/sonar/dashboard/index/keystone можно детально рассмотреть отчет по проверке качества кода keystone

Рис.12. Пример сгенерированного отчета SonarQube
image

Рис.13. Пример сгенерированного отчета SonarQube — продолжение 1
image
Tags:
Hubs:
Total votes 14: ↑7 and ↓70
Comments1

Articles