diff --git a/containers/buildkite-windows/Dockerfile b/containers/buildkite-windows/Dockerfile index 2ed2944..3636762 100644 --- a/containers/buildkite-windows/Dockerfile +++ b/containers/buildkite-windows/Dockerfile @@ -86,10 +86,27 @@ ENV PYTHONIOENCODING=UTF-8 # 'clang.exe' - add this last to let the other one have precedence. # To use these compilers, use the triple prefixed form, e.g. # x86_64-w64-mingw32-clang. +# C:\buildtools and SDK paths are ones that are set by c:\BuildTools\Common7\Tools\VsDevCmd.bat -arch=amd64 -host_arch=amd64 RUN powershell -Command ` [System.Environment]::SetEnvironmentVariable('PATH', ` - [System.Environment]::GetEnvironmentVariable('PATH', 'machine') + ';C:\Program Files\Git\usr\bin;C:\llvm-mingw\bin', ` - 'machine') + [System.Environment]::GetEnvironmentVariable('PATH', 'machine') + ';C:\Program Files\Git\usr\bin;C:\llvm-mingw\bin' ` + + ';C:\BuildTools\Common7\IDE\' ` + + ';C:\BuildTools\Common7\IDE\CommonExt ensions\Microsoft\TeamFoundation\Team Explorer' ` + + ';C:\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin' ` + + ';C:\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja' ` + + ';C:\BuildTools\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer' ` + + ';C:\BuildTools\Common7\IDE\CommonExtensions\Microsoft\TestWindow' ` + + ';C:\BuildTools\Common7\IDE\VC\VCPackages' ` + + ';C:\BuildTools\Common7\Tools\' ` + + ';C:\BuildTools\Common7\Tools\devinit' ` + + ';C:\BuildTools\MSBuild\Current\Bin' ` + + ';C:\BuildTools\MSBuild\Current\bin\Roslyn' ` + + ';C:\BuildTools\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64' ` + + ';C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64\' ` + + ';C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64' ` + + ';C:\Program Files (x86)\Windows Kits\10\bin\x64' ` + + ';C:\Windows\Microsoft.NET\Framework64\v4.0.30319' ` + ,'machine') # support long file names during git checkout RUN git config --system core.longpaths true & ` diff --git a/kubernetes/buildkite/linux-test-big.yaml b/kubernetes/buildkite/linux-112.yaml similarity index 93% rename from kubernetes/buildkite/linux-test-big.yaml rename to kubernetes/buildkite/linux-112.yaml index 0aaa799..8fcdf71 100644 --- a/kubernetes/buildkite/linux-test-big.yaml +++ b/kubernetes/buildkite/linux-112.yaml @@ -15,7 +15,7 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: linux-big + name: linux-test-112 namespace: buildkite spec: replicas: 1 @@ -26,11 +26,11 @@ spec: type: RollingUpdate selector: matchLabels: - app: linux-test-big + app: linux-test-112 template: metadata: labels: - app: linux-test-big + app: linux-test-112 spec: containers: - name: buildkite-linux @@ -58,7 +58,7 @@ spec: fieldRef: fieldPath: metadata.name - name: BUILDKITE_AGENT_TAGS - value: "queue=linux-test-big,name=$(POD_NAME),cluster=google" + value: "queue=linux-test-112,name=$(POD_NAME),cluster=google" - name: BUILDKITE_BUILD_PATH value: "/var/lib/buildkite-agent/builds" - name: BUILDKITE_API_TOKEN diff --git a/kubernetes/buildkite/linux-test.yaml b/kubernetes/buildkite/linux-32.yaml similarity index 91% rename from kubernetes/buildkite/linux-test.yaml rename to kubernetes/buildkite/linux-32.yaml index 6e1cbe8..478bd67 100644 --- a/kubernetes/buildkite/linux-test.yaml +++ b/kubernetes/buildkite/linux-32.yaml @@ -26,21 +26,21 @@ spec: type: RollingUpdate selector: matchLabels: - app: linux-test + app: linux-test-32 template: metadata: labels: - app: linux-test + app: linux-test-32 spec: containers: - name: runner image: gcr.io/llvm-premerge-checks/buildkite-linux:latest resources: limits: - cpu: 30 + cpu: 31 memory: 80Gi requests: - cpu: 30 + cpu: 31 memory: 80Gi volumeMounts: - name: github-ssh @@ -58,7 +58,7 @@ spec: fieldRef: fieldPath: metadata.name - name: BUILDKITE_AGENT_TAGS - value: "queue=linux-test,name=$(POD_NAME),cluster=google" + value: "queue=linux-test-32,name=$(POD_NAME),cluster=google" - name: BUILDKITE_BUILD_PATH value: "/var/lib/buildkite-agent/builds" - name: CONDUIT_TOKEN @@ -78,5 +78,5 @@ spec: - name: workdir emptyDir: {} nodeSelector: - cloud.google.com/gke-nodepool: linux-agents-2 + cloud.google.com/gke-nodepool: linux-32 terminationGracePeriodSeconds: 30 diff --git a/kubernetes/buildkite/linux-56.yaml b/kubernetes/buildkite/linux-56.yaml new file mode 100644 index 0000000..a177ba0 --- /dev/null +++ b/kubernetes/buildkite/linux-56.yaml @@ -0,0 +1,82 @@ +# Copyright 2021 Google LLC +# +# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: linux-test-56 + namespace: buildkite +spec: + replicas: 1 + strategy: + rollingUpdate: + maxUnavailable: 1 + maxSurge: 0 + type: RollingUpdate + selector: + matchLabels: + app: linux-test-56 + template: + metadata: + labels: + app: linux-test-56 + spec: + containers: + - name: runner + image: gcr.io/llvm-premerge-checks/buildkite-linux:latest + resources: + limits: + cpu: 55 + memory: 200Gi + requests: + cpu: 55 + memory: 200Gi + volumeMounts: + - name: github-ssh + mountPath: /mnt/ssh + - name: workdir + mountPath: /var/lib/buildkite-agent + env: + - name: BUILDKITE_AGENT_TOKEN + valueFrom: + secretKeyRef: + name: buildkite-agent-token + key: token + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: BUILDKITE_AGENT_TAGS + value: "queue=linux-test-56,name=$(POD_NAME),cluster=google" + - name: BUILDKITE_BUILD_PATH + value: "/var/lib/buildkite-agent/builds" + - name: CONDUIT_TOKEN + valueFrom: + secretKeyRef: + name: conduit-api-token + key: token + - name: BUILDKITE_API_TOKEN + valueFrom: + secretKeyRef: + name: buildkite-api-token-readonly + key: token + volumes: + - name: github-ssh + secret: + secretName: github-ssh + - name: workdir + emptyDir: {} + nodeSelector: + cloud.google.com/gke-nodepool: linux-56 + terminationGracePeriodSeconds: 30 diff --git a/kubernetes/buildkite/linux.yaml b/kubernetes/buildkite/linux.yaml index 14abe1b..0d6f67d 100644 --- a/kubernetes/buildkite/linux.yaml +++ b/kubernetes/buildkite/linux.yaml @@ -15,7 +15,7 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: linux-agents + name: linux namespace: buildkite spec: replicas: 6 @@ -26,15 +26,15 @@ spec: type: RollingUpdate selector: matchLabels: - app: agent-premerge-debian + app: linux template: metadata: labels: - app: agent-premerge-debian + app: linux spec: containers: - - name: buildkite-premerge-debian - image: gcr.io/llvm-premerge-checks/buildkite-premerge-debian:stable + - name: runner + image: gcr.io/llvm-premerge-checks/buildkite-linux:latest resources: limits: cpu: 30 diff --git a/kubernetes/buildkite/windows-test.yaml b/kubernetes/buildkite/windows-112.yaml similarity index 91% rename from kubernetes/buildkite/windows-test.yaml rename to kubernetes/buildkite/windows-112.yaml index 6b02866..3207232 100644 --- a/kubernetes/buildkite/windows-test.yaml +++ b/kubernetes/buildkite/windows-112.yaml @@ -15,18 +15,18 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: test-windows-buildkite + name: windows-test-112 spec: replicas: 1 strategy: type: Recreate selector: matchLabels: - app: test-windows-buildkite + app: windows-test-112 template: metadata: labels: - app: test-windows-buildkite + app: windows-test-112 spec: containers: - name: buildkite-windows @@ -52,7 +52,7 @@ spec: fieldRef: fieldPath: metadata.name - name: BUILDKITE_AGENT_TAGS - value: "queue=windows-test,cluster=google" + value: "queue=windows-test-112,cluster=google" - name: BUILDKITE_API_TOKEN valueFrom: secretKeyRef: @@ -72,4 +72,4 @@ spec: operator: "Equal" value: "windows" effect: "NoSchedule" - terminationGracePeriodSeconds: 60 + terminationGracePeriodSeconds: 30 diff --git a/kubernetes/buildkite/windows-32.yaml b/kubernetes/buildkite/windows-32.yaml new file mode 100644 index 0000000..f1bd12b --- /dev/null +++ b/kubernetes/buildkite/windows-32.yaml @@ -0,0 +1,75 @@ +# Copyright 2022 Google LLC +# +# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: windows-test-32 +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: windows-test-32 + template: + metadata: + labels: + app: windows-test-32 + spec: + containers: + - name: runner + image: gcr.io/llvm-premerge-checks/buildkite-windows:latest + resources: + limits: + cpu: 31 + memory: 110Gi + requests: + cpu: 31 + memory: 110Gi + volumeMounts: + - name: workdir + mountPath: "C:\\ws" + env: + - name: buildkiteAgentToken + valueFrom: + secretKeyRef: + name: buildkite-agent-token + key: token + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: BUILDKITE_AGENT_TAGS + value: "queue=windows-test-32,cluster=google" + - name: BUILDKITE_API_TOKEN + valueFrom: + secretKeyRef: + name: buildkite-api-token-readonly + key: token + - name: BUILDKITE_BUILD_PATH + value: "c:/ws" # matching workdir + # Empty dir volume can use all disk space from VM. By default container + # disk will only be 20Gb and run out of space. + volumes: + - name: workdir + emptyDir: {} + nodeSelector: + cloud.google.com/gke-nodepool: windows-32 + tolerations: + - key: "node.kubernetes.io/os" + operator: "Equal" + value: "windows" + effect: "NoSchedule" + terminationGracePeriodSeconds: 30 diff --git a/kubernetes/buildkite/windows-56.yaml b/kubernetes/buildkite/windows-56.yaml new file mode 100644 index 0000000..08eefce --- /dev/null +++ b/kubernetes/buildkite/windows-56.yaml @@ -0,0 +1,75 @@ +# Copyright 2022 Google LLC +# +# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: windows-test-56 +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: windows-test-56 + template: + metadata: + labels: + app: windows-test-56 + spec: + containers: + - name: buildkite-windows + image: gcr.io/llvm-premerge-checks/buildkite-windows:latest + resources: + limits: + cpu: 55 + memory: 200Gi + requests: + cpu: 55 + memory: 200Gi + volumeMounts: + - name: workdir + mountPath: "C:\\ws" + env: + - name: buildkiteAgentToken + valueFrom: + secretKeyRef: + name: buildkite-agent-token + key: token + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: BUILDKITE_AGENT_TAGS + value: "queue=windows-test-56,cluster=google" + - name: BUILDKITE_API_TOKEN + valueFrom: + secretKeyRef: + name: buildkite-api-token-readonly + key: token + - name: BUILDKITE_BUILD_PATH + value: "c:/ws" # matching workdir + # Empty dir volume can use all disk space from VM. By default container + # disk will only be 20Gb and run out of space. + volumes: + - name: workdir + emptyDir: {} + nodeSelector: + cloud.google.com/gke-nodepool: windows-56 + tolerations: + - key: "node.kubernetes.io/os" + operator: "Equal" + value: "windows" + effect: "NoSchedule" + terminationGracePeriodSeconds: 30 diff --git a/kubernetes/buildkite/windows.yaml b/kubernetes/buildkite/windows.yaml new file mode 100644 index 0000000..d3fd86c --- /dev/null +++ b/kubernetes/buildkite/windows.yaml @@ -0,0 +1,75 @@ +# Copyright 2022 Google LLC +# +# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: windows-buildkite +spec: + replicas: 2 + strategy: + type: Recreate + selector: + matchLabels: + app: windows-buildkite + template: + metadata: + labels: + app: windows-buildkite + spec: + containers: + - name: buildkite-windows + image: gcr.io/llvm-premerge-checks/buildkite-windows:latest + resources: + limits: + cpu: 31 + memory: 110Gi + requests: + cpu: 31 + memory: 110Gi + volumeMounts: + - name: workdir + mountPath: "C:\\ws" + env: + - name: buildkiteAgentToken + valueFrom: + secretKeyRef: + name: buildkite-agent-token + key: token + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: BUILDKITE_AGENT_TAGS + value: "queue=windows-test,cluster=google" + - name: BUILDKITE_API_TOKEN + valueFrom: + secretKeyRef: + name: buildkite-api-token-readonly + key: token + - name: BUILDKITE_BUILD_PATH + value: "c:/ws" # matching workdir + # Empty dir volume can use all disk space from VM. By default container + # disk will only be 20Gb and run out of space. + volumes: + - name: workdir + emptyDir: {} + nodeSelector: + cloud.google.com/gke-nodepool: windows-32 + tolerations: + - key: "node.kubernetes.io/os" + operator: "Equal" + value: "windows" + effect: "NoSchedule" + terminationGracePeriodSeconds: 30