diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0fb1e335..a8aa24ba 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -25,6 +25,10 @@ jobs: steps: - uses: actions/checkout@v6 + - name: Powershell info + shell: pwsh + run: $PSVersionTable + - name: Install dependencies shell: pwsh run: ./Build/install-dependencies.ps1 @@ -33,9 +37,13 @@ jobs: shell: pwsh run: dotnet --info - - name: Build + - name: CI build + shell: pwsh + run: ./Build/invoke-ci-build.ps1 + + - name: Build artifacts shell: pwsh - run: ./Build/invoke-ci-build.ps1 "${{ secrets.GITHUB_TOKEN }}" + run: ./Build/invoke-artifacts-build.ps1 "${{ secrets.GITHUB_TOKEN }}" - name: Artifact nuget packages uses: actions/upload-artifact@v6 diff --git a/Build/build-locally.ps1 b/Build/build-locally.ps1 index 12687199..b9727f2b 100644 --- a/Build/build-locally.ps1 +++ b/Build/build-locally.ps1 @@ -6,6 +6,10 @@ param ( [switch] $SkipBuild, + [Parameter()] + [switch] + $SkipArtifacts, + [Parameter()] [switch] $SkipLinuxSdk, @@ -48,6 +52,10 @@ if (-not $SkipBuild) { & (Join-Path $PSScriptRoot 'invoke-ci-build.ps1') } +if (-not $SkipArtifacts) { + & (Join-Path $PSScriptRoot 'invoke-artifacts-build.ps1') +} + if (-not $SkipLinuxSdk) { $repository = Join-Path $PSScriptRoot '../' $invokeBuild = Resolve-ModulePath -Name InvokeBuild -Version (Get-ModuleVersion -Name InvokeBuild) @@ -79,7 +87,6 @@ if (-not $SkipWinSdk) { & (Join-Path $PSScriptRoot 'invoke-sdk-test.ps1') -Filter $WinSdkFilter } -# benchmarks if (-not $SkipBenchmarks) { & (Join-Path $PSScriptRoot 'invoke-benchmarks.ps1') -Configuration $BenchmarksConfiguration } \ No newline at end of file diff --git a/Build/invoke-artifacts-build.ps1 b/Build/invoke-artifacts-build.ps1 new file mode 100644 index 00000000..012f7499 --- /dev/null +++ b/Build/invoke-artifacts-build.ps1 @@ -0,0 +1,31 @@ +#Requires -Version "7.0" +#Requires -Modules @{ ModuleName="InvokeBuild"; ModuleVersion="5.14.23" } +#Requires -Modules @{ ModuleName="ThirdPartyLibraries"; ModuleVersion="3.11.0" } +#Requires -Modules @{ ModuleName="ZipAsFolder"; ModuleVersion="1.0.0" } + +[CmdletBinding()] +param ( + [Parameter()] + [string] + $GithubToken +) + +$ErrorActionPreference = 'Stop' +$ProgressPreference = 'SilentlyContinue' +Set-StrictMode -Version Latest + +. (Join-Path $PSScriptRoot 'scripts' 'Get-FullPath.ps1') +. (Join-Path $PSScriptRoot 'scripts' 'Get-NugetPath.ps1') +. (Join-Path $PSScriptRoot 'scripts' 'Get-ReleaseVersion.ps1') +. (Join-Path $PSScriptRoot 'scripts' 'Merge-DesignTimePackage.ps1') +. (Join-Path $PSScriptRoot 'scripts' 'Merge-NugetPackages.ps1') +. (Join-Path $PSScriptRoot 'scripts' 'Remove-DirectoryRecurse.ps1') +. (Join-Path $PSScriptRoot 'scripts' 'Test-NugetPackage.ps1') +. (Join-Path $PSScriptRoot 'scripts' 'Write-ThirdPartyNotices.ps1') + +Invoke-Build ` + -File (Join-Path $PSScriptRoot 'tasks' 'artifact-tasks.ps1') ` + -PathSources (Get-FullPath (Join-Path $PSScriptRoot '../Sources')) ` + -PathThirdParty (Get-FullPath (Join-Path $PSScriptRoot 'third-party-libraries')) ` + -PathBuildOut (Get-FullPath (Join-Path $PSScriptRoot '../build-out')) ` + -GithubToken $GithubToken \ No newline at end of file diff --git a/Build/invoke-ci-build.ps1 b/Build/invoke-ci-build.ps1 index a9948eb8..685aee06 100644 --- a/Build/invoke-ci-build.ps1 +++ b/Build/invoke-ci-build.ps1 @@ -1,14 +1,5 @@ #Requires -Version "7.0" #Requires -Modules @{ ModuleName="InvokeBuild"; ModuleVersion="5.14.23" } -#Requires -Modules @{ ModuleName="ThirdPartyLibraries"; ModuleVersion="3.11.0" } -#Requires -Modules @{ ModuleName="ZipAsFolder"; ModuleVersion="1.0.0" } - -[CmdletBinding()] -param ( - [Parameter()] - [string] - $GithubToken -) $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' @@ -18,15 +9,9 @@ Set-StrictMode -Version Latest . (Join-Path $PSScriptRoot 'scripts' 'Get-FullPath.ps1') . (Join-Path $PSScriptRoot 'scripts' 'Get-NugetPath.ps1') . (Join-Path $PSScriptRoot 'scripts' 'Get-ReleaseVersion.ps1') -. (Join-Path $PSScriptRoot 'scripts' 'Merge-DesignTimePackage.ps1') -. (Join-Path $PSScriptRoot 'scripts' 'Merge-NugetPackages.ps1') . (Join-Path $PSScriptRoot 'scripts' 'Remove-DirectoryRecurse.ps1') -. (Join-Path $PSScriptRoot 'scripts' 'Test-NugetPackage.ps1') -. (Join-Path $PSScriptRoot 'scripts' 'Write-ThirdPartyNotices.ps1') Invoke-Build ` -File (Join-Path $PSScriptRoot 'tasks' 'ci-build-tasks.ps1') ` -PathSources (Get-FullPath (Join-Path $PSScriptRoot '../Sources')) ` - -PathThirdParty (Get-FullPath (Join-Path $PSScriptRoot 'third-party-libraries')) ` - -PathBuildOut (Get-FullPath (Join-Path $PSScriptRoot '../build-out')) ` - -GithubToken $GithubToken \ No newline at end of file + -PathBuildOut (Get-FullPath (Join-Path $PSScriptRoot '../build-out')) \ No newline at end of file diff --git a/Build/scripts/Get-ModuleVersion.ps1 b/Build/scripts/Get-ModuleVersion.ps1 index 8ed4421b..101d5e64 100644 --- a/Build/scripts/Get-ModuleVersion.ps1 +++ b/Build/scripts/Get-ModuleVersion.ps1 @@ -5,7 +5,7 @@ function Get-ModuleVersion { $Name ) - $sources = Get-Content (Join-Path $PSScriptRoot '../invoke-ci-build.ps1') -Raw + $sources = Get-Content (Join-Path $PSScriptRoot '../invoke-artifacts-build.ps1') -Raw $tokens = $null $errors = $null $modules = [Management.Automation.Language.Parser]::ParseInput($sources, [ref]$tokens, [ref]$errors).ScriptRequirements.RequiredModules diff --git a/Build/tasks/artifact-tasks.ps1 b/Build/tasks/artifact-tasks.ps1 new file mode 100644 index 00000000..a0ffb418 --- /dev/null +++ b/Build/tasks/artifact-tasks.ps1 @@ -0,0 +1,29 @@ +param( + [Parameter(Mandatory)] + [ValidateScript({ Test-Path $_ })] + [string] + $PathSources, + + [Parameter(Mandatory)] + [ValidateScript({ Test-Path $_ })] + [string] + $PathThirdParty, + + [Parameter(Mandatory)] + [string] + $PathBuildOut, + + [Parameter()] + [string] + $GithubToken +) + +task . ThirdPartyNotices, Pack + +task ThirdPartyNotices { + Invoke-Build -File 'task-third-party-notices.ps1' -Sources $PathSources -Repository $PathThirdParty -BuildOut $PathBuildOut -GithubToken $GithubToken +} + +task Pack { + Invoke-Build -File 'task-pack.ps1' -Sources $PathSources -BuildOut $PathBuildOut +} \ No newline at end of file diff --git a/Build/tasks/ci-build-tasks.ps1 b/Build/tasks/ci-build-tasks.ps1 index 52f193ea..49362822 100644 --- a/Build/tasks/ci-build-tasks.ps1 +++ b/Build/tasks/ci-build-tasks.ps1 @@ -5,20 +5,11 @@ param( $PathSources, [Parameter(Mandatory)] - [ValidateScript({ Test-Path $_ })] - [string] - $PathThirdParty, - - [Parameter(Mandatory)] - [string] - $PathBuildOut, - - [Parameter()] [string] - $GithubToken + $PathBuildOut ) -task . Clean, Build, UnitTest, ThirdPartyNotices, Pack +task . Clean, Build, UnitTest task Clean { Remove-DirectoryRecurse -Path $PathBuildOut @@ -43,12 +34,4 @@ task UnitTest { ) Build-Parallel $builds -ShowParameter Framework -MaximumBuilds 4 -} - -task ThirdPartyNotices { - Invoke-Build -File 'task-third-party-notices.ps1' -Sources $PathSources -Repository $PathThirdParty -BuildOut $PathBuildOut -GithubToken $GithubToken -} - -task Pack { - Invoke-Build -File 'task-pack.ps1' -Sources $PathSources -BuildOut $PathBuildOut } \ No newline at end of file