Skip to content

Commit e052156

Browse files
authored
Merge pull request #1011 from Devsh-Graphics-Programming/nsc-channel
NAM & NSC
2 parents 1042111 + 1dfd31f commit e052156

27 files changed

Lines changed: 1322 additions & 23 deletions

.github/workflows/build-nabla.yml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)