Skip to content

Commit 3673334

Browse files
authored
Merge pull request #7 from silverbulleters/develop
Релиз 0.1.0
2 parents e155496 + 4826e7d commit 3673334

File tree

11 files changed

+570
-97
lines changed

11 files changed

+570
-97
lines changed

.github/workflows/build.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Сборка
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
- master
8+
pull_request:
9+
10+
jobs:
11+
build:
12+
runs-on: ${{ matrix.os }}
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
oscript_version: [1.4.0]
17+
os: [ubuntu-latest, windows-latest, macOS-latest]
18+
name: Сборка для ${{ matrix.oscript_version }}
19+
steps:
20+
- name: Последняя версия проекта
21+
uses: actions/checkout@v1
22+
- name: Установка OneScript
23+
uses: otymko/setup-onescript@master
24+
with:
25+
version: ${{ matrix.oscript_version }}
26+
- name: Загрузка зависимостей
27+
run: opm install cli && opm install logos && opm install 1bdd && opm install 1testrunner && opm install asserts && opm install fs
28+
- name: Запуск тестов
29+
run: opm run test
30+
- name: Сборка
31+
run: opm build
32+
- name: Формирование артефактов
33+
if: matrix.os == 'ubuntu-latest'
34+
uses: actions/upload-artifact@master
35+
with:
36+
name: git2sonar.ospx
37+
path: ./git2sonar*.ospx

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
out
2+
build
3+
oscript_modules

README.md

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,61 @@
1-
# git2sonar
1+
# Git2Sonar - Выгрузка истории проекта GIT в SonarQube
22

3-
Загрузка истории проекта в SonarQube
3+
## Кратко о проекте
4+
5+
Проект позволяет запустить анализ для SonarQube git-проекта по истории из git. Один из примеров использования
6+
- покоммитный анализ.
7+
8+
## Пример использования
9+
10+
Что нужно:
11+
* `OneScript`
12+
* Текущая библиотека
13+
* `SonarScanner`
14+
* Сервер `SonarQube`
15+
16+
Порядок действий:
17+
1. Качаем Git-проект на 1C / OneScript для анализа
18+
2. Устанавливаем библиотеку `git2sonar`, если ее нет:
19+
```
20+
opm install git2sonar
21+
```
22+
3. Если в переменной среды `PATH` нет пути к SonarScanner - то добавляем. Для проверки в консоли должна работать
23+
команда `sonarscanner`.
24+
4. Выполняем команду:
25+
```
26+
git2sonar export ...
27+
```
28+
29+
Например:
30+
31+
```sh
32+
git2sonar export --project path/to/project --source src --key acc-export --url http://localhost:9000/ --token t_o_k_e_n --date 2020-01-01 --branch master
33+
```
34+
где:
35+
* `--project` - путь до Git-проекта.
36+
* `--source` - каталог с исходными кодами внутри проекта.
37+
* `--key` - ключ проекта, по этому значению будет произведен поиск / создание проекта в SonarQube.
38+
* `--url` - адрес сервера SonarQube.
39+
* `--token` - токен доступа к SonarQube.
40+
* `--date` - дата последнего анализа, с этой даты будет отфильтрована история Git-проекта.
41+
* `--branch` - git ветка, из которой будут получены коммиты для анализа.
42+
43+
## Ограничения
44+
45+
* Анализируется только ветка `master`
46+
* SonarScanner должен быть прописан в переменных среды в `PATH`
47+
48+
## Как вести разработку
49+
50+
Используется:
51+
* Русский вариант синтаксиса
52+
* Тестирование (пока не опубликовано)
53+
* Разработка по `gitflow`
54+
55+
Прежде чем `кодить` нужно:
56+
* Убедиться, что cуществует issue (или создать)
57+
* Обсудить идею с владельцем проекта
58+
59+
## Лицензия
60+
61+
Используется лицензия [MIT License](LICENSE)

features/.gitkeep

Whitespace-only changes.

packagedef

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
1-
////////////////////////////////////////////////////////////
2-
// Описание пакета для сборки и установки
3-
// Полную документацию см. на hub.oscript.io/packaging
4-
//
1+
ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src/cmd", "Модули", "ПараметрыПриложения.os");
2+
ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров);
3+
ИмяПродукта = НРег(ПараметрыСистемы_ЛокальнаяВерсия.ИмяПродукта());
4+
ВерсияПродукта = ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта();
55

6-
7-
Описание.Имя(".")
8-
.Версия("1.0.0")
9-
.Автор("")
10-
.АдресАвтора("[email protected]")
11-
.Описание("Это очень хороший и нужный пакет программ")
6+
Описание.Имя(ИмяПродукта)
7+
.Версия(ВерсияПродукта)
8+
.Автор("SilverBulleters Team")
9+
.АдресАвтора("[email protected]")
10+
.Описание("Выгрузка истории проекта в SonarQube")
1211
.ВерсияСреды("1.0.21")
1312
.ВключитьФайл("src")
1413
.ВключитьФайл("doc")
1514
.ВключитьФайл("tasks")
16-
//.ВключитьФайл("tests")
17-
//.ВключитьФайл("features")
18-
19-
//.ЗависитОт("package1", ">=2.0")
20-
//.ЗависитОт("package2", ">=1.1", "<2.0")
21-
//.ОпределяетКласс("УправлениеВселенной", "src/universe-mngr.os")
22-
//.ОпределяетМодуль("ПолезныеФункции", "src/tools.os")
23-
;
15+
.ВключитьФайл("tests")
16+
.ЗависитОт("cli", "0.9.8")
17+
.ЗависитОт("logos", "0.5")
18+
.ЗависитОт("1bdd", "1.10.0")
19+
.ЗависитОт("1testrunner", "1.8.0")
20+
.ЗависитОт("asserts", "1.3.0")
21+
.ЗависитОт("fs")
22+
.ИсполняемыйФайл("src/cmd/git2sonar.os", ИмяПродукта);

src/cmd/git2sonar.os

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#Использовать cli
2+
#Использовать "."
3+
#Использовать "../core"
4+
5+
// Обработчик выполнения команды
6+
//
7+
// Параметры:
8+
// КомандаПриложения - КомандаПриложения - Выполняемая команда
9+
//
10+
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
11+
12+
КомандаПриложения.ВывестиСправку();
13+
14+
КонецПроцедуры
15+
16+
Процедура ВыполнитьПриложение()
17+
ИмяПродукта = ПараметрыПриложения.ИмяПродукта();
18+
ОписаниеПродукта = ПараметрыПриложения.ОписаниеПродукта();
19+
Приложение = Новый КонсольноеПриложение(ИмяПродукта, ОписаниеПродукта);
20+
Приложение.Версия("v version", ПараметрыПриложения.ВерсияПродукта());
21+
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
22+
Приложение.ДобавитьКоманду("e export", "Экспорт истории проекта в SonarQube", Новый КомандаExport);
23+
Приложение.Запустить(АргументыКоманднойСтроки);
24+
КонецПроцедуры
25+
26+
Попытка
27+
ВыполнитьПриложение();
28+
Исключение
29+
Сообщить(ОписаниеОшибки());
30+
КонецПопытки;
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#Использовать "../../core"
2+
3+
Процедура ОписаниеКоманды(Команда) Экспорт
4+
5+
Команда.Опция("project", "", "Путь к каталогу проекта Git")
6+
.ТСтрока()
7+
.Обязательный(Истина);
8+
9+
Команда.Опция("source", "", "Каталоги исходных кодов")
10+
.ТСтрока()
11+
.Обязательный(Истина);
12+
13+
Команда.Опция("key", "", "Ключ проекта SonarQube")
14+
.ТСтрока()
15+
.ВОкружении("GIT2SONAR_PROJECT_KEY")
16+
.Обязательный(Истина);
17+
18+
Команда.Опция("url", "", "Адрес сервера SonarQube")
19+
.ТСтрока()
20+
.ВОкружении("GIT2SONAR_URL")
21+
.Обязательный(Истина);
22+
23+
Команда.Опция("token", "", "Токен авторизации SonarQube")
24+
.ТСтрока()
25+
.ВОкружении("GIT2SONAR_TOKEN")
26+
.Обязательный(Истина);
27+
28+
Команда.Опция("date", ТекущаяДата(), "Дата последнего анализа. По умолчанию используется текущая дата")
29+
.ТДата()
30+
.ВОкружении("GIT2SONAR_DATE")
31+
.Обязательный(Истина);
32+
33+
Команда.Опция("branch", "master", "Git ветка проекта")
34+
.ТСтрока()
35+
.ВОкружении("GIT2SONAR_BRANCH");
36+
37+
КонецПроцедуры
38+
39+
Процедура ВыполнитьКоманду(Знач Команда) Экспорт
40+
41+
НастройкиЗапуска = Новый Структура;
42+
НастройкиЗапуска.Вставить("ПутьДоКаталогаПроекта", Команда.ЗначениеОпции("project"));
43+
НастройкиЗапуска.Вставить("КаталогиИсходныхКодов", Команда.ЗначениеОпции("source"));
44+
НастройкиЗапуска.Вставить("КлючПроекта", Команда.ЗначениеОпции("key"));
45+
НастройкиЗапуска.Вставить("АдресСонара", Команда.ЗначениеОпции("url"));
46+
НастройкиЗапуска.Вставить("ТокенСонара", Команда.ЗначениеОпции("token"));
47+
НастройкиЗапуска.Вставить("ДатаАнализа", Команда.ЗначениеОпции("date"));
48+
НастройкиЗапуска.Вставить("ВеткаПроекта", Команда.ЗначениеОпции("branch"));
49+
50+
НастройкиЗапуска.ДатаАнализа = УправлениеАнализом.ДатаДляИстории(НастройкиЗапуска.ДатаАнализа);
51+
52+
Отказ = УправлениеАнализом.ВходящиеНастройкиКомандыУказаныКорректно(НастройкиЗапуска);
53+
Если Отказ Тогда
54+
Возврат;
55+
КонецЕсли;
56+
57+
ПараметрыПриложения.Логирование().Отладка("Проект: " + НастройкиЗапуска.ПутьДоКаталогаПроекта);
58+
ПараметрыПриложения.Логирование().Отладка("Каталог исходных кодов: " + НастройкиЗапуска.КаталогиИсходныхКодов);
59+
ПараметрыПриложения.Логирование().Отладка("Ключ проекта: " + НастройкиЗапуска.КлючПроекта);
60+
ПараметрыПриложения.Логирование().Отладка("Адрес SonarQube: " + НастройкиЗапуска.АдресСонара);
61+
ПараметрыПриложения.Логирование().Отладка("Токен SonarQube: " + НастройкиЗапуска.ТокенСонара);
62+
ПараметрыПриложения.Логирование().Отладка("Дата последнего анализа: " + НастройкиЗапуска.ДатаАнализа);
63+
ПараметрыПриложения.Логирование().Отладка("Ветка проекта: " + НастройкиЗапуска.ВеткаПроекта);
64+
65+
УправлениеАнализом.ЗапуститьМассовыйАнализ(НастройкиЗапуска);
66+
67+
КонецПроцедуры
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#Использовать logos
2+
3+
Перем Лог;
4+
5+
// ВерсияПродукта
6+
// Возвращает текущую версию продукта
7+
//
8+
// Возвращаемое значение:
9+
// Строка - Значение текущей версии продукта
10+
//
11+
Функция ВерсияПродукта() Экспорт
12+
13+
Возврат "0.1.0";
14+
15+
КонецФункции // ВерсияПродукта
16+
17+
// ИмяПродукта
18+
// Возвращает имя продукта
19+
//
20+
// Возвращаемое значение:
21+
// Строка - Значение имени продукта
22+
//
23+
Функция ИмяПродукта() Экспорт
24+
25+
Возврат "git2sonar";
26+
27+
КонецФункции // ИмяПродукта
28+
29+
// Форматирование логов
30+
// См. описание метода "УстановитьРаскладку" библиотеки logos
31+
//
32+
Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт
33+
34+
Возврат СтрШаблон("%1: %2 - %3", ТекущаяДата(), УровниЛога.НаименованиеУровня(Уровень), Сообщение);
35+
36+
КонецФункции
37+
38+
// ИмяЛогаСистемы
39+
// Возвращает идентификатор лога приложения
40+
//
41+
// Возвращаемое значение:
42+
// Строка - Значение идентификатора лога приложения
43+
//
44+
Функция ИмяЛогаСистемы() Экспорт
45+
46+
Возврат "oscript.app." + ИмяПродукта();
47+
48+
КонецФункции // ИмяЛогаСистемы
49+
50+
Функция ОписаниеПродукта() Экспорт
51+
Возврат "Выгрузка истории проекта GIT в SonarQube";
52+
КонецФункции
53+
54+
Функция Логирование() Экспорт
55+
Возврат Лог;
56+
КонецФункции
57+
58+
Лог = Логирование.ПолучитьЛог(ИмяЛогаСистемы());

0 commit comments

Comments
 (0)