Skip to content

Commit d91a96f

Browse files
committed
add docker to image for D-In-D builds, update main.yml
1 parent 831515f commit d91a96f

File tree

2 files changed

+34
-12
lines changed

2 files changed

+34
-12
lines changed

.github/workflows/main.yml

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ jobs:
1010
build-and-push:
1111
runs-on: windows-2022
1212

13+
env:
14+
entry: pwsh.exe
15+
cmd: -NoLogo -NoProfile -ExecutionPolicy Bypass
16+
1317
outputs:
1418
image_tagged: ${{ steps.vars.outputs.image_tagged }}
1519

@@ -60,20 +64,20 @@ jobs:
6064
- name: Pull Image
6165
run: docker pull "${{ needs.build-and-push.outputs.image_tagged }}"
6266

63-
- name: Run Nano Container
64-
run: docker run --isolation process -di --name orphan "${{ needs.build-and-push.outputs.image_tagged }}"
67+
- name: Run Container
68+
run: docker run --entrypoint ${{ env.entry }} --isolation process -di --name orphan "${{ needs.build-and-push.outputs.image_tagged }}" ${{ env.cmd }}
6569

66-
- name: Inspect Nano Container
70+
- name: Inspect Container
6771
run: docker inspect orphan
6872

69-
- name: Nano Container - Unpack Artifacts
70-
run: docker exec orphan pwsh -c "C:\unpack.ps1"
73+
- name: Container Unpack Packages
74+
run: docker exec orphan ${{ env.entry }} ${{ env.cmd }} C:\unpack.ps1
7175

72-
- name: Nano Container - Configure CMake Project
73-
run: docker exec orphan cmake --preset configure-msvc-winsdk
76+
- name: Container Configure CMake Project
77+
run: docker exec orphan ${{ env.entry }} ${{ env.cmd }} -Command cmake --preset configure-msvc-winsdk
7478

75-
- name: Nano Container - Build the Project
76-
run: docker exec orphan cmake --build --preset build-msvc-winsdk --config Release -- -j 14
79+
- name: Container Build Sample Project
80+
run: docker exec orphan ${{ env.entry }} ${{ env.cmd }} -Command cmake --build --preset build-msvc-winsdk --config Release -- -j 14
7781

78-
- name: Nano Container - Test the Project
79-
run: docker exec -w "C:\sample\tests\build-ct\src" orphan ctest -C Release --stop-on-failure --verbose
82+
- name: Container Test Sample Project
83+
run: docker exec -w "C:\sample\tests\build-ct\src" orphan ${{ env.entry }} ${{ env.cmd }} -Command ctest -C Release --stop-on-failure --verbose

Dockerfile

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ ARG VC_VERSION=14.43.17.13
1414
ARG VS_BOOTSTRAP_VERSION=17.13.6
1515
ARG VULKAN_SDK_VERSION=1.4.313.0
1616
ARG NINJATRACING_VERSION=0.0.2
17+
ARG DOCKER_VERSION=28.1.1
1718

1819
# note: it seems we cannot pass version within any workflow ID to installer, though as I look at VS package cache I see it being done in json payloads!
1920
# henceforth we enforce fixed versions with nasty bootstrap URL, more details:
@@ -222,6 +223,19 @@ Invoke-WebRequest -Uri "https://github.com/git-for-windows/git/releases/download
222223
tar -xf C:\Temp\git.zip -C $env:IMPL_ARTIFACTS_DIR ; `
223224
Remove-Item C:\Temp\git.zip
224225

226+
# ---------------- DOCKER ----------------
227+
FROM ${IMPL_NANO_BASE}:${IMPL_NANO_TAG} as docker
228+
SHELL ["pwsh", "-NoLogo", "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command"]
229+
230+
ARG DOCKER_VERSION
231+
ARG IMPL_ARTIFACTS_DIR
232+
233+
RUN Write-Host "Installing Docker $env:DOCKER_VERSION" ; `
234+
New-Item -ItemType Directory -Force -Path C:\Temp, $env:IMPL_ARTIFACTS_DIR ; `
235+
Invoke-WebRequest -Uri "https://download.docker.com/win/static/stable/x86_64/docker-$env:DOCKER_VERSION.zip" -OutFile C:\Temp\docker.zip ; `
236+
tar -xf C:\Temp\docker.zip -C $env:IMPL_ARTIFACTS_DIR ; `
237+
Remove-Item C:\Temp\docker.zip
238+
225239
# ---------------- ZSTD ----------------
226240
FROM ${IMPL_NANO_BASE}:${IMPL_NANO_TAG} as zstd
227241
SHELL ["pwsh", "-NoLogo", "-NoProfile", "-ExecutionPolicy", "Bypass", "-Command"]
@@ -249,6 +263,7 @@ COPY --link --from=ninja ["${IMPL_ARTIFACTS_DIR}", "C:/pack/Ninja"]
249263
COPY --link --from=ninjatracing ["${IMPL_ARTIFACTS_DIR}", "C:/pack/NinjaTracing"]
250264
COPY --link --from=nasm ["${IMPL_ARTIFACTS_DIR}", "C:/pack/Nasm"]
251265
COPY --link --from=git ["${IMPL_ARTIFACTS_DIR}", "C:/pack/Git"]
266+
COPY --link --from=docker ["${IMPL_ARTIFACTS_DIR}", "C:/pack/Docker"]
252267
COPY --link --from=zstd ["${IMPL_ARTIFACTS_DIR}", "C:/compress"]
253268

254269
ARG ZSTD_VERSION
@@ -297,6 +312,7 @@ ARG VS_BOOTSTRAP_VERSION
297312
ARG VULKAN_SDK_VERSION
298313
ARG NINJATRACING_VERSION
299314
ARG ZSTD_VERSION
315+
ARG DOCKER_VERSION
300316

301317
ENV CMAKE_WINDOWS_KITS_10_DIR="C:\WindowsKits10SDK" `
302318
CMAKE_VERSION=${CMAKE_VERSION} `
@@ -314,9 +330,11 @@ BUILD_TOOLS_URL=${BUILD_TOOLS_URL} `
314330
VS_BOOTSTRAP_VERSION=${VS_BOOTSTRAP_VERSION} `
315331
VULKAN_SDK_VERSION=${VULKAN_SDK_VERSION} `
316332
NINJATRACING_VERSION=${NINJATRACING_VERSION} `
333+
ZSTD_VERSION=${ZSTD_VERSION} `
334+
DOCKER_VERSION=${DOCKER_VERSION} `
317335
MSVC_TOOLSET_DIR=C:\BuildTools\VC\Tools\MSVC\${MSVC_VERSION} `
318336
LLVM_TOOLSET_DIR=C:\BuildTools\VC\Tools\Llvm `
319-
PATH="C:\Windows\system32;C:\Windows;C:\Program Files\PowerShell;C:\Git\cmd;C:\Git\bin;C:\Git\usr\bin;C:\Git\mingw64\bin;C:\CMake\cmake-${CMAKE_VERSION}-windows-x86_64\bin;C:\Python;C:\Nasm;C:\Nasm\nasm-${NASM_VERSION};C:\Ninja;C:\compress\zstd-v${ZSTD_VERSION}-win64;C:\vulkan-sdk\Bin;C:\NinjaTracing\ninjatracing-${NINJATRACING_VERSION}"
337+
PATH="C:\Windows\system32;C:\Windows;C:\Program Files\PowerShell;C:\Git\cmd;C:\Git\bin;C:\Git\usr\bin;C:\Git\mingw64\bin;C:\CMake\cmake-${CMAKE_VERSION}-windows-x86_64\bin;C:\Python;C:\Nasm;C:\Nasm\nasm-${NASM_VERSION};C:\Ninja;C:\compress\zstd-v${ZSTD_VERSION}-win64;C:\vulkan-sdk\Bin;C:\NinjaTracing\ninjatracing-${NINJATRACING_VERSION};C:\Docker\docker"
320338

321339
COPY . sample/
322340
COPY unpack.ps1 .

0 commit comments

Comments
 (0)