Skip to content

Commit

Permalink
Merge branch 'develop' into release/preview
Browse files Browse the repository at this point in the history
# Conflicts:
#	Jenkinsfile
  • Loading branch information
EvilBeaver committed Jan 23, 2024
2 parents 7949fcb + e9fbcf1 commit 802613b
Show file tree
Hide file tree
Showing 133 changed files with 3,719 additions and 1,383 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/sonar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@ jobs:
if: (github.repository == 'EvilBeaver/OneScript' ) && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.event.repository.full_name)
steps:
- name: Set up JDK 17
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Cache SonarQube packages
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~\sonar\cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache SonarQube scanner
id: cache-sonar-scanner
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: .\.sonar\scanner
key: ${{ runner.os }}-sonar-scanner
Expand Down
426 changes: 268 additions & 158 deletions Build.csproj

Large diffs are not rendered by default.

356 changes: 0 additions & 356 deletions Build_Core.csproj

This file was deleted.

20 changes: 12 additions & 8 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ pipeline {

environment {
VersionPrefix = '2.0.0'
VersionSuffix = 'rc3'
VersionSuffix = 'rc4'
outputEnc = '65001'
}

Expand Down Expand Up @@ -58,7 +58,7 @@ pipeline {

bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" src/1Script.sln /t:restore && mkdir doctool"
bat "chcp $outputEnc > nul\r\n dotnet publish src/OneScriptDocumenter/OneScriptDocumenter.csproj -c Release -o doctool"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:CleanAll;PrepareDistributionFiles;CreateNuget"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:CleanAll;PrepareDistributionFiles;CreateNuget"

stash includes: 'tests, built/**', name: 'buildResults'
}
Expand Down Expand Up @@ -126,7 +126,7 @@ pipeline {
deleteDir()
}
unstash 'buildResults'
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:Test"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:Test"

junit 'tests/*.xml'
}
Expand All @@ -136,7 +136,7 @@ pipeline {
stage('Linux testing') {
agent{
docker {
image 'mcr.microsoft.com/dotnet/sdk:5.0'
image 'mcr.microsoft.com/dotnet/sdk:6.0'
label 'linux'
}
}
Expand Down Expand Up @@ -187,16 +187,20 @@ pipeline {
unstash 'buildResults'
unstash 'nativeApiSo'

bat 'xcopy output\\na-proxy\\*64.so built\\linux-64\\bin\\'
bat '''
chcp 65001 > nul
dir output\\na-proxy
xcopy output\\na-proxy\\*64.so built\\linux-x64\\bin\\ /F
'''.stripIndent()

script
{
if (env.BRANCH_NAME == "preview") {
echo 'Building preview'
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:PackDistributions /p:Suffix=-pre%BUILD_NUMBER%"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:PackDistributions /p:Suffix=-pre%BUILD_NUMBER%"
}
else{
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build_Core.csproj /t:PackDistributions"
bat "chcp $outputEnc > nul\r\n\"${tool 'MSBuild'}\" Build.csproj /t:PackDistributions"
}
}
archiveArtifacts artifacts: 'built/**', fingerprint: true
Expand All @@ -213,7 +217,7 @@ pipeline {
agent { label 'master' }

steps {

cleanWs()
unstash 'dist'
unstash 'vsix'

Expand Down
49 changes: 48 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,57 @@ OneScript позволяет создавать и выполнять текст
- выполнить команду `mono ovm.exe use stable`
- перезапустить терминал

Донастройка Self-Contained варианта поставки (не требующего инсталляции dotnet)
#### Донастройка Self-Contained варианта поставки (не требующего инсталляции dotnet)

```
chmod +x ./oscript
xattr -d com.apple.quarantine *.dylib oscript
codesign -s - ./oscript
```


# Ручная локальная сборка

## Подготовка

Ниже приведены ссылки на дистрибутивы, однако, учтите, что ссылки могут меняться со временем и их актуальность не гарантируется. Нужен dotnet SDK и компилятор C++, скачать можно из любого места, которое нагуглится.

* Установить [MS BuildTools](https://visualstudio.microsoft.com/ru/thank-you-downloading-visual-studio/?sku=buildtools&rel=16), при установке включить таргетинг на .net6, .net4.8, установить компилятор C++.

## Сборка

Запустить Developer Command Prompt (появится в меню Пуск после установки MSBuildTools или Visual Studio). Перейти в каталог репозитория OneScript. Далее приведены команды в консоли Developer Command Prompt
Сборка выполняется с помощью msbuild. Таргеты:

* CleanAll - очистка результатов предыдущих сборок
* BuildAll - подготовить файлы для поставки
* MakeCPP;MakeFDD;MakeSCD;BuildDebugger - отдельные таргеты сборки для подготовки разных типов поставки
* PrepareDistributionFiles - сборка полных пакетов поставки (включая библиотеки)
* PackDistributions - подготовка ZIP архивов поставки
* CreateNuget - создать пакеты для публикации в NuGet

**Параметры сборки**

* VersionPrefix - префикс номера релиза, его основная часть, например, 2.0.0
* VersionSuffix - суффикс номера, который обычно выступает в качестве произвольного суффикса версионирования по semver, например, beta-786 (необязателен)
* NoCppCompiler - если True - не установлен компилятор C++, в сборку не будут добавлены компоненты C++ (поддержка NativeApi)

Все поставляемые файлы будут размещены в каталоге `built` в корне репозитория 1Script

### Сборка содержимого дистрибутивов в отдельном каталоге

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles
```

### Сборка с ручным указанием версии

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles /p:VersionPrefix=2.0.0
```

### Сборка ZIP-дистрибутивов

```bat
msbuild Build.csproj /t:CleanAll;PrepareDistributionFiles;PackDistributions /p:VersionPrefix=2.0.0 /p:VersionSuffix=preview223
```
Binary file modified install/opm.ospx
Binary file not shown.
78 changes: 78 additions & 0 deletions install/package-loader.os
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@
КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Модули"));
КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Modules"));

КаталогиВК = Новый Массив;
КаталогиВК.Добавить(ОбъединитьПути(Путь, "Components"));
КаталогиВК.Добавить(ОбъединитьПути(Путь, "Компоненты"));

Для Каждого мКаталог Из КаталогиКлассов Цикл

Expand All @@ -118,6 +121,12 @@
ОбработатьКаталогМодулей(мКаталог, СтандартнаяОбработка, Отказ);

КонецЦикла;

Для Каждого мКаталог Из КаталогиВК Цикл

ОбработатьКаталогВК(мКаталог, СтандартнаяОбработка, Отказ);

КонецЦикла;

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

Expand Down Expand Up @@ -161,6 +170,75 @@

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

// По соглашению ВК должны лежать в подпапках, названных, как значения перечисления ТипПлатформы.
// Имя файла, являющегося внешней компонентой должно иметь префикс 1script_
// Components
// net4 (фреймворк .net48
// 1script_barcode.dll
// dotnet (.net современных версий, он же netcore)
// 1script_barcode.dll
// NativeApi
// Windows_x86
// 1script_barcode.dll
// Windows_x86_64
// 1script_barcode.dll
// Linux_x86_64
// 1script_barcode.so
// остальные не поддерживаются (ЖВПР)
//
Процедура ОбработатьКаталогВК(Знач Путь, СтандартнаяОбработка, Отказ)

СИ = Новый СистемнаяИнформация();
МажорнаяВерсия = Лев(СИ.Версия,1);

Если МажорнаяВерсия = "1" Тогда
ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "net4"));
ИначеЕсли МажорнаяВерсия = "2" Тогда
ОбработатьБиблиотекиCLR(ОбъединитьПути(Путь, "dotnet"));
Иначе
Вывести("Неизвестная мажорная версия системы: " + МажорнаяВерсия);
КонецЕсли;

ОбработатьКомпонентыNativeApi(Путь);

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

Процедура ОбработатьБиблиотекиCLR(Путь)
КандидатыВКомпоненты = НайтиФайлы(Путь, "1script_*.dll");
Для Каждого Кандидат Из КандидатыВКомпоненты Цикл
Если Не Кандидат.ЭтоФайл() Тогда
Продолжить;
КонецЕсли;

Вывести("Загружаю файл " + Кандидат.Имя);
ЗагрузитьБиблиотеку(Кандидат.ПолноеИмя);

КонецЦикла;
КонецПроцедуры

Процедура ОбработатьКомпонентыNativeApi(Путь)
СИ = Новый СистемнаяИнформация;
ИмяПодкаталога = ОбъединитьПути(Путь, Строка(СИ.ТипПлатформы));
Вывести("Ищу внешние компоненты в каталоге " + Путь);

#Если Windows Тогда
Расширение = ".dll";
#Иначе
Расширение = ".so";
#КонецЕсли

КандидатыВКомпоненты = НайтиФайлы(ИмяПодкаталога, "1script_*"+Расширение);
Для Каждого Кандидат Из КандидатыВКомпоненты Цикл
Если Не Кандидат.ЭтоФайл() Тогда
Продолжить;
КонецЕсли;

Вывести("Загружаю файл " + Кандидат.Имя);
ПодключитьВнешнююКомпоненту(Кандидат.ПолноеИмя, Кандидат.Имя, ТипВнешнейКомпоненты.Native);

КонецЦикла;
КонецПроцедуры

Процедура ДобавитьКлассЕслиРанееНеДобавляли(ПутьФайла, ИмяКласса)
Вывести("Добавляю класс, если ранее не добавляли " + ИмяКласса);
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда
Expand Down
3 changes: 1 addition & 2 deletions src/1Script.sln
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,8 @@ EndProject

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D14BF321-348C-46B8-B96A-43A22BA7AC10}"
ProjectSection(SolutionItems) = preProject
..\Build.csproj = ..\Build.csproj
oscommon.targets = oscommon.targets
..\Build_Core.csproj = ..\Build_Core.csproj
..\Build.csproj = ..\Build.csproj
..\Jenkinsfile = ..\Jenkinsfile
EndProjectSection
EndProject
Expand Down
Loading

0 comments on commit 802613b

Please sign in to comment.