Skip to content

Commit

Permalink
[XB1] Add github action to build XB1 on PRs
Browse files Browse the repository at this point in the history
See bug or youtube/cobalt_sandbox#513 for more
context.

b/266878119

Change-Id: Ib018dcd5d257c2c68cbb194f9867887ca1a4fdf6
  • Loading branch information
TyHolc committed Jan 25, 2024
1 parent 5868085 commit 5bc4b44
Show file tree
Hide file tree
Showing 11 changed files with 216 additions and 22 deletions.
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]

**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]

**Additional context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
1 change: 1 addition & 0 deletions .github/config/win32.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"docker_service": "build-win-win32",
"docker_runner_service": "runner-win-win32",
"runner_tag": "win32",
"platforms": [
"win32"
],
Expand Down
19 changes: 19 additions & 0 deletions .github/config/xb1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"docker_service": "build-xb1",
"__comment" : "TODO: Deploy a runner and change this",
"docker_runner_service": "runner-xb1",
"runner_tag": "xb1",
"platforms": [
"xb1"
],
"includes": [
{
"name":"xb1",
"platform":"xb1",
"target_platform":"xb1",
"extra_gn_arguments": "is_clang=false",
"target_cpu": "target_cpu=\\\"x64\\\"",
"target_os": "target_os=\\\"winuwp\\\""
}
]
}
10 changes: 8 additions & 2 deletions .github/workflows/main_win.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ jobs:
run: |
docker_runner_service=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.docker_runner_service')
echo "docker_runner_service=${docker_runner_service}" >> $GITHUB_ENV
- id: set-runner-tag
shell: bash
run: |
runner_tag=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.runner_tag')
echo "runner_tag=${runner_tag}" >> $GITHUB_ENV
outputs:
platforms: ${{ env.platforms }}
includes: ${{ env.includes }}
Expand All @@ -120,6 +125,7 @@ jobs:
on_host_test_shards: ${{ env.on_host_test_shards }}
docker_service: ${{ env.docker_service }}
docker_runner_service: ${{ env.docker_runner_service }}
runner_tag: ${{ env.runner_tag }}
# Build windows docker images.
build-docker-image:
needs: [initialize]
Expand Down Expand Up @@ -152,7 +158,7 @@ jobs:
build:
needs: [initialize]
permissions: {}
runs-on: [self-hosted, win32]
runs-on: [self-hosted, "${{ needs.initialize.outputs.runner_tag }}"]
name: ${{matrix.name}}_${{matrix.config}}
strategy:
fail-fast: false
Expand Down Expand Up @@ -186,7 +192,7 @@ jobs:
needs: [initialize, build]
permissions: {}
if: needs.initialize.outputs.on_host_test == 'true'
runs-on: [self-hosted, win32]
runs-on: [self-hosted, "${{ needs.initialize.outputs.runner_tag }}"]
name: ${{matrix.name}}_${{matrix.shard}}_test
strategy:
fail-fast: false
Expand Down
32 changes: 32 additions & 0 deletions .github/workflows/xb1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: xb1

on:
pull_request:
types: [opened, reopened, synchronize, labeled]
branches:
- main
- feature/*
push:
branches:
- main
- feature/*
schedule:
# GTM timezone.
- cron: '0 4 * * *'
workflow_dispatch:
inputs:
nightly:
description: 'Nightly workflow.'
required: true
type: boolean
default: false

jobs:
xb1:
uses: ./.github/workflows/main_win.yaml
permissions:
packages: write
pull-requests: write
with:
platform: xb1
nightly: ${{ github.event.inputs.nightly }}
23 changes: 8 additions & 15 deletions build/toolchain/concurrent_links.gni
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2016 The Chromium Authors
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

Expand Down Expand Up @@ -36,7 +36,7 @@ if (concurrent_links == "") {
# a little padding to account for future growth.
_args += [ "--mem_per_link_gb=45" ]
} else {
_args += [ "--mem_per_link_gb=20" ]
_args += [ "--mem_per_link_gb=10" ]
}
} else if ((use_clang_coverage &&
# When coverage_instrumentation_input_file is not empty it means
Expand All @@ -61,7 +61,8 @@ if (concurrent_links == "") {
} else if (is_android && !is_component_build && symbol_level == 2) {
# Full debug symbols require large memory for link.
_args = [ "--mem_per_link_gb=25" ]
} else if (is_android && !is_debug && !using_sanitizer && symbol_level < 2) {
} else if (is_android && !is_debug && !using_sanitizer && is_java_debug &&
disable_android_lint && symbol_level < 2) {
if (symbol_level == 1) {
_args = [ "--mem_per_link_gb=6" ]
} else {
Expand All @@ -70,18 +71,6 @@ if (concurrent_links == "") {
} else if ((is_linux || is_chromeos_lacros) && symbol_level == 0) {
# Memory consumption on link without debug symbols is low on linux.
_args = [ "--mem_per_link_gb=3" ]
} else if (current_os == "zos") {
_args = [ "--mem_per_link_gb=1" ]
} else if (is_fuchsia) {
# TODO(crbug.com/1347159): This was defaulting to 8GB. The number of
# linker instances to run in parallel is calculated by diviging
# the available memory by this value. On a 32GB machine with
# roughly 29GB of available memory, this would cause three instances
# to run. This started running out of memory and thrashing. This change
# addresses that issue to get the SDk rollers running again but
# could be optimized (maybe to 12GB or for different configs like
# component build).
_args = [ "--mem_per_link_gb=16" ]
} else {
_args = []
}
Expand Down Expand Up @@ -112,6 +101,10 @@ if (concurrent_links == "") {
}
} else {
assert(!use_thin_lto, "can't explicitly set concurrent_links with thinlto")

# Convert the value to a number if it's a string.
concurrent_links =
exec_script("//starboard/build/echo.py", [ concurrent_links ], "value")
concurrent_links_logs =
[ "concurrent_links set by GN arg (value=$concurrent_links)" ]
}
34 changes: 34 additions & 0 deletions docker-compose-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
# -----------------------------------------
Expand All @@ -115,13 +126,36 @@ 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:
context: ./docker/windows/runner
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
7 changes: 4 additions & 3 deletions docker/windows/runner/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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';"]

Expand All @@ -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\")
Expand All @@ -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"]
4 changes: 2 additions & 2 deletions docker/windows/runner/runner.ps1
Original file line number Diff line number Diff line change
@@ -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;
50 changes: 50 additions & 0 deletions docker/windows/xb1/Dockerfile
Original file line number Diff line number Diff line change
@@ -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;`
}

0 comments on commit 5bc4b44

Please sign in to comment.