Skip to content

Commit 3ef2cfb

Browse files
authored
Merge pull request #1621 from EvilBeaver/feture/publish-dev
публикация rc.9
2 parents 1563ad1 + 57a16fe commit 3ef2cfb

File tree

419 files changed

+6154
-11477
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

419 files changed

+6154
-11477
lines changed

.cursor/rules/langversion.mdc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
alwaysApply: true
3+
---
4+
5+
Проект использует .net 8.0 и LangVersion 8, поэтому при генерации кода не используй языковые фичи C#, которые отсутствуют в C# 8.

.cursor/rules/runbsltests.mdc

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
description: When you need to run main tests
3+
alwaysApply: false
4+
---
5+
6+
Когда тебе потребуется запустить приемочные тесты всего проекта, убедиться что ничего не сломано, тебе потребуется запустить bsl тесты. Для этого используются готовые скрипты:
7+
8+
1. **ОБЯЗАТЕЛЬНО** собери консольное приложение oscript из исходников с последними изменениями:
9+
10+
```
11+
dotnet build src/oscript/oscript.csproj
12+
```
13+
14+
После сборки движок будет находиться здесь:
15+
- Windows: `src\oscript\bin\Debug\net8.0\oscript.exe`
16+
- Linux/macOS: `src/oscript/bin/Debug/net8.0/oscript`
17+
18+
**КРИТИЧЕСКИ ВАЖНО**: Тесты должны запускаться только на свежесобранном oscript, а не на версии из системы! Это гарантирует, что тесты валидируют актуальный код после внесённых изменений.
19+
20+
2. Запусти нужный скрипт, **ЯВНО** передав путь к свежесобранному движку:
21+
- Windows: `tests\run-bsl-tests.cmd src\oscript\bin\Debug\net8.0\oscript.exe`
22+
- Linux/macOS: `tests/run-bsl-tests.sh src/oscript/bin/Debug/net8.0/oscript`
23+
24+
**ВАЖНО**: Не полагайся на автоматический поиск oscript в PATH — всегда указывай путь к свежесобранному бинарнику первым параметром!
25+
26+
Оба скрипта автоматически:
27+
- Устанавливают путь к библиотекам OVM через переменную `OVM_LIB_PATH` (по умолчанию `%USERPROFILE%\AppData\Local\ovm\current\lib` для Windows и `$HOME/.local/share/ovm/current/lib` для Linux/macOS)
28+
- Настраивают `OSCRIPT_CONFIG=lib.system=<OVM_LIB_PATH>`, если эта переменная не была задана заранее
29+
- Переходят в каталог `tests` и выполняют `testrunner.os -runAll .`
30+
31+
3. Для запуска одного теста также используй свежесобранный oscript.exe: `<путь\к\собранному\oscript.exe> testrunner.os -run <имя файла теста.os>`.
32+
4. Всегда используй для запуска тестов новую консоль, не переиспользуй консоль от предыдущих запусков.
33+
5. Если ошибка запуска тестов связана с Component.dll или NativeApi (эти dll упоминаются в ошибках тестов), то такие тесты следует игнорировать и смотреть только на другие ошибки тестов.
34+
6. Ошибки теста http.os и "Тест_ДолженПроверитьЧтоПеремещениеФайлаРаботаетПоHTTP" следует игнорировать.

.github/workflows/copilot-setup-steps.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ jobs:
1717
# Setup steps for OneScript development environment
1818
steps:
1919
- name: Checkout code
20-
uses: actions/checkout@v4
20+
uses: actions/checkout@v6
2121

2222
- run: git config --global core.quotepath false
2323

24-
- uses: actions/setup-dotnet@v4
24+
- uses: actions/setup-dotnet@v5
2525
with:
26-
dotnet-version: '6.0.x'
26+
dotnet-version: '8.0.x'
2727

2828
- name: Установка OneScript
2929
uses: otymko/[email protected]

.github/workflows/rebase.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- name: Checkout the latest code
12-
uses: actions/checkout@v4
12+
uses: actions/checkout@v6
1313
with:
1414
token: ${{ secrets.GITHUB_TOKEN }}
1515
fetch-depth: 0 # otherwise, you will fail to push refs to dest repo

.github/workflows/sonar.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ jobs:
1111
if: (github.repository == 'EvilBeaver/OneScript' ) && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.event.repository.full_name)
1212
steps:
1313
- name: Set up JDK 17
14-
uses: actions/setup-java@v4
14+
uses: actions/setup-java@v5
1515
with:
1616
java-version: 17
1717
distribution: temurin
18-
- uses: actions/checkout@v4
18+
- uses: actions/checkout@v6
1919
with:
2020
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
2121
- name: Cache SonarQube packages

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"dotnet.defaultSolution": "src/1Script.sln"
3+
}

Build.csproj

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
<Configuration>Release</Configuration>
1515
<Solution>$(MSBuildProjectDirectory)/src/1Script.sln</Solution>
1616

17+
<ActiveFramework>net8.0</ActiveFramework>
18+
1719
</PropertyGroup>
1820

1921
<ItemGroup>
@@ -30,11 +32,11 @@
3032
<ItemGroup>
3133
<PublishProjects Include="oscript">
3234
<ProjectFile>oscript.csproj</ProjectFile>
33-
<Framework>net6.0</Framework>
35+
<Framework>$(ActiveFramework)</Framework>
3436
</PublishProjects>
3537
<PublishProjects Include="TestApp">
3638
<ProjectFile>TestApp.csproj</ProjectFile>
37-
<Framework>net6.0-windows</Framework>
39+
<Framework>$(ActiveFramework)-windows</Framework>
3840
</PublishProjects>
3941
</ItemGroup>
4042

@@ -106,7 +108,7 @@
106108
</ItemGroup>
107109

108110
<Exec Command="dotnet publish &quot;src/oscript/oscript.csproj&quot; -r %(RuntimeID.Identity) --self-contained -c $(Configuration) -o &quot;$(ArtifactsRoot)/%(RuntimeID.Identity)/bin&quot;" UseUtf8Encoding="Always"/>
109-
<Exec Command="dotnet publish &quot;src/TestApp/TestApp.csproj&quot; -f net6.0-windows -c $(Configuration) -p:Platform=%(PlatformItem.MSBuildName) -p:UseAppHost=true -o &quot;$(ArtifactsRoot)/win-%(PlatformItem.Identity)/bin&quot;" UseUtf8Encoding="Always"/>
111+
<Exec Command="dotnet publish &quot;src/TestApp/TestApp.csproj&quot; -f $(ActiveFramework)-windows -c $(Configuration) -p:Platform=%(PlatformItem.MSBuildName) -p:UseAppHost=true -o &quot;$(ArtifactsRoot)/win-%(PlatformItem.Identity)/bin&quot;" UseUtf8Encoding="Always"/>
110112

111113
<PropertyGroup>
112114
<CppBinPrefix>$(MSBuildProjectDirectory)/src/ScriptEngine.NativeApi/bin/$(Configuration)</CppBinPrefix>
@@ -162,11 +164,9 @@
162164
</Target>
163165

164166
<Target Name="BuildWithCpp" DependsOnTargets="CleanAll;MakeCPP;MakeFDD;MakeSCD;BuildDebugger">
165-
<CallTarget Targets="CleanIntermediates"/>
166167
</Target>
167168

168169
<Target Name="BuildWithoutCpp" DependsOnTargets="CleanAll;MakeFDD;MakeSCD;BuildDebugger">
169-
<CallTarget Targets="CleanIntermediates"/>
170170
</Target>
171171

172172
<!-- Используется для поиска первого собранного oscript.exe -->
@@ -225,7 +225,7 @@
225225

226226
</Target>
227227

228-
<Target Name="ComposeDistributionFolders">
228+
<Target Name="ComposeDistributionFolders" DependsOnTargets="CleanIntermediates">
229229
<ItemGroup>
230230
<TargetDir Include="fdd-x64"/>
231231
<TargetDir Include="fdd-x86"/>
@@ -261,7 +261,7 @@
261261
<Delete Files="@(TempFiles)"/>
262262
</Target>
263263

264-
<Target Name="PrepareDistributionFiles" DependsOnTargets="CleanAll;BuildAll;GatherLibrary;ComposeDistributionFolders"/>
264+
<Target Name="PrepareDistributionFiles" DependsOnTargets="CleanAll;BuildAll;GatherLibrary;BuildDocumentation;ComposeDistributionFolders"/>
265265

266266
<Target Name="Test">
267267
<CallTarget Targets="UnitTests;ScriptedTests" />
@@ -373,5 +373,35 @@
373373
Command="dotnet nuget push %(NugetAbleProject.Identity) -k $(NugetToken) -s https://api.nuget.org/v3/index.json" UseUtf8Encoding="Always"/>
374374

375375
</Target>
376+
377+
<Target Name="BuildDocumenter">
378+
<Exec Command="dotnet publish &quot;$(MSBuildProjectDirectory)/src/OneScriptDocumenter/OneScriptDocumenter.csproj&quot; -c Release -o &quot;$(ArtifactsRoot)/tools/documenter&quot;" UseUtf8Encoding="Always"/>
379+
</Target>
380+
381+
<Target Name="BuildDocumentation" DependsOnTargets="MakeSCD;BuildDocumenter">
382+
<PropertyGroup>
383+
<DocInputDir>$(ArtifactsRoot)/win-x64/bin</DocInputDir>
384+
<DocsRoot>$(ArtifactsRoot)/docs</DocsRoot>
385+
<DocumenterToolDir>$(ArtifactsRoot)/tools/documenter</DocumenterToolDir>
386+
</PropertyGroup>
387+
<ItemGroup>
388+
<DocAssemblies Include="$(DocInputDir)/ScriptEngine.HostedScript.dll"/>
389+
<DocAssemblies Include="$(DocInputDir)/ScriptEngine.dll"/>
390+
<DocAssemblies Include="$(DocInputDir)/OneScript.StandardLibrary.dll"/>
391+
<DocAssemblies Include="$(DocInputDir)/OneScript.Web.Server.dll"/>
392+
<DocAssemblies Include="$(DocInputDir)/oscript.dll"/>
393+
</ItemGroup>
394+
395+
<Error Condition="'@(DocAssemblies)' == ''" Text="No input assemblies found in $(DocInputDir) for documentation generation" />
396+
397+
<MakeDir Directories="$(DocsRoot)"/>
398+
<MakeDir Directories="$(DocsRoot)/markdown"/>
399+
<MakeDir Directories="$(DocsRoot)/json"/>
400+
<Exec Command="dotnet &quot;$(DocumenterToolDir)/OneScriptDocumenter.dll&quot; @(DocAssemblies->'%(FullPath)', ' ') -t &quot;$(MSBuildProjectDirectory)/src/OneScriptDocumenter/default_toc.json&quot; -m &quot;$(DocsRoot)/markdown&quot; -j &quot;$(DocsRoot)/json/syntax-helper.json&quot;" UseUtf8Encoding="Always"/>
401+
402+
<RemoveDir Directories="$(DocumenterToolDir)" Condition="Exists($(DocumenterToolDir))"/>
403+
404+
</Target>
376405

406+
377407
</Project>

Jenkinsfile

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pipeline {
55

66
environment {
77
VersionPrefix = '2.0.0'
8-
VersionSuffix = 'rc.8'
8+
VersionSuffix = 'rc.9'
99
outputEnc = '65001'
1010
}
1111

@@ -199,8 +199,9 @@ pipeline {
199199
}
200200

201201
stage ('Publishing night-build') {
202-
when { anyOf {
203-
branch 'develop';
202+
when {
203+
anyOf {
204+
branch 'develop';
204205
}
205206
}
206207
agent { label 'master' }
@@ -217,8 +218,9 @@ pipeline {
217218
}
218219

219220
stage ('Publishing preview') {
220-
when { anyOf {
221-
branch 'release/preview';
221+
when {
222+
anyOf {
223+
branch 'release/preview';
222224
}
223225
}
224226
agent { label 'master' }
@@ -257,6 +259,46 @@ pipeline {
257259
}
258260
}
259261
}
262+
263+
stage ('Publishing docker-images') {
264+
parallel {
265+
stage('Build v1') {
266+
agent { label 'linux' }
267+
when {
268+
anyOf {
269+
branch 'release/latest'
270+
expression {
271+
return env.TAG_NAME && env.TAG_NAME.startsWith('v1.')
272+
}
273+
}
274+
}
275+
steps {
276+
script {
277+
def codename = env.TAG_NAME ? env.TAG_NAME : 'latest'
278+
publishDockerImage('v1', codename)
279+
}
280+
}
281+
}
282+
283+
stage('Build v2') {
284+
agent { label 'linux' }
285+
when {
286+
anyOf {
287+
branch 'develop'
288+
expression {
289+
return env.TAG_NAME && env.TAG_NAME.startsWith('v2.')
290+
}
291+
}
292+
}
293+
steps {
294+
script {
295+
def codename = env.TAG_NAME ? env.TAG_NAME : 'dev'
296+
publishDockerImage('v2', codename)
297+
}
298+
}
299+
}
300+
}
301+
}
260302
}
261303
}
262304

@@ -300,3 +342,12 @@ def publishReleaseNotes(codename) {
300342
}
301343
}
302344

345+
def publishDockerImage(flavour, codename) {
346+
def imageName = "evilbeaver/onescript:${codename}"
347+
348+
docker.build(
349+
imageName,
350+
"--load -f install/builders/base-image/Dockerfile_${flavour} ."
351+
).push()
352+
}
353+

0 commit comments

Comments
 (0)