diff --git a/.github/workflows/main_win.yaml b/.github/workflows/main_win.yaml index 32db4b24c5b50..1d04e1a3cb6c4 100644 --- a/.github/workflows/main_win.yaml +++ b/.github/workflows/main_win.yaml @@ -115,6 +115,11 @@ jobs: uses: ./.github/actions/docker_win with: service: ${{ needs.initialize.outputs.docker_service }} + - name: Build runner docker image + id: build-runner-docker-image + uses: ./.github/actions/docker_win + with: + service: ${{ needs.initialize.outputs.docker_runner_service }} # Runs builds. build: needs: [initialize] diff --git a/docker/windows/base/build/Dockerfile b/docker/windows/base/build/Dockerfile index 19aa9b6ada030..74f0f1e02da10 100644 --- a/docker/windows/base/build/Dockerfile +++ b/docker/windows/base/build/Dockerfile @@ -29,6 +29,8 @@ COPY ./spin.ps1 /spin.ps1 # of the execution, i.e. the full invocation string. COPY ./list_python_processes.py /list_python_processes.py +# Pin Choco to 1.4.0 to avoid required reboot in 2.0.0 +ENV chocolateyVersion '1.4.0' # Install deps via chocolatey. RUN iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'));` mkdir C:\choco-cache;` diff --git a/docker/windows/runner/Dockerfile b/docker/windows/runner/Dockerfile new file mode 100644 index 0000000000000..a49481150bbde --- /dev/null +++ b/docker/windows/runner/Dockerfile @@ -0,0 +1,34 @@ +# Copyright 2022 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. +FROM cobalt-build-win32-base + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop';$ProgressPreference='silentlyContinue';"] + +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; \ + 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\") + +# Required for packaging artifacts. +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"] diff --git a/docker/windows/runner/runner.ps1 b/docker/windows/runner/runner.ps1 new file mode 100644 index 0000000000000..9e96a5e581740 --- /dev/null +++ b/docker/windows/runner/runner.ps1 @@ -0,0 +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;