1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yingmingzongyu-SonarQube-docs

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
05-SonarQube模拟升级.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 20:43 3f80f98

SonarQube 6.7-7.9: имитация обновления

Общая концепция

  1. Подготовка тестовых данных (можно пропустить этот шаг в реальной среде).
  2. Миграция базы данных (SonarQube больше не будет поддерживать MySQL, переход с MySQL на PG).
  3. Обновление версии Sonar (с 6.7.7 до 7.9.1).

Подготовка тестовых данных

Создание пользовательских данных

Изображение images/05/01.png.

Создание данных проекта

Установка sonar-scanner (для Mac)

tar zxf sonar-scanner-4.0.0.1744-macosx.tar.gz -C /usr/local/
export SONAR_HOME=/usr/local/sonar-scanner-4.0.0.1744-macosx
export PATH=$PATH:$M2_HOME/bin:$SONAR_HOME/bin

Получение Maven-проекта

git clone https://github.com/zeyangli/simple-java-maven-app.git
mvn clean package
ls -l target/ | awk '{print $NF}'

Сканирование проекта

Напишите цикл for для выполнения скрипта. Выполните скрипт дважды (так как при первом анализе данные о недостатках не отображаются).

#!/bin/bash

projectName="demo-service"
scanTime=`date +%Y%m%d%H%M%S`

for((i=1;i<=10;i++))
do
    sonar-scanner  -Dsonar.host.url=http://xxxxxx:9000  \
    -Dsonar.projectKey=${projectName}${i}  \
    -Dsonar.projectName=${projectName}${i}  \
    -Dsonar.projectVersion=${scanTime} \
    -Dsonar.login=admin \
    -Dsonar.password=admin \
    -Dsonar.ws.timeout=30 \
    -Dsonar.projectDescription="my first project!"  \
    -Dsonar.links.homepage=http://www.baidu.com \
    -Dsonar.sources=src \
    -Dsonar.sourceEncoding=UTF-8 \
    -Dsonar.java.binaries=target/classes \
    -Dsonar.java.test.binaries=target/test-classes \
    -Dsonar.java.surefire.report=target/surefire-reports

    echo "${projectName}  scan success!"
done

Результат: Изображение images/05/02.png.

Подготовка к миграции базы данных

  • Обратите внимание, что мы выполняем миграцию базы данных, а именно перенос данных из MySQL в PG.
  • Нам нужно запустить Sonar той же версии для завершения миграции.
  • Если вы запустите Sonar другой версии, это может привести к ошибкам, см. FAQ2.

Резервное копирование MySQL

[root@devops ~]# mysqldump -h 127.0.0.1 -uroot -p sonar >sonar-190803.sql
Enter password:
[root@devops ~]# du -sh sonar-190803.sql
4.6M    sonar-190803.sql

Настройка PG

#Установка
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
yum install postgresql96-server postgresql96-contrib
/usr/pgsql-9.6/bin/postgresql96-setup initdb
systemctl start postgresql-9.6
systemctl enable postgresql-9.6

#Создание Sonar-базы данных
su - postgres
psql
create user sonarqube with password 'sonarqube';
create database sonarqube owner sonarqube;
grant all  on database sonarqube to sonarqube;
\q


#Настройки удалённого доступа

vi /var/lib/pgsql/9.6/data/postgresql.conf   
#listen_addresses = '*' 
vi /var/lib/pgsql/9.6/data/pg_hba.conf
# IPv4 local connections:
host    all             all             0.0.0.0/0            trust
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident
host    all     all       0.0.0.0/0                ident

Запуск нового Sonar

#Установка той же версии Sonarqube
mkdir pg
unzip sonarqube-6.7.7.zip  -d pg/
cp sonarqube-6.7.7/conf/sonar.properties  pg/sonarqube-6.7.7/conf/sonar.properties


#Конфигурация аналогична исходной, за исключением конфигурации базы данных. Необходимо изменить на PostgreSQL.
sonar.jdbc.username=xxxx
sonar.jdbc.password=xxxx
sonar.jdbc.url=jdbc:postgresql://127.0.0.1/sonarqube

#Обязательно запустить, иначе будет ошибка. Подсказка: найти информацию о версии в целевой базе данных. См. FAQ1
./sonar.sh start

Инструмент MySQL Migrator

#Распаковка
wget https://binaries.sonarsource.com/Distribution/mysql-migrator/mysql-migrator-1.1.0.119.zip
unzip mysql-migrator-1.1.0.119.zip && cd bin

#source.properties
sonar.jdbc.username=xxxx
sonar.jdbc.password=xxxx
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

#target.properties
sonar.jdbc.username=xxxx
sonar.jdbc.password=xxxx
sonar.jdbc.url=jdbc:postgresql://127.0.0.1/sonarqube

# Запуск инструмента миграции
./mysql-migrator -source source.properties  -target target.properties
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table organizations ...
[main] INFO **org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table ce_activity ...**
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы ce_task_characteristics ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы ce_task_input ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы ce_scanner_context ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы user_tokens ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы webhook_deliveries ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы es_queue ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы plugins ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы project_branches ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier — копирование таблицы analysis_properties ...

**Tables Records Seconds**
------------------------ ------- --------
organizations 1 0,1
organization_members 4 0,0
groups_users 5 0,0
rules_parameters 686 0,1
rules_profiles 18 0,0
org_qprofiles 18 0,0
default_qprofiles 9 0,1
project_qprofiles 0 0,0
qprofile_edit_users 0 0,0
qprofile_edit_groups 0 0,0
groups 2 0,0
snapshots 22 0,0
group_roles 28 0,0
rule_repositories 25 0,0
rules 2888 0,3
rules_metadata 0 0,0
events 21 0,0
quality_gates 1 0,0
quality_gate_conditions 5 0,0
properties 4 0,0
project_links 11 0,0
duplications_index 0 0,0
project_measures 3839 0,3
internal_properties 3 0,0
projects 55 0,1
manual_measures 0 0,0
active_rules 2957 0,1
notifications 0 0,0
user_roles 0 0,0
active_rule_parameters 167 0,0
users 4 0,0
metrics 145 0,0
loaded_templates 2 0,0
issues 473 0,1
issue_changes 0 0,0
permission_templates 1 0,0
perm_tpl_characteristics 0 0,0
perm_templates_users 0 0,0
perm_templates_groups 4 0,0
qprofile_changes 6543 0,3
file_sources 22 0,0
ce_queue 0 0,0
ce_activity 22 0,0
ce_task_characteristics 0 0,0
ce_task_input 0 0,0
ce_scanner_context 22 0,0
user_tokens 0 0,0
webhook_deliveries 0 0,0
es_queue 0 0,0
plugins 14 0,0
project_branches 11 0,0
analysis_properties 0 0,0

Migration successful in 2.7 seconds

#检查pg中的数据
\c sonarqube
\dt
select * from projects;

### 重启服务

#清除es索引 rm -fr data/es5

#重启服务 ./sonar.sh restart

验证数据

Проектная информация

Пользовательская информация

Итог

  • На этом этапе данные были успешно перенесены, и началась подготовка к следующей работе. Планируется обновить версию sonarqube до 7.9.1 LTS.

Обновление до версии 7.9.1

Установка JDK11

#Поскольку сейчас sonar6.7.7 работает через jdk8, можно пока не настраивать глобальные переменные, а после обновления настроить jdk11 как глобальный.
tar zxf jdk-11_linux-x64_bin.tar.gz -C /usr/local/

### Настройка SonarQube7.9.1
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.1.zip
unzip sonarqube-7.9.1.zip
cp pg/sonarqube-6.7.7/conf/sonar.properties  sonarqube-7.9.1/conf/sonar.properties

# sonarqube 7.9.1 требует использования jdk11
vim ../../conf/wrapper.conf
wrapper.java.command=/usr/local/jdk-11/bin/java

### Переключение сервисов

В запросе содержится техническая информация о процессе миграции данных и обновлении программного обеспечения. Текст описывает процесс переноса данных из одной системы в другую, а также подготовку к обновлению версии программного обеспечения с указанием конкретных действий и команд. ``` cd pg/sonarqube-6.7.7/bin/linux-x86-64/ ./sonar.sh stop


Запуск новой версии:

cd sonarqube-7.9.1/bin/linux-x86-64/ ./sonar.sh start


После запуска появится ошибка, необходимо инициализировать сервис.

**Ошибка**:

!

Инициализация сервиса:

`http://119.3.228.122:9000/setup`

**Скриншоты**:

| |
|:--:|
| ! |
| !|
| !|
| !哈哈哈哈哈 升级完成了,数据未丢失 |
| !|
| !|

### Резюме

- Обновление завершено, осталось установить соответствующие плагины.

## FAQ

1. **Не удалось определить версию SonarQube целевой базы данных. Не удалось выбрать версию из schema_migrations. ОШИБКА: отношение «schema_migrations» не существует.**

Новый созданный пустой PG не может быть перенесён, для переноса необходимо использовать Sonar той же версии!

2. **Версии в исходной и целевой базе данных не совпадают: 1838 != 2804.**

При переносе базы данных обязательно обратите внимание на то, что перед переносом необходимо запустить новый Sonar той же версии!

3. **Перенос завершён, но данные отсутствуют, что делать? Я ошибся при выполнении операции?**

Необходимо сначала удалить индекс ES, а затем запустить Sonarqube, см. раздел «Переключение сервисов».

4. **Появляется сообщение «SonarQube находится на обслуживании».**

После обновления необходимо выполнить инициализацию, см. раздел «Переключение сервисов».

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/yingmingzongyu-SonarQube-docs.git
git@api.gitlife.ru:oschina-mirror/yingmingzongyu-SonarQube-docs.git
oschina-mirror
yingmingzongyu-SonarQube-docs
yingmingzongyu-SonarQube-docs
master