From 7fff8289c3c7824d8ca0d2d3c3b1d7e69d7d50fb Mon Sep 17 00:00:00 2001 From: Tyler Holcombe Date: Tue, 30 Jan 2024 11:20:59 -0800 Subject: [PATCH] [XB1] Add XB1 container for external builds (#2296) See bug or https://github.com/youtube/cobalt_sandbox/pull/513 for more context. b/266878119 Change-Id: Ib018dcd5d257c2c68cbb194f9867887ca1a4fdf6 --- docker-compose-windows.yml | 34 ++++++++++++++++++++++ docker/windows/runner/Dockerfile | 7 +++-- docker/windows/runner/runner.ps1 | 4 +-- docker/windows/xb1/Dockerfile | 50 ++++++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 docker/windows/xb1/Dockerfile diff --git a/docker-compose-windows.yml b/docker-compose-windows.yml index 9c6aa27a21c6..17e964eedbfe 100644 --- a/docker-compose-windows.yml +++ b/docker-compose-windows.yml @@ -97,6 +97,17 @@ services: - cobalt-build-win32-base image: cobalt-build-win-win32 + build-xb1: + <<: *common-definitions + build: + context: ./docker/windows/xb1 + dockerfile: ./Dockerfile + args: + - FROM_IMAGE=cobalt-build-win-base + depends_on: + - cobalt-build-win-base + image: cobalt-build-xb1 + # ----------------------------------------- # Win32 Platform Images for Building Cobalt # ----------------------------------------- @@ -115,6 +126,16 @@ services: PLATFORM: win-win32 image: cobalt-build-win32 + xb1: + <<: *common-definitions + environment: + <<: *shared-build-env + PLATFORM: xb1 + COBALT_CONCURRENT_LINKS: ${COBALT_CONCURRENT_LINKS:-2} + image: cobalt-build-xb1 + depends_on: + - build-xb1 + runner-win-win32: <<: *common-definitions build: @@ -122,6 +143,19 @@ services: dockerfile: ./Dockerfile args: - RUNNER_VERSION=2.294.0 + - FROM_IMAGE=cobalt-build-win-win32 depends_on: - cobalt-build-win32-base image: cobalt-runner-win-win32 + + runner-xb1: + <<: *common-definitions + build: + context: ./docker/windows/runner + dockerfile: ./Dockerfile + args: + - RUNNER_VERSION=2.294.0 + - FROM_IMAGE=cobalt-build-xb1 + depends_on: + - xb1 + image: cobalt-runner-xb1 diff --git a/docker/windows/runner/Dockerfile b/docker/windows/runner/Dockerfile index a49481150bbd..b8aa4ad10507 100644 --- a/docker/windows/runner/Dockerfile +++ b/docker/windows/runner/Dockerfile @@ -11,7 +11,8 @@ # 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. -FROM cobalt-build-win32-base +ARG FROM_IMAGE +FROM ${FROM_IMAGE} SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';$ProgressPreference='silentlyContinue';"] @@ -20,7 +21,7 @@ ARG RUNNER_VERSION RUN Invoke-WebRequest -Uri 'https://aka.ms/install-powershell.ps1' -OutFile install-powershell.ps1; \ powershell -ExecutionPolicy Unrestricted -File ./install-powershell.ps1 -AddToPath -RUN Invoke-WebRequest -Uri https://github.com/actions/runner/releases/download/v$env:RUNNER_VERSION/actions-runner-win-x64-$env:RUNNER_VERSION.zip -OutFile runner.zip; \ +RUN Invoke-WebRequest -Uri https://github.com/actions/runner/releases/download/v$env:RUNNER_VERSION/actions-runner-win-x64-$env:RUNNER_VERSION.zip -OutFile C:/runner.zip; \ Expand-Archive -Path C:/runner.zip -DestinationPath C:/actions-runner; \ Remove-Item -Path C:\runner.zip; \ setx /M PATH $(${Env:PATH} + \";${Env:ProgramFiles}\Git\bin\") @@ -31,4 +32,4 @@ RUN choco install -f -y 7zip --version=19.0 ENV TMP "C:\Users\ContainerAdministrator\AppData\Local\Temp2" ADD runner.ps1 C:/runner.ps1 -CMD ["pwsh", "-ExecutionPolicy", "Unrestricted", "-File", ".\\runner.ps1"] +CMD ["pwsh", "-ExecutionPolicy", "Unrestricted", "-File", "C:\\runner.ps1"] diff --git a/docker/windows/runner/runner.ps1 b/docker/windows/runner/runner.ps1 index 9e96a5e58174..fa4fb5c7922c 100644 --- a/docker/windows/runner/runner.ps1 +++ b/docker/windows/runner/runner.ps1 @@ -1,2 +1,2 @@ -.\actions-runner\config.cmd --unattended --replace --url https://github.com/${env:RUNNER_REPO} --token $env:RUNNER_TOKEN --name $env:RUNNER_NAME --work $env:RUNNER_WORKDIR --labels $env:RUNNER_LABELS; -.\actions-runner\run.cmd; +C:\actions-runner\config.cmd --unattended --replace --url https://github.com/${env:RUNNER_REPO} --token $env:RUNNER_TOKEN --name $env:RUNNER_NAME --work $env:RUNNER_WORKDIR --labels $env:RUNNER_LABELS; +C:\actions-runner\run.cmd; diff --git a/docker/windows/xb1/Dockerfile b/docker/windows/xb1/Dockerfile new file mode 100644 index 000000000000..e4a7fd55c9ad --- /dev/null +++ b/docker/windows/xb1/Dockerfile @@ -0,0 +1,50 @@ +# escape=` + +# Copyright 2021 The Cobalt Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# 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. +ARG FROM_IMAGE +FROM ${FROM_IMAGE} + +SHELL ["powershell", "-ExecutionPolicy", "Unrestricted", "-Command", ` + "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + +# Note: Visual Studio is installed as part of cobalt-build-win-base + +# Windows SDK +RUN Invoke-WebRequest -Uri https://go.microsoft.com/fwlink/p/?linkid=2173743 ` + -OutFile C:\win_sdk_installer.exe ; ` + Write-Host 'Installing win_sdk_installer.exe ...' ; ` + C:\win_sdk_installer.exe /ceip off /quiet /features + | Out-Null ; ` + Write-Host 'Install of win_sdk_installer.exe completed. Cleaning up ...' ; ` + Remove-Item -Force -Recurse $env:TEMP\* ; ` + Remove-Item C:\win_sdk_installer.exe + +# MSVC sdk +ARG vs_buildtools_version="15" +ARG windows_11_sdk_version="22000" +RUN Write-Host 'Downloading vs_buildtools.exe' ; ` + Invoke-WebRequest -Uri https://aka.ms/vs/${env:vs_buildtools_version}/release/vs_buildtools.exe ` + -OutFile C:\vs_buildtools.exe ; ` + Write-Host 'Installing vs_buildtools.exe ...' ;` + Start-Process -Wait -FilePath C:\vs_buildtools.exe -ArgumentList "--quiet","--wait","--norestart","--nocache","--installPath","C:\BuildTools","--add","Microsoft.VisualStudio.Component.Windows11SDK.${env:windows_11_sdk_version}","--add","Microsoft.VisualStudio.Component.VC.Redist.14.Latest" ; ` + Write-Host 'Install of vs_buildtools.exe completed. Cleaning up ...' ; ` + Remove-Item C:\vs_buildtools.exe + + +WORKDIR "C:\code" + +CMD python3 cobalt/build/gn.py -p $env:PLATFORM -c $env:CONFIG out/${env:PLATFORM}_${env:CONFIG};` + if ($?) {` + ninja $env:NINJA_FLAGS -C out/${env:PLATFORM}_$env:CONFIG $env:TARGET;` + }