diff --git a/.github/workflows/sonar-qube-analysis.yml b/.github/workflows/sonar-qube-analysis.yml new file mode 100644 index 0000000..4c71a18 --- /dev/null +++ b/.github/workflows/sonar-qube-analysis.yml @@ -0,0 +1,78 @@ +name: Проверка Sonar + +on: + - push + - pull_request_target + +jobs: + SonarQualityGate: + name: 'Проверка Sonar' + runs-on: ubuntu-latest + steps: + - name: Извлечение исходников PR + if: github.event_name == 'pull_request_target' || github.event_name == 'pull_request' + uses: actions/checkout@v4 + with: + ref: refs/pull/${{ github.event.number }}/merge # Для поддержки pull_request и pull_request_target + fetch-depth: 0 # Получение полной истории (все тэги и ветки) + + - name: Извлечение исходников ветки ${{ github.ref_name }} + if: github.event_name == 'push' + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Получение полной истории (все тэги и ветки) + + # Анализ проекта в SonarQube (ветка) + - name: Анализ в SonarQube (${{ github.ref_name }}) + if: github.event_name == 'push' + uses: sonarsource/sonarqube-scan-action@v2.3.0 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + LC_ALL: "ru_RU.UTF-8" + with: + args: > + -Dsonar.host.url=https://sonar.openbsl.ru + -Dsonar.branch.name=${{ github.ref_name }} + -Dsonar.projectVersion=${{ steps.extract_version.outputs.version }} + -Dsonar.qualitygate.wait=true + -Dsonar.qualitygate.timeout=300 + -Dsonar.sources=./src + + # Анализ проекта в SonarQube (PR) + # https://docs.sonarqube.org/latest/analysis/pull-request/ + - name: Анализ в SonarQube (pull-request ${{ github.event.number }}) + if: github.event_name == 'pull_request_target' || github.event_name == 'pull_request' + uses: sonarsource/sonarqube-scan-action@v2.3.0 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + LC_ALL: "ru_RU.UTF-8" + with: + args: > + -Dsonar.host.url=https://sonar.openbsl.ru + -Dsonar.sources=./src + -Dsonar.pullrequest.key=${{ github.event.pull_request.number }} + -Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }} + -Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }} + -Dsonar.scm.revision=${{ github.event.pull_request.head.sha }} + -Dsonar.qualitygate.wait=true + -Dsonar.qualitygate.timeout=300 + + PublishResult: + name: Публикация результата ревью + runs-on: ubuntu-latest + if: github.event_name != 'push' && (success()||failure()) + needs: SonarQualityGate + + steps: + - name: Извлечение исходников + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Получение полной истории (все тэги и ветки) + + - name: Публикация результата проверки PR + uses: 1CDevFlow/sonar-review-action@main + with: + sonar_branch_plugin: true + env: + GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN }} + diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..ccd71af --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,14 @@ +# must be unique in a given SonarQube instance +sonar.projectKey=pivo-cli + +# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. +# Since SonarQube 4.2, this property is optional if sonar.modules is set. +# If not set, SonarQube starts looking for source code from the directory containing +# the sonar-project.properties file. +# sonar.sources=./src/Инструменты/src +sonar.inclusions=**/*.bsl, **/*.os + +# Encoding of the source code. Default is default system encoding +sonar.sourceEncoding=UTF-8 +sonar.qualitygate.wait=true +sonar.host.url=https://sonar.openbsl.ru diff --git "a/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260BuildRelease.os" "b/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260BuildRelease.os" index 15e8704..1873494 100644 --- "a/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260BuildRelease.os" +++ "b/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260BuildRelease.os" @@ -71,6 +71,11 @@ &Опция(Имя = "ServerDBWeb", Описание = "Сервер опубликованной базы") Перем ServerDBWeb; +&Опция(Имя = "Extensions", Описание = "Расширения проекта") +&ТСтрока +&ПоУмолчанию("") +Перем Extensions; + &Опция(Имя = "BranchRelease", Описание = "Ветка релиза") &ПоУмолчанию("main") Перем BranchRelease; @@ -136,11 +141,6 @@ Логгер.Информация(" Конец: Компиляция обработок"); КомандыКластер.РазблокироватьБазу(); - - Логгер.Информация(" Старт: Перенос обработок в базу"); - КомандыКонфигуратор.ОбновитьОбработкиВКонфигурации(); - Логгер.Информация(" Конец: Перенос обработок в базу"); - Логгер.Информация(" Старт: Перенос обработок в каталог релиза"); файловыеОперации.КопироватьСодержимоеКаталога(ПутьОбработокРепо, КаталогОбработокРелиза); @@ -156,10 +156,13 @@ КонецЕсли; Логгер.Информация(" Старт: Перенос расширений в каталог релиза "); - //TODO Переделать на список - ИмяРасширения = "Основное"; - ПутьКРасширению = СтрШаблон("%1/%2.cfe", КаталогРасширенийРелиза, ИмяРасширения); - КомандыКонфигуратор.ВыгрузитьРасширениеВФайл(ПутьКРасширению, ИмяРасширения); + + СписокРасширений = СтрРазделить(Extensions, ";"); + Для Каждого ИмяРасширения Из СписокРасширений Цикл + ПутьКРасширению = СтрШаблон("%1/%2.cfe", КаталогРасширенийРелиза, ИмяРасширения); + КомандыКонфигуратор.ВыгрузитьРасширениеВФайл(ПутьКРасширению, ИмяРасширения); + Логгер.Информация(СтрШаблон("Перенесено расширение в каталог релиза: %1", ИмяРасширения)); + КонецЦикла; Логгер.Информация(" Конец: Перенос расширений в каталог релиза"); @@ -207,6 +210,7 @@ НастройкиВыполнения.Вставить("UserStorage", UserStorage); НастройкиВыполнения.Вставить("NameDBWeb", NameDBWeb); НастройкиВыполнения.Вставить("ServerDBWeb", ServerDBWeb); + НастройкиВыполнения.Вставить("Extensions", Extensions); НастройкиВыполнения.Вставить("BranchRelease", BranchRelease); МенеджерОпций.УстановитьПараметры(НастройкиВыполнения);