Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ONPREM-1829] [HACKWEEK] Add initial support for Windows containers #96

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Prev Previous commit
Next Next commit
Support multiple versions
  • Loading branch information
christian-stephen committed Feb 21, 2025
commit e6caa57561b5aab9ff4efacd5c6200eb9cee3649
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -137,7 +137,7 @@ jobs:
gcc -v
- with-go-cache:
steps:
- run: ./do test ./...
- run: ./do test ./... -count 2
- notify_failing_main

build:
51 changes: 50 additions & 1 deletion .goreleaser/dockers.yaml
Original file line number Diff line number Diff line change
@@ -31,6 +31,53 @@ dockers:
extra_files:
- ./target/bin/linux/arm64/orchestrator

# Windows images
- id: init-windows-server-2019
image_templates: ["circleci/runner-init:agent-windows-server-2019{{.Env.IMAGE_TAG_SUFFIX}}"]
dockerfile: ./docker/windows.Dockerfile
skip_push: "true" # we push during the build step since we cannot load a Windows image on Linux
use: buildx
build_flag_templates:
- "--builder=circleci-runner-init-windows-builder"
- "--build-arg=PICARD_VERSION={{.Env.PICARD_VERSION}}"
- "--build-arg=WINDOWS_VERSION=ltsc2019"
- "--platform=windows/amd64"
- "--load=false"
- "--push={{.Env.PUSH_WINDOWS}}"
- "--provenance=false"
extra_files:
- ./target/bin/windows/amd64/orchestrator.exe
- id: init-windows-server-2022
image_templates: ["circleci/runner-init:agent-windows-server-2022{{.Env.IMAGE_TAG_SUFFIX}}"]
dockerfile: ./docker/windows.Dockerfile
skip_push: "true" # we push during the build step since we cannot load a Windows image on Linux
use: buildx
build_flag_templates:
- "--builder=circleci-runner-init-windows-builder"
- "--build-arg=PICARD_VERSION={{.Env.PICARD_VERSION}}"
- "--build-arg=WINDOWS_VERSION=ltsc2022"
- "--platform=windows/amd64"
- "--load=false"
- "--push={{.Env.PUSH_WINDOWS}}"
- "--provenance=false"
extra_files:
- ./target/bin/windows/amd64/orchestrator.exe
- id: init-windows-server-2025
image_templates: ["circleci/runner-init:agent-windows-server-2025{{.Env.IMAGE_TAG_SUFFIX}}"]
dockerfile: ./docker/windows.Dockerfile
skip_push: "true" # we push during the build step since we cannot load a Windows image on Linux
use: buildx
build_flag_templates:
- "--builder=circleci-runner-init-windows-builder"
- "--build-arg=PICARD_VERSION={{.Env.PICARD_VERSION}}"
- "--build-arg=WINDOWS_VERSION=ltsc2025"
- "--platform=windows/amd64"
- "--load=false"
- "--push={{.Env.PUSH_WINDOWS}}"
- "--provenance=false"
extra_files:
- ./target/bin/windows/amd64/orchestrator.exe

# Image used in the `circleci-runner` acceptance tests
- id: testinit-amd64
image_templates: ["circleci/runner-init:test-agent-amd64"]
@@ -48,7 +95,9 @@ docker_manifests:
image_templates:
- "circleci/runner-init:agent-amd64{{.Env.IMAGE_TAG_SUFFIX}}"
- "circleci/runner-init:agent-arm64{{.Env.IMAGE_TAG_SUFFIX}}"
- "circleci/runner-init:agent-windows{{.Env.IMAGE_TAG_SUFFIX}}"
- "circleci/runner-init:agent-windows-server-2019{{.Env.IMAGE_TAG_SUFFIX}}"
- "circleci/runner-init:agent-windows-server-2022{{.Env.IMAGE_TAG_SUFFIX}}"
- "circleci/runner-init:agent-windows-server-2025{{.Env.IMAGE_TAG_SUFFIX}}"
skip_push: "{{.Env.SKIP_PUSH}}"

- name_template: "circleci/runner-init:test-agent"
7 changes: 3 additions & 4 deletions docker/windows.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
ARG PICARD_VERSION=agent
ARG WINDOWS_VERSION

FROM --platform=${BUILDPLATFORM} circleci/picard:${PICARD_VERSION} AS task-agent-image

@@ -9,10 +10,8 @@ ARG TARGETPLATFORM
COPY --from=task-agent-image /opt/circleci/${TARGETPLATFORM}/circleci-agent /circleci-agent.exe
COPY ./target/bin/${TARGETPLATFORM}/orchestrator.exe /

FROM mcr.microsoft.com/windows/nanoserver:ltsc2019
FROM mcr.microsoft.com/windows/nanoserver:${WINDOWS_VERSION}

COPY --from=builder / /

WORKDIR /

ENTRYPOINT ["orchestrator.exe", "init"]
ENTRYPOINT ["/orchestrator", "init"]