Skip to content

🩹 MakeFile various tweaks #291

🩹 MakeFile various tweaks

🩹 MakeFile various tweaks #291

Workflow file for this run

name: Build and Test
on:
workflow_dispatch:
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: self-hosted
outputs:
testkernels: ${{ steps.testkernels_output.outputs.testkernels }}
env:
USER_KIT_PATH: 'C:\CosmosRun\'
BochsPath: 'C:\Program Files (x86)\Bochs-2.6.8\Bochs.exe'
steps:
- name: Checkout Cosmos
uses: actions/checkout@v3
with:
repository: CosmosOS/Cosmos
path: Cosmos
- name: Checkout Common
uses: actions/checkout@v3
with:
repository: CosmosOS/Common
path: Common
- name: Checkout IL2CPU
uses: actions/checkout@v3
with:
repository: CosmosOS/IL2CPU
path: IL2CPU
- name: Checkout XSharp
uses: actions/checkout@v3
with:
repository: CosmosOS/XSharp
path: XSharp
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1.1.3
- name: Nuget - Cache
uses: actions/cache@v3
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget
- name: Nuget - Restore
run: |
msbuild Cosmos\Build.sln /t:Restore /maxcpucount /verbosity:normal /p:Net48=True
- name: Build - Cosmos
run: |
msbuild Cosmos\Build.sln /t:Build /maxcpucount /verbosity:normal /p:Net48=True
- name: Build - IL2CPU
run: |
dotnet publish IL2CPU\source\IL2CPU -o "$($env:USER_KIT_PATH)Build\IL2CPU\"
- name: Copy Output - Cosmos
run: |
xcopy /Y "Cosmos\source\Cosmos.Build.Tasks\tools\grub2\boot\grub\i386-pc\*.*" "$($env:USER_KIT_PATH)Build\ISO\boot\grub\i386-pc\"
xcopy /Y "Cosmos\Build\grub2\boot\grub\grub.cfg" "$($env:USER_KIT_PATH)Build\ISO\boot\grub"
xcopy /Y /S "Cosmos\Build\VMware\*" "$($env:USER_KIT_PATH)Build\VMware\"
xcopy /Y /S "Cosmos\Build\Tools" "$($env:USER_KIT_PATH)Build\Tools\"
- name: Copy Output - IL2CPU
run: |
xcopy /Y "IL2CPU\source\Cosmos.Core.DebugStub\*.xs" "$($env:USER_KIT_PATH)XSharp\DebugStub\"
# - name: Send test kernels to GITHUB_OUTPUT
# id: testkernels_output
# run: |
# $testList = dotnet test Cosmos\Tests\Cosmos.TestRunner.UnitTest\Cosmos.TestRunner.UnitTest.csproj --list-tests
# Write-Host $testList
# $testList >> tests.txt
# $match = Select-String -Pattern "^.*TestKernel\((.*)\)$" -Path tests.txt
# Write-Host $match
# $testKernels = $match.matches.groups | where { $_.index % 2 -ne 0 } | Select-Object value | foreach { $_.value }
# Write-Host $testKernels
# $testKernelsEnv = ""
# $testKernels | foreach { $testKernelsEnv += "$($_)," }
# $testKernelsEnv = $testKernelsEnv.Trim(",")
# Write-Host $testKernelsEnv
# "testkernels=[$($testKernelsEnv)]" >> $env:GITHUB_OUTPUT
test:
if: ${{ success() }}
needs: [build]
runs-on: self-hosted
strategy:
matrix:
kernel: [
"BoxingTests.Kernel",
"Cosmos.Compiler.Tests.TypeSystem.Kernel",
"Cosmos.Compiler.Tests.Bcl.Kernel",
"Cosmos.Compiler.Tests.Bcl.System.Kernel",
"Cosmos.Compiler.Tests.Exceptions.Kernel",
"Cosmos.Compiler.Tests.MethodTests.Kernel",
"Cosmos.Compiler.Tests.SingleEchoTest.Kernel",
"Cosmos.Kernel.Tests.Fat.Kernel",
"Cosmos.Kernel.Tests.IO.Kernel",
"SimpleStructsAndArraysTest.Kernel",
"Cosmos.Kernel.Tests.DiskManager.Kernel",
"GraphicTest.Kernel",
"NetworkTest.Kernel",
"AudioTests.Kernel",
"MemoryOperationsTest.Kernel",
"ProcessorTests.Kernel"
]
env:
USER_KIT_PATH: 'C:\CosmosRun\'
BochsPath: 'C:\Program Files (x86)\Bochs-2.6.8\Bochs.exe'
steps:
- name: Checkout Cosmos
uses: actions/checkout@v3
with:
repository: CosmosOS/Cosmos
path: Cosmos
- name: Checkout Common
uses: actions/checkout@v3
with:
repository: CosmosOS/Common
path: Common
- name: Checkout IL2CPU
uses: actions/checkout@v3
with:
repository: CosmosOS/IL2CPU
path: IL2CPU
- name: Checkout XSharp
uses: actions/checkout@v3
with:
repository: CosmosOS/XSharp
path: XSharp
- name: Copy Bochs
run: |
xcopy /Y /S "Cosmos\Resources\Bochs\*.*" "${env:ProgramFiles(x86)}\Bochs-2.6.8\"
- name: Test - Cosmos
env:
CI: "True"
run: |
dotnet test "Cosmos\Tests\Cosmos.TestRunner.UnitTest\Cosmos.TestRunner.UnitTest.csproj" --logger "trx;LogFileName=$($env:USER_KIT_PATH)TestResults\${{ matrix.kernel }}-TestResult.trx" --filter "FullyQualifiedName~${{ matrix.kernel }}"
- name: Upload Test Logs
uses: actions/upload-artifact@v3
with:
name: test-logs
path: ${{ env.USER_KIT_PATH }}TestResults