@@ -163,6 +163,7 @@ set(_OUTPUT_C_PATH_ "${_OUTPUT_DIRECTORY_}/compose.yml")
163
163
string (CONFIGURE "${_EXTRA_DOCKERFILE_CONTENT_} " _EXTRA_DOCKERFILE_CONTENT_EVAL_ @ONLY )
164
164
string (CONFIGURE "${_DOCKER_IGNORE_CONTENT_} " _DOCKER_IGNORE_CONTENT_EVAL_ @ONLY )
165
165
166
+ unset (DOCKER_CONTENT )
166
167
string (APPEND DOCKER_CONTENT
167
168
[=[
168
169
# escape=`
@@ -191,6 +192,7 @@ endif()
191
192
192
193
set (_OUTPUT_I_PATH_ "${_CTX_TARGET_} /.dockerignore" )
193
194
195
+ unset (COMPOSE_CONTENT )
194
196
string (APPEND COMPOSE_CONTENT
195
197
[=[
196
198
services:
@@ -305,6 +307,7 @@ string(TOLOWER "${NABLA_DEV_ENV_CT_NAME}" NABLA_DEV_ENV_CT_NAME)
305
307
306
308
set (COMPOSE_NSC_DEV_SERVICE compiler-explorer-nsc-dev )
307
309
string (TOLOWER "dr.devsh.eu/nabla/cmake-host-dev-env/${CMAKE_SYSTEM_NAME} /build/${CMAKE_CXX_COMPILER_ID} /compiler-explorer-nsc:latest" COMPOSE_NSC_DEV_IMAGE )
310
+ string (TOLOWER "dr.devsh.eu/compiler-explorer/production/windows/nsc/orphan-production-test:latest" COMPOSE_NSC_ORPHAN_PRODUCTION_TEST_IMAGE )
308
311
string (TOLOWER "dr.devsh.eu/compiler-explorer/production/windows/nsc:latest" COMPOSE_NSC_PRODUCTION_IMAGE )
309
312
310
313
string (APPEND COMPOSE_CONTENT
@@ -402,16 +405,41 @@ add_custom_target(is-compiler-explorer-running
402
405
USES_TERMINAL
403
406
)
404
407
408
+ # Production NSC image
409
+ set (OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /docker/nsc-production" )
410
+ set (BASE_IMAGE "${COMPOSE_NSC_ORPHAN_PRODUCTION_TEST_IMAGE} " )
405
411
set (NBL_DOCKER_TMP_PRODUCTION_TARGET "C:\\ target" )
412
+ GEN_DOCKER_CONTENT ("" "${OUTPUT_DIRECTORY} "
413
+ [=[
414
+ LABEL maintainer="Arkadiusz Lachowicz <a.lachowicz@devsh.eu>" `
415
+ org.opencontainers.image.authors="Arkadiusz Lachowicz <a.lachowicz@devsh.eu>" `
416
+ org.opencontainers.image.title="Compiler Explorer with Nabla Shader Compilers in Docker" `
417
+ org.opencontainers.image.description="Docker image to run Compiler Explorer instance with Nabla Shader Compilers" `
418
+ org.opencontainers.image.url="https://github.com/Devsh-Graphics-Programming/Nabla" `
419
+ org.opencontainers.image.source="https://github.com/Devsh-Graphics-Programming/Nabla" `
420
+ org.opencontainers.image.documentation="https://github.com/Devsh-Graphics-Programming/Nabla/tree/master/tools/nsc/docker"
421
+
422
+ ENTRYPOINT ["powershell.exe", "-ExecutionPolicy", "Bypass", "-Command", "npm", "--prefix", "$env:GIT_GODBOLT_REPOSITORY_PATH", "start", "--", "--language", "hlsl"]
423
+ ]=]
424
+ [=[
425
+
426
+ ]=]
427
+ nsc-ce-production
428
+ nsc.ce.production
429
+ ${COMPOSE_NSC_PRODUCTION_IMAGE}
430
+ OFF
431
+ )
406
432
407
433
add_custom_target (create-production-compiler-explorer
408
- COMMAND "${DOCKER_EXE} " run -dit -v "${NBL_DOCKER_CT_NSC_VOLUME_SOURCE} :${NBL_DOCKER_TMP_PRODUCTION_TARGET} " --name production-ce-orphan --entrypoint "cmd" "${COMPOSE_NSC_DEV_IMAGE} "
409
- COMMAND "${DOCKER_EXE} " exec production-ce-orphan "${NBL_DOCKER_TMP_PRODUCTION_TARGET} \\ ${NBL_DOCKER_INSTALL_BAT_FILENAME} "
410
- # TODO: add final test -> run in production mode (npm start) + execute basic hlsl file compile checks for collected nsc compilers, if all good then commit
411
- COMMAND "${DOCKER_EXE} " stop production-ce-orphan
412
- COMMAND "${DOCKER_EXE} " commit production-ce-orphan "${COMPOSE_NSC_PRODUCTION_IMAGE} "
413
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} "
414
- VERBATIM
434
+ COMMAND "${DOCKER_EXE} " run -dit -v "${NBL_DOCKER_CT_NSC_VOLUME_SOURCE} :${NBL_DOCKER_TMP_PRODUCTION_TARGET} " --name production-ce-orphan-run-test --entrypoint "cmd" "${COMPOSE_NSC_DEV_IMAGE} "
435
+ COMMAND "${DOCKER_EXE} " exec production-ce-orphan-run-test "${NBL_DOCKER_TMP_PRODUCTION_TARGET} \\ ${NBL_DOCKER_INSTALL_BAT_FILENAME} "
436
+ COMMAND "${DOCKER_EXE} " stop production-ce-orphan-run-test
437
+ COMMAND "${DOCKER_EXE} " commit production-ce-orphan-run-test "${COMPOSE_NSC_ORPHAN_PRODUCTION_TEST_IMAGE} "
438
+ COMMAND "${DOCKER_EXE} " compose build
439
+ # TODO (Yas): here -> run built final image, use host ce_healthy_check to detect if you see godbolt, then use some REST API (POST/GET) to collect ALL compilers from godbolt, check if they are all 3 and nsc_* named, check if they can all still compile basic HLSL input without crashing in the production
440
+ # you can actually tag it with "-test" and if passes tests then tag as final :latest image
441
+ WORKING_DIRECTORY "${OUTPUT_DIRECTORY} "
442
+ VERBATIM
415
443
USES_TERMINAL
416
444
)
417
445
0 commit comments