diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 90844f8..c0893cd 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -10,7 +10,8 @@ on: env: DOTNET_VERSION: "9.0.x" TZ: Asia/Shanghai - SOLUTION: EasilyNET.sln + SOLUTION: EasilyNET.slnx + ARTIFACTS: ./artifacts jobs: build: runs-on: ubuntu-latest @@ -40,11 +41,6 @@ jobs: with: dotnet-version: ${{ env.DOTNET_VERSION }} - - name: Restore dependencies - run: dotnet restore ${{ env.SOLUTION }} - - - name: Build - run: dotnet build ${{ env.SOLUTION }} --no-restore - - - name: Test - run: dotnet test ${{ env.SOLUTION }} --no-build --verbosity normal + - name: Build and Test + run: ./Test.ps1 + shell: pwsh diff --git a/.github/workflows/releaser.yml b/.github/workflows/releaser.yml index b434a7d..5c1680b 100644 --- a/.github/workflows/releaser.yml +++ b/.github/workflows/releaser.yml @@ -7,6 +7,8 @@ on: env: DOTNET_VERSION: "9.0.x" TZ: Asia/Shanghai + SOLUTION: EasilyNET.slnx + ARTIFACTS: ./artifacts jobs: build: runs-on: ubuntu-latest diff --git a/Build.ps1 b/Build.ps1 index 07a15e0..9ff3cba 100644 --- a/Build.ps1 +++ b/Build.ps1 @@ -21,33 +21,40 @@ function Exec { } } -$solution = "EasilyNET.slnx" -$artifacts = ".\artifacts" +# 尝试从环境变量中获取 SOLUTION,如果不存在则使用默认值 +$SOLUTION = $env:SOLUTION +if (-not $SOLUTION) { + $SOLUTION = "EasilyNET.slnx" +} +$ARTIFACTS = $env:ARTIFACTS +if (-not $ARTIFACTS) { + $ARTIFACTS = ".\artifacts" +} -if (Test-Path $artifacts) { Remove-Item $artifacts -Force -Recurse } +if (Test-Path $ARTIFACTS) { Remove-Item $ARTIFACTS -Force -Recurse } -exec { & dotnet clean $solution -c Release } -exec { & dotnet build $solution -c Release } -exec { & dotnet test $solution -c Release --no-build -l trx --verbosity=normal } +exec { & dotnet clean $SOLUTION -c Release } +exec { & dotnet build $SOLUTION -c Release } +exec { & dotnet test $SOLUTION -c Release --no-build -l trx --verbosity=normal } # Core -exec { & dotnet pack .\src\EasilyNET.Core\EasilyNET.Core.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -# exec { & dotnet pack .\src\EasilyNET.Core.SourceGenerator\EasilyNET.Core.SourceGenerator.csproj -c Release -o $artifacts --no-build } -exec { & dotnet pack .\src\EasilyNET.WebCore\EasilyNET.WebCore.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.WebCore.Swagger\EasilyNET.WebCore.Swagger.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.Core\EasilyNET.Core.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +# exec { & dotnet pack .\src\EasilyNET.Core.SourceGenerator\EasilyNET.Core.SourceGenerator.csproj -c Release -o $ARTIFACTS --no-build } +exec { & dotnet pack .\src\EasilyNET.WebCore\EasilyNET.WebCore.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.WebCore.Swagger\EasilyNET.WebCore.Swagger.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } # Framework -exec { & dotnet pack .\src\EasilyNET.AutoDependencyInjection\EasilyNET.AutoDependencyInjection.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.AutoDependencyInjection.Core\EasilyNET.AutoDependencyInjection.Core.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.ExpressMapper\EasilyNET.ExpressMapper.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.RabbitBus.AspNetCore\EasilyNET.RabbitBus.AspNetCore.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.RabbitBus.Core\EasilyNET.RabbitBus.Core.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.Security\EasilyNET.Security.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.AutoDependencyInjection\EasilyNET.AutoDependencyInjection.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.AutoDependencyInjection.Core\EasilyNET.AutoDependencyInjection.Core.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.ExpressMapper\EasilyNET.ExpressMapper.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.RabbitBus.AspNetCore\EasilyNET.RabbitBus.AspNetCore.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.RabbitBus.Core\EasilyNET.RabbitBus.Core.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.Security\EasilyNET.Security.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } # Mongo -exec { & dotnet pack .\src\EasilyNET.Mongo.AspNetCore\EasilyNET.Mongo.AspNetCore.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.Mongo.ConsoleDebug\EasilyNET.Mongo.ConsoleDebug.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.Mongo.Core\EasilyNET.Mongo.Core.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.MongoDistributedLock\EasilyNET.MongoDistributedLock.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.MongoDistributedLock.AspNetCore\EasilyNET.MongoDistributedLock.AspNetCore.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } -exec { & dotnet pack .\src\EasilyNET.MongoGridFS.AspNetCore\EasilyNET.MongoGridFS.AspNetCore.csproj -c Release -o $artifacts --include-symbols -p:SymbolPackageFormat=snupkg --no-build } \ No newline at end of file +exec { & dotnet pack .\src\EasilyNET.Mongo.AspNetCore\EasilyNET.Mongo.AspNetCore.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.Mongo.ConsoleDebug\EasilyNET.Mongo.ConsoleDebug.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.Mongo.Core\EasilyNET.Mongo.Core.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.MongoDistributedLock\EasilyNET.MongoDistributedLock.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.MongoDistributedLock.AspNetCore\EasilyNET.MongoDistributedLock.AspNetCore.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } +exec { & dotnet pack .\src\EasilyNET.MongoGridFS.AspNetCore\EasilyNET.MongoGridFS.AspNetCore.csproj -c Release -o $ARTIFACTS --include-symbols -p:SymbolPackageFormat=snupkg --no-build } \ No newline at end of file diff --git a/EasilyNET.slnx b/EasilyNET.slnx index d16c11c..0571898 100644 --- a/EasilyNET.slnx +++ b/EasilyNET.slnx @@ -26,6 +26,7 @@ + diff --git a/Push.ps1 b/Push.ps1 index adea4f1..f88a014 100644 --- a/Push.ps1 +++ b/Push.ps1 @@ -1,12 +1,15 @@ -$scriptName = $MyInvocation.MyCommand.Name -$artifacts = "./artifacts" +$SCRIPTNAME = $MyInvocation.MyCommand.Name +$ARTIFACTS = $env:ARTIFACTS +if (-not $ARTIFACTS) { + $ARTIFACTS = ".\artifacts" +} if ([string]::IsNullOrEmpty($Env:NUGET_API_KEY)) { - Write-Host "${scriptName}: NUGET_API_KEY is empty or not set. Skipped pushing package(s)." + Write-Host "${SCRIPTNAME}: NUGET_API_KEY is empty or not set. Skipped pushing package(s)." } else { - Get-ChildItem $artifacts -Filter "*.nupkg" | ForEach-Object { - Write-Host "$($scriptName): Pushing $($_.Name)" + Get-ChildItem $ARTIFACTS -Filter "*.nupkg" | ForEach-Object { + Write-Host "$($SCRIPTNAME): Pushing $($_.Name)" dotnet nuget push $_ --source $Env:NUGET_URL --api-key $Env:NUGET_API_KEY if ($lastexitcode -ne 0) { throw ("Exec: " + $errorMessage) diff --git a/Test.ps1 b/Test.ps1 new file mode 100644 index 0000000..8b81415 --- /dev/null +++ b/Test.ps1 @@ -0,0 +1,32 @@ +# Taken from psake https://github.com/psake/psake + +<# +.SYNOPSIS + This is a helper function that runs a scriptblock and checks the PS variable $lastexitcode + to see if an error occcured. If an error is detected then an exception is thrown. + This function allows you to run command-line programs without having to + explicitly check the $lastexitcode variable. +.EXAMPLE + exec { svn info $repository_trunk } "Error executing SVN. Please verify SVN command-line client is installed" +#> +function Exec { + [CmdletBinding()] + param( + [Parameter(Position = 0, Mandatory = 1)][scriptblock]$cmd, + [Parameter(Position = 1, Mandatory = 0)][string]$errorMessage = ($msgs.error_bad_command -f $cmd) + ) + & $cmd + if ($lastexitcode -ne 0) { + throw ("Exec: " + $errorMessage) + } +} + +# 尝试从环境变量中获取 SOLUTION,如果不存在则使用默认值 +$SOLUTION = $env:SOLUTION +if (-not $SOLUTION) { + $SOLUTION = "EasilyNET.slnx" +} + +exec { & dotnet clean $SOLUTION -c Release } +exec { & dotnet build $SOLUTION -c Release } +exec { & dotnet test $SOLUTION -c Release --no-build -l trx --verbosity=normal } \ No newline at end of file