@@ -91,19 +91,33 @@ jobs:
9191 $tag = "build-${{ matrix.vendor }}-${{ matrix.config }}-${{ matrix.tag }}"
9292 $nscTargetTaggedImage = "ghcr.io/${owner}/${package}:${tag}".ToLower()
9393 $nscTargetTaggedImageLatest = "ghcr.io/${owner}/${package}:latest".ToLower()
94+ $nscChannel = "nsc-windows-x64-release"
95+ $nscArtifactName = "${nscChannel}-payload"
96+ $nscManifestArtifactName = "${nscChannel}-manifests"
97+ $shouldPrepareNsc = (
98+ "${{ matrix.vendor }}" -eq "msvc" -and
99+ "${{ matrix.config }}" -eq "Release"
100+ )
94101
95102 $shouldPushImage = (
96103 "${{ github.ref }}" -eq "refs/heads/master" -and
97104 "${{ matrix.vendor }}" -eq "msvc" -and
98105 "${{ matrix.config }}" -eq "Release"
99106 )
107+ $shouldPublishNscRelease = $shouldPushImage
100108
101109 Write-Host "::notice::Should push image? $shouldPushImage"
110+ Write-Host "::notice::Should prepare NSC artifacts? $shouldPrepareNsc"
102111
103112 "prefix=$prefix" >> $env:GITHUB_OUTPUT
104113 "nscTargetTaggedImage=$nscTargetTaggedImage" >> $env:GITHUB_OUTPUT
105114 "nscTargetTaggedImageLatest=$nscTargetTaggedImageLatest" >> $env:GITHUB_OUTPUT
115+ "nscChannel=$nscChannel" >> $env:GITHUB_OUTPUT
116+ "nscArtifactName=$nscArtifactName" >> $env:GITHUB_OUTPUT
117+ "nscManifestArtifactName=$nscManifestArtifactName" >> $env:GITHUB_OUTPUT
118+ "shouldPrepareNsc=$shouldPrepareNsc" >> $env:GITHUB_OUTPUT
106119 "shouldPushImage=$shouldPushImage" >> $env:GITHUB_OUTPUT
120+ "shouldPublishNscRelease=$shouldPublishNscRelease" >> $env:GITHUB_OUTPUT
107121
108122 - name : Checkout
109123 uses : actions/checkout@v4
@@ -227,6 +241,58 @@ jobs:
227241 ${{ env.entry }} ${{ env.cmd }} -Command docker `
228242 save ${{ steps.set-prefix.outputs.nscTargetTaggedImage }} | zstd -T0 -3 -f -o ${{ steps.set-prefix.outputs.prefix }}-nsc-godbolt-image.tar.zst
229243
244+ - name : Container – Install NSC runtime bundle
245+ if : steps.set-prefix.outputs.shouldPrepareNsc == 'True'
246+ run : |
247+ docker exec orphan `
248+ ${{ env.entry }} ${{ env.cmd }} -Command New-Item -ItemType Directory -Force -Path C:\mount\nabla\build-ct\nsc-package | Out-Null
249+
250+ docker exec orphan `
251+ ${{ env.entry }} ${{ env.cmd }} -Command cmake --install `
252+ ${{ env.binary }} `
253+ --config ${{ matrix.config }} `
254+ --prefix C:/mount/nabla/build-ct/nsc-package `
255+ --component PackageConfig
256+
257+ docker exec orphan `
258+ ${{ env.entry }} ${{ env.cmd }} -Command cmake --install `
259+ ${{ env.binary }} `
260+ --config ${{ matrix.config }} `
261+ --prefix C:/mount/nabla/build-ct/nsc-package `
262+ --component Runtimes
263+
264+ docker exec orphan `
265+ ${{ env.entry }} ${{ env.cmd }} -Command cmake --install `
266+ ${{ env.binary }} `
267+ --config ${{ matrix.config }} `
268+ --prefix C:/mount/nabla/build-ct/nsc-package `
269+ --component NSCExecutables
270+
271+ docker exec orphan `
272+ ${{ env.entry }} ${{ env.cmd }} -Command cmake --install `
273+ ${{ env.binary }} `
274+ --config ${{ matrix.config }} `
275+ --prefix C:/mount/nabla/build-ct/nsc-package `
276+ --component NSCConfig
277+
278+ docker exec -w C:\mount\nabla\build-ct orphan `
279+ ${{ env.entry }} ${{ env.cmd }} -Command "& '.\shell.cmd' 'C:\mount\nabla\build-ct\nsc-package\exe\tools\nsc\bin\nsc.exe' '--dump-build-info' '--file' 'C:\mount\nabla\build-ct\nsc-package\exe\tools\nsc\bin\build-info.json'"
280+
281+ - name : Prepare NSC runtime channel layout
282+ if : steps.set-prefix.outputs.shouldPrepareNsc == 'True'
283+ working-directory : ${{ github.workspace }}
284+ run : |
285+ New-Item -ItemType Directory -Force -Path build-ct/nsc-release | Out-Null
286+
287+ cmake `
288+ -D SOURCE_ROOT=build-ct/nsc-package `
289+ -D PAYLOAD_ROOT=build-ct/nsc-release/payload `
290+ -D MANIFEST_ROOT=build-ct/nsc-release/manifests `
291+ -D CHANNEL=${{ steps.set-prefix.outputs.nscChannel }} `
292+ -D MANIFESTS_ZIP=build-ct/nsc-release/${{ steps.set-prefix.outputs.nscChannel }}-manifests.zip `
293+ -D PRUNE=ON `
294+ -P cmake/nam/cmake/NablaAssetManifestsPrepareRelease.cmake
295+
230296 - name : Package left workflow artifacts
231297 run : |
232298 tar -cvf "${{ steps.set-prefix.outputs.prefix }}-profiling.tar" profiling
@@ -239,6 +305,20 @@ jobs:
239305 path : ${{ steps.set-prefix.outputs.prefix }}-nsc-godbolt-image.tar.zst
240306 compression-level : 0
241307
308+ - name : Upload NSC runtime bundle artifact
309+ if : steps.set-prefix.outputs.shouldPrepareNsc == 'True'
310+ uses : actions/upload-artifact@v4
311+ with :
312+ name : ${{ steps.set-prefix.outputs.nscArtifactName }}
313+ path : build-ct/nsc-release/payload
314+
315+ - name : Upload NSC manifest zip artifact
316+ if : steps.set-prefix.outputs.shouldPrepareNsc == 'True'
317+ uses : actions/upload-artifact@v4
318+ with :
319+ name : ${{ steps.set-prefix.outputs.nscManifestArtifactName }}
320+ path : build-ct/nsc-release/${{ steps.set-prefix.outputs.nscChannel }}-manifests.zip
321+
242322 - name : Upload profiling artifacts
243323 uses : actions/upload-artifact@v4
244324 with :
0 commit comments