Skip to content

Commit

Permalink
Merge pull request #7 from silverbulleters/develop
Browse files Browse the repository at this point in the history
Релиз 0.1.0
  • Loading branch information
otymko authored Oct 18, 2020
2 parents e155496 + 4826e7d commit 3673334
Show file tree
Hide file tree
Showing 11 changed files with 570 additions and 97 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Сборка

on:
push:
branches:
- develop
- master
pull_request:

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
oscript_version: [1.4.0]
os: [ubuntu-latest, windows-latest, macOS-latest]
name: Сборка для ${{ matrix.oscript_version }}
steps:
- name: Последняя версия проекта
uses: actions/checkout@v1
- name: Установка OneScript
uses: otymko/setup-onescript@master
with:
version: ${{ matrix.oscript_version }}
- name: Загрузка зависимостей
run: opm install cli && opm install logos && opm install 1bdd && opm install 1testrunner && opm install asserts && opm install fs
- name: Запуск тестов
run: opm run test
- name: Сборка
run: opm build
- name: Формирование артефактов
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@master
with:
name: git2sonar.ospx
path: ./git2sonar*.ospx
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
out
build
oscript_modules
62 changes: 60 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,61 @@
# git2sonar
# Git2Sonar - Выгрузка истории проекта GIT в SonarQube

Загрузка истории проекта в SonarQube
## Кратко о проекте

Проект позволяет запустить анализ для SonarQube git-проекта по истории из git. Один из примеров использования
- покоммитный анализ.

## Пример использования

Что нужно:
* `OneScript`
* Текущая библиотека
* `SonarScanner`
* Сервер `SonarQube`

Порядок действий:
1. Качаем Git-проект на 1C / OneScript для анализа
2. Устанавливаем библиотеку `git2sonar`, если ее нет:
```
opm install git2sonar
```
3. Если в переменной среды `PATH` нет пути к SonarScanner - то добавляем. Для проверки в консоли должна работать
команда `sonarscanner`.
4. Выполняем команду:
```
git2sonar export ...
```

Например:

```sh
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
```
где:
* `--project` - путь до Git-проекта.
* `--source` - каталог с исходными кодами внутри проекта.
* `--key` - ключ проекта, по этому значению будет произведен поиск / создание проекта в SonarQube.
* `--url` - адрес сервера SonarQube.
* `--token` - токен доступа к SonarQube.
* `--date` - дата последнего анализа, с этой даты будет отфильтрована история Git-проекта.
* `--branch` - git ветка, из которой будут получены коммиты для анализа.

## Ограничения

* Анализируется только ветка `master`
* SonarScanner должен быть прописан в переменных среды в `PATH`

## Как вести разработку

Используется:
* Русский вариант синтаксиса
* Тестирование (пока не опубликовано)
* Разработка по `gitflow`

Прежде чем `кодить` нужно:
* Убедиться, что cуществует issue (или создать)
* Обсудить идею с владельцем проекта

## Лицензия

Используется лицензия [MIT License](LICENSE)
Empty file added features/.gitkeep
Empty file.
35 changes: 17 additions & 18 deletions packagedef
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
////////////////////////////////////////////////////////////
// Описание пакета для сборки и установки
// Полную документацию см. на hub.oscript.io/packaging
//
ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src/cmd", "Модули", "ПараметрыПриложения.os");
ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров);
ИмяПродукта = НРег(ПараметрыСистемы_ЛокальнаяВерсия.ИмяПродукта());
ВерсияПродукта = ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта();


Описание.Имя(".")
.Версия("1.0.0")
.Автор("")
.АдресАвтора("[email protected]")
.Описание("Это очень хороший и нужный пакет программ")
Описание.Имя(ИмяПродукта)
.Версия(ВерсияПродукта)
.Автор("SilverBulleters Team")
.АдресАвтора("[email protected]")
.Описание("Выгрузка истории проекта в SonarQube")
.ВерсияСреды("1.0.21")
.ВключитьФайл("src")
.ВключитьФайл("doc")
.ВключитьФайл("tasks")
//.ВключитьФайл("tests")
//.ВключитьФайл("features")
//.ЗависитОт("package1", ">=2.0")
//.ЗависитОт("package2", ">=1.1", "<2.0")
//.ОпределяетКласс("УправлениеВселенной", "src/universe-mngr.os")
//.ОпределяетМодуль("ПолезныеФункции", "src/tools.os")
;
.ВключитьФайл("tests")
.ЗависитОт("cli", "0.9.8")
.ЗависитОт("logos", "0.5")
.ЗависитОт("1bdd", "1.10.0")
.ЗависитОт("1testrunner", "1.8.0")
.ЗависитОт("asserts", "1.3.0")
.ЗависитОт("fs")
.ИсполняемыйФайл("src/cmd/git2sonar.os", ИмяПродукта);
30 changes: 30 additions & 0 deletions src/cmd/git2sonar.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#Использовать cli
#Использовать "."
#Использовать "../core"

// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

КомандаПриложения.ВывестиСправку();

КонецПроцедуры

Процедура ВыполнитьПриложение()
ИмяПродукта = ПараметрыПриложения.ИмяПродукта();
ОписаниеПродукта = ПараметрыПриложения.ОписаниеПродукта();
Приложение = Новый КонсольноеПриложение(ИмяПродукта, ОписаниеПродукта);
Приложение.Версия("v version", ПараметрыПриложения.ВерсияПродукта());
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
Приложение.ДобавитьКоманду("e export", "Экспорт истории проекта в SonarQube", Новый КомандаExport);
Приложение.Запустить(АргументыКоманднойСтроки);
КонецПроцедуры

Попытка
ВыполнитьПриложение();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
67 changes: 67 additions & 0 deletions src/cmd/Классы/КомандаExport.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#Использовать "../../core"

Процедура ОписаниеКоманды(Команда) Экспорт

Команда.Опция("project", "", "Путь к каталогу проекта Git")
.ТСтрока()
.Обязательный(Истина);

Команда.Опция("source", "", "Каталоги исходных кодов")
.ТСтрока()
.Обязательный(Истина);

Команда.Опция("key", "", "Ключ проекта SonarQube")
.ТСтрока()
.ВОкружении("GIT2SONAR_PROJECT_KEY")
.Обязательный(Истина);

Команда.Опция("url", "", "Адрес сервера SonarQube")
.ТСтрока()
.ВОкружении("GIT2SONAR_URL")
.Обязательный(Истина);

Команда.Опция("token", "", "Токен авторизации SonarQube")
.ТСтрока()
.ВОкружении("GIT2SONAR_TOKEN")
.Обязательный(Истина);

Команда.Опция("date", ТекущаяДата(), "Дата последнего анализа. По умолчанию используется текущая дата")
.ТДата()
.ВОкружении("GIT2SONAR_DATE")
.Обязательный(Истина);

Команда.Опция("branch", "master", "Git ветка проекта")
.ТСтрока()
.ВОкружении("GIT2SONAR_BRANCH");

КонецПроцедуры

Процедура ВыполнитьКоманду(Знач Команда) Экспорт

НастройкиЗапуска = Новый Структура;
НастройкиЗапуска.Вставить("ПутьДоКаталогаПроекта", Команда.ЗначениеОпции("project"));
НастройкиЗапуска.Вставить("КаталогиИсходныхКодов", Команда.ЗначениеОпции("source"));
НастройкиЗапуска.Вставить("КлючПроекта", Команда.ЗначениеОпции("key"));
НастройкиЗапуска.Вставить("АдресСонара", Команда.ЗначениеОпции("url"));
НастройкиЗапуска.Вставить("ТокенСонара", Команда.ЗначениеОпции("token"));
НастройкиЗапуска.Вставить("ДатаАнализа", Команда.ЗначениеОпции("date"));
НастройкиЗапуска.Вставить("ВеткаПроекта", Команда.ЗначениеОпции("branch"));

НастройкиЗапуска.ДатаАнализа = УправлениеАнализом.ДатаДляИстории(НастройкиЗапуска.ДатаАнализа);

Отказ = УправлениеАнализом.ВходящиеНастройкиКомандыУказаныКорректно(НастройкиЗапуска);
Если Отказ Тогда
Возврат;
КонецЕсли;

ПараметрыПриложения.Логирование().Отладка("Проект: " + НастройкиЗапуска.ПутьДоКаталогаПроекта);
ПараметрыПриложения.Логирование().Отладка("Каталог исходных кодов: " + НастройкиЗапуска.КаталогиИсходныхКодов);
ПараметрыПриложения.Логирование().Отладка("Ключ проекта: " + НастройкиЗапуска.КлючПроекта);
ПараметрыПриложения.Логирование().Отладка("Адрес SonarQube: " + НастройкиЗапуска.АдресСонара);
ПараметрыПриложения.Логирование().Отладка("Токен SonarQube: " + НастройкиЗапуска.ТокенСонара);
ПараметрыПриложения.Логирование().Отладка("Дата последнего анализа: " + НастройкиЗапуска.ДатаАнализа);
ПараметрыПриложения.Логирование().Отладка("Ветка проекта: " + НастройкиЗапуска.ВеткаПроекта);

УправлениеАнализом.ЗапуститьМассовыйАнализ(НастройкиЗапуска);

КонецПроцедуры
58 changes: 58 additions & 0 deletions src/cmd/Модули/ПараметрыПриложения.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#Использовать logos

Перем Лог;

// ВерсияПродукта
// Возвращает текущую версию продукта
//
// Возвращаемое значение:
// Строка - Значение текущей версии продукта
//
Функция ВерсияПродукта() Экспорт

Возврат "0.1.0";

КонецФункции // ВерсияПродукта

// ИмяПродукта
// Возвращает имя продукта
//
// Возвращаемое значение:
// Строка - Значение имени продукта
//
Функция ИмяПродукта() Экспорт

Возврат "git2sonar";

КонецФункции // ИмяПродукта

// Форматирование логов
// См. описание метода "УстановитьРаскладку" библиотеки logos
//
Функция Форматировать(Знач Уровень, Знач Сообщение) Экспорт

Возврат СтрШаблон("%1: %2 - %3", ТекущаяДата(), УровниЛога.НаименованиеУровня(Уровень), Сообщение);

КонецФункции

// ИмяЛогаСистемы
// Возвращает идентификатор лога приложения
//
// Возвращаемое значение:
// Строка - Значение идентификатора лога приложения
//
Функция ИмяЛогаСистемы() Экспорт

Возврат "oscript.app." + ИмяПродукта();

КонецФункции // ИмяЛогаСистемы

Функция ОписаниеПродукта() Экспорт
Возврат "Выгрузка истории проекта GIT в SonarQube";
КонецФункции

Функция Логирование() Экспорт
Возврат Лог;
КонецФункции

Лог = Логирование.ПолучитьЛог(ИмяЛогаСистемы());
Loading

0 comments on commit 3673334

Please sign in to comment.