bromite-buildtools/.github/workflows/build_bromite_dev.yaml

316 lines
13 KiB
YAML
Raw Normal View History

name: Build Bromite
2021-07-11 12:55:43 +02:00
permissions:
actions: none
checks: none
contents: none
deployments: none
issues: none
packages: none
pull-requests: none
repository-projects: none
security-events: none
statuses: none
on:
workflow_dispatch:
2021-07-31 15:25:15 +02:00
inputs:
sha:
description: 'uazo/bromite SHA'
required: true
2022-10-17 08:55:53 +02:00
default: ''
target_os:
description: 'targetos [android/win/all]'
required: true
default: 'all'
build:
2022-10-17 08:55:53 +02:00
description: 'android arch [arm64/x64]'
required: true
default: 'x64'
type:
2022-01-17 10:52:22 +01:00
description: 'runner? [dev/ci]'
required: true
default: 'dev'
debug:
2022-01-17 10:52:22 +01:00
description: 'debug? [true/false]'
required: true
default: 'true'
2022-10-17 08:55:53 +02:00
clangd:
description: 'clangd? [true/false]'
2021-09-15 12:17:07 +02:00
required: true
default: 'false'
2021-07-31 15:25:15 +02:00
2021-07-11 15:12:14 +02:00
env:
2021-07-31 15:25:15 +02:00
BROMITE_SHA: ${{ github.event.inputs.sha }}
2021-07-27 22:02:57 +02:00
REMOVEDOCKERSUPPORT: true
2021-07-30 09:30:54 +02:00
USELOCALIMAGE: true
2021-07-11 15:12:14 +02:00
2021-07-11 12:55:43 +02:00
jobs:
check_images:
runs-on: ${{ github.event.inputs.type }}
2021-07-11 12:55:43 +02:00
steps:
2021-07-11 15:16:50 +02:00
- name: Checkout repo
uses: actions/checkout@v2
with:
2021-07-11 15:21:44 +02:00
path: bromite-buildtools
2021-07-11 15:16:50 +02:00
fetch-depth: 1
2021-07-29 15:07:10 +02:00
2021-07-31 10:49:09 +02:00
- name: Enable proxy on container
2021-07-29 15:07:10 +02:00
shell: bash
run: |
if ! [[ -z "${HTTP_PROXY}" ]]; then
2021-09-23 09:22:15 +02:00
PROXY_ADDR=http://$(hostname -I | cut -d' ' -f1 | xargs):8118
2021-07-29 17:57:57 +02:00
echo "PROXY_ADDR=$PROXY_ADDR" >> $GITHUB_ENV
2021-07-31 10:49:09 +02:00
sudo iptables -D INPUT -p tcp -s localhost --dport 8118 -j ACCEPT
sudo iptables -D INPUT -p tcp --dport 8118 -j DROP
2021-07-29 15:07:10 +02:00
fi
2021-07-11 12:55:43 +02:00
- name: Get current chromium version
shell: bash
run: |
mkdir bromite
cd bromite
2021-07-11 13:56:27 +02:00
git init
2021-07-11 14:00:02 +02:00
git remote add origin https://github.com/uazo/bromite
2021-07-11 15:12:14 +02:00
git fetch origin $BROMITE_SHA
2021-07-11 14:00:02 +02:00
git reset --hard FETCH_HEAD
2021-07-11 12:55:43 +02:00
cd ..
export VERSION=$( cat ./bromite/build/RELEASE )
2021-07-11 15:12:14 +02:00
rm -rf bromite
2021-07-11 12:55:43 +02:00
echo Current version is $VERSION
echo "VERSION=$VERSION" >> $GITHUB_ENV
2021-07-11 15:19:19 +02:00
cd bromite-buildtools
2022-02-03 21:44:09 +01:00
- name: Building build-deps container ${{ env.VERSION }}
2021-07-11 15:12:14 +02:00
shell: bash
run: |
IS_PRESENT=$(docker inspect --type=image uazo/build-deps:$VERSION > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
IS_PRESENT=$(docker manifest inspect uazo/build-deps:$VERSION > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
2021-07-11 15:24:44 +02:00
DOCKER_BUILDKIT=1 docker build -t uazo/build-deps:$VERSION \
--progress plain \
--build-arg VERSION=$VERSION \
2021-07-29 15:07:10 +02:00
--build-arg HTTP_PROXY="$PROXY_ADDR" \
2021-07-12 09:21:47 +02:00
--no-cache \
2021-07-11 15:24:44 +02:00
bromite-buildtools/images/build-deps/.
2021-07-11 15:12:14 +02:00
fi
fi
2021-07-11 12:55:43 +02:00
2022-02-03 21:44:09 +01:00
- name: Building chromium container ${{ env.VERSION }}
2021-07-11 15:12:14 +02:00
shell: bash
run: |
IS_PRESENT=$(docker inspect --type=image uazo/chromium:$VERSION > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
IS_PRESENT=$(docker manifest inspect uazo/chromium:$VERSION > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
2021-07-11 15:24:44 +02:00
DOCKER_BUILDKIT=1 docker build -t uazo/chromium:$VERSION \
--progress plain \
--build-arg VERSION=$VERSION \
2021-07-29 15:07:10 +02:00
--build-arg HTTP_PROXY="$PROXY_ADDR" \
2021-07-11 15:24:44 +02:00
bromite-buildtools/images/chr-source/.
2021-07-11 15:12:14 +02:00
fi
fi
2021-07-11 12:55:43 +02:00
2022-02-03 21:44:09 +01:00
- name: Building bromite container ${{ env.BROMITE_SHA }}
2021-07-11 15:12:14 +02:00
shell: bash
run: |
IS_PRESENT=$(docker inspect --type=image uazo/bromite:$BROMITE_SHA > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
IS_PRESENT=$(docker manifest inspect uazo/bromite:$BROMITE_SHA > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
DOCKER_BUILDKIT=1 docker build -t uazo/bromite:$BROMITE_SHA --progress plain \
--build-arg BROMITE_SHA=$BROMITE_SHA \
--build-arg VERSION=$VERSION \
2021-07-29 15:07:10 +02:00
--build-arg HTTP_PROXY="$PROXY_ADDR" \
2021-07-11 15:12:14 +02:00
bromite-buildtools/images/bromite-source/.
fi
fi
2022-02-03 21:44:09 +01:00
- name: Building bromite-build container ${{ env.BROMITE_SHA }}
2021-07-11 15:12:14 +02:00
shell: bash
run: |
IS_PRESENT=$(docker inspect --type=image uazo/bromite-build:$BROMITE_SHA > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
IS_PRESENT=$(docker manifest inspect uazo/bromite-build:$BROMITE_SHA > /dev/null ; echo $?)
if [ $IS_PRESENT -ne "0" ]; then
DOCKER_BUILDKIT=1 docker build -t uazo/bromite-build:$BROMITE_SHA --progress plain \
--build-arg BROMITE_SHA=$BROMITE_SHA \
2021-07-29 15:07:10 +02:00
--build-arg HTTP_PROXY="$PROXY_ADDR" \
2021-07-12 20:43:47 +02:00
--no-cache \
2021-07-11 15:12:14 +02:00
bromite-buildtools/images/bromite-build/.
fi
fi
2021-07-31 11:11:13 +02:00
- name: Mark image to build
shell: bash
run: |
IS_PRESENT=$(docker inspect --type=image uazo/bromite-build:build > /dev/null ; echo $?)
2021-07-31 11:14:16 +02:00
if [ $IS_PRESENT -eq "0" ]; then
2021-07-31 11:11:13 +02:00
docker rmi uazo/bromite-build:build
fi
docker tag uazo/bromite-build:$BROMITE_SHA uazo/bromite-build:build
2021-07-11 12:55:43 +02:00
build:
runs-on: ${{ github.event.inputs.type }}
2021-07-11 12:55:43 +02:00
needs: check_images
if: success()
2021-08-09 14:33:59 +02:00
timeout-minutes: 720
2021-07-30 09:38:27 +02:00
2021-07-11 12:55:43 +02:00
container:
2021-07-31 11:11:13 +02:00
image: uazo/bromite-build:build
2021-07-11 12:55:43 +02:00
env:
2021-07-31 09:15:55 +02:00
REMOVEDOCKERSUPPORT: true # CUSTOM RUNNER: remove sharing of docker socket
USELOCALIMAGE: true # CUSTOM RUNNER: permit use of local images
USEINTERNALNETWORK: true # CUSTOM RUNNER: create the docker network as internal
2021-08-04 10:14:46 +02:00
WORKSPACE: /home/lg/working_dir
2022-10-13 16:44:02 +02:00
# kythe
2021-12-01 09:21:16 +01:00
KYTHE_CORPUS: chromium.googlesource.com/chromium/src
KYTHE_ROOT_DIRECTORY: /home/lg/working_dir/chromium/src
KYTHE_OUTPUT_DIRECTORY: /home/lg/working_dir/chromium/src/out/bromite/kythe
2022-10-13 16:44:02 +02:00
# cross build
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: /win_sdk/10.0.20348.0/
2022-10-14 08:35:48 +02:00
WINDOWSSDKDIR: "/win_sdk/10.0.20348.0/Windows Kits/10/"
2022-10-13 16:44:02 +02:00
GYP_MSVS_OVERRIDE_PATH: /win_sdk/10.0.20348.0/
2021-09-16 17:00:49 +02:00
# compile in debug mode
2022-01-17 18:07:46 +01:00
TARGET_ISDEBUG: ${{ github.event.inputs.debug }}
TARGET_CPU: ${{ github.event.inputs.build }}
2022-10-17 08:55:53 +02:00
TARGET_OS: ${{ github.event.inputs.target_os }}
2021-07-11 12:55:43 +02:00
volumes:
2022-10-17 08:55:53 +02:00
- /storage/images/android/${{ github.event.inputs.build }}/${{ github.event.inputs.sha }}:/home/lg/working_dir/chromium/src/out/bromite
- /storage/images/win/x64/${{ github.event.inputs.sha }}:/home/lg/working_dir/chromium/src/out/bromite_win
2021-08-04 09:55:01 +02:00
- /tmp/proxy:/tmp/proxy
2022-10-05 15:26:27 +02:00
- /win_sdk:/win_sdk
2021-08-04 09:55:01 +02:00
2021-07-30 09:53:16 +02:00
steps:
- name: Prepare Build Container
2021-07-11 12:55:43 +02:00
shell: bash
run: |
# set workspace paths
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
2021-07-30 11:48:20 +02:00
cd $WORKSPACE
2021-08-04 15:12:57 +02:00
# reset proxy env
HTTP_PROXY=
HTTPS_PROXY=
http_proxy=
https_proxy=
2021-07-31 15:13:23 +02:00
2021-12-04 20:11:49 +01:00
# set out folder permissions
test -d chromium/src/out/bromite || sudo mkdir -p chromium/src/out/bromite && \
sudo chown lg chromium/src/out &&
2022-10-17 08:55:53 +02:00
sudo chown lg chromium/src/out/bromite
test -d chromium/src/out/bromite_win || sudo mkdir -p chromium/src/out/bromite_win && \
sudo chown lg chromium/src/out &&
sudo chown lg chromium/src/out/bromite_win
2021-12-04 20:11:49 +01:00
2021-12-01 09:21:16 +01:00
# make kythe output directory
2021-12-04 20:11:49 +01:00
test -d $KYTHE_OUTPUT_DIRECTORY || mkdir -p $KYTHE_OUTPUT_DIRECTORY
2021-11-30 15:32:54 +01:00
2021-09-15 17:15:08 +02:00
sudo mkdir -p /run/user/1000/
sudo chown lg /run/user/1000/
sudo chmod g-rxw /run/user/1000/
sudo chmod o-rxw /run/user/1000/
2021-07-30 11:48:20 +02:00
2022-10-17 08:55:53 +02:00
- name: Build Bromite Android
if: ${{ github.event.inputs.target_os == 'android' || github.event.inputs.target_os == 'all' }}
shell: bash
run: |
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
2021-07-31 15:13:23 +02:00
2022-10-17 08:55:53 +02:00
echo "::group::-------- gn gen"
gn gen --args="import(\"/home/lg/working_dir/bromite/build/bromite.gn_args\") $(cat ../../build_args.gni) " out/bromite
echo "::endgroup::"
2021-07-31 15:13:23 +02:00
2022-10-17 08:55:53 +02:00
echo "::group::-------- gn args"
gn args out/bromite/ --list --short
gn args out/bromite/ --list >out/bromite/gn_list
echo "::endgroup::"
2021-07-31 15:13:23 +02:00
2022-10-17 08:55:53 +02:00
autoninja -C out/bromite chrome_public_apk
2021-07-31 15:13:23 +02:00
2022-01-17 16:56:10 +01:00
cp ../../bromite/build/RELEASE out/bromite
2021-07-31 15:13:23 +02:00
2022-10-17 08:55:53 +02:00
- name: Get ninja logs Android
if: ${{ github.event.inputs.target_os == 'android' || github.event.inputs.target_os == 'all' }}
shell: bash
run: |
cd $WORKSPACE
$WORKSPACE/ninjatracing/ninjatracing $WORKSPACE/chromium/src/out/bromite/.ninja_log >$WORKSPACE/chromium/src/out/bromite/ninja_log_trace.json
$WORKSPACE/chromium/src/third_party/catapult/tracing/bin/trace2html $WORKSPACE/chromium/src/out/bromite/ninja_log_trace.json
- name: Build Bromite Windows
if: ${{ github.event.inputs.target_os == 'win' || github.event.inputs.target_os == 'all' }}
shell: bash
run: |
2021-08-04 10:14:46 +02:00
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
2021-07-31 15:13:23 +02:00
2022-10-17 08:55:53 +02:00
echo "::group::-------- gn gen"
2022-10-21 04:28:39 -06:00
gn gen --args="import(\"/home/lg/working_dir/bromite/build/bromite.gn_args\") target_os = \"win\" $(cat ../../build_args.gni) target_cpu = \"x64\" " out/bromite_win
2022-10-17 08:55:53 +02:00
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/bromite_win/ --list --short
gn args out/bromite_win/ --list >out/bromite_win/gn_list
echo "::endgroup::"
autoninja -C out/bromite_win chrome
cp ../../bromite/build/RELEASE out/bromite_win
- name: Get ninja logs Windows
if: ${{ github.event.inputs.target_os == 'win' || github.event.inputs.target_os == 'all' }}
2021-12-06 15:19:59 +01:00
shell: bash
run: |
cd $WORKSPACE
2022-10-17 08:55:53 +02:00
$WORKSPACE/ninjatracing/ninjatracing $WORKSPACE/chromium/src/out/bromite_win/.ninja_log >$WORKSPACE/chromium/src/out/bromite_win/ninja_log_trace.json
$WORKSPACE/chromium/src/third_party/catapult/tracing/bin/trace2html $WORKSPACE/chromium/src/out/bromite_win/ninja_log_trace.json
2021-08-04 20:08:37 +02:00
- name: Generate breakpad symbols
2022-10-17 08:55:53 +02:00
if: ${{ github.event.inputs.target_os == 'android' || github.event.inputs.target_os == 'all' }}
shell: bash
run: |
2021-08-04 10:14:46 +02:00
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
2021-08-09 14:28:02 +02:00
echo "::group::-------- generating breakpad symbols"
2022-10-17 08:55:53 +02:00
autoninja -C out/bromite minidump_stackwalk dump_syms
2021-08-09 14:28:02 +02:00
components/crash/content/tools/generate_breakpad_symbols.py --build-dir=out/bromite \
2021-12-01 08:46:09 +01:00
--symbols-dir=out/bromite/symbols/ --binary=out/bromite/lib.unstripped/libchrome.so \
2021-08-09 14:28:02 +02:00
--platform=android --clear --verbose
2021-12-01 08:46:09 +01:00
cp out/bromite/lib.unstripped/libchrome.so out/bromite/symbols/libchrome.lib.so
cp out/bromite/minidump_stackwalk out/bromite/symbols
cp out/bromite/dump_syms out/bromite/symbols
2021-08-09 14:28:02 +02:00
echo "::endgroup::"
2021-07-31 15:13:23 +02:00
2022-10-17 08:55:53 +02:00
- name: Generate Supersize data
if: ${{ github.event.inputs.debug == 'false' && (github.event.inputs.target_os == 'android' || github.event.inputs.target_os == 'all') }}
shell: bash
run: |
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
tools/binary_size/supersize archive out/bromite/chrome.size --apk-file out/bromite/apks/ChromePublic.apk -v
2021-12-08 13:05:33 +01:00
- name: Generate clangd index
2022-10-17 08:55:53 +02:00
if: ${{ github.event.inputs.debug == 'true' && github.event.inputs.clangd == 'true' }}
2021-12-08 13:05:33 +01:00
shell: bash
run: |
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
2022-01-17 14:45:42 +01:00
test -f out/bromite/bromite.idx || \
2022-08-02 17:21:58 +02:00
cp -r out/bromite out/clangd && \
2022-07-12 17:41:44 +02:00
gn gen --args="import(\"/home/lg/working_dir/bromite/build/bromite.gn_args\") $(cat ../../build_args.gni) skip_clangd_unsupported_options = true" out/clangd && \
2022-08-02 17:21:58 +02:00
$WORKSPACE/ninja/ninja -C $WORKSPACE/chromium/src/out/clangd -a chrome_public_apk \
-t compdb cc cxx objc objcxx >$WORKSPACE/chromium/src/out/clangd/compile_commands.json && \
2022-07-12 17:41:44 +02:00
/home/lg/working_dir/clangd_snapshot_20211205/bin/clangd-indexer --executor=all-TUs out/clangd/compile_commands.json >out/bromite/bromite.idx && \
rm -rf out/clangd
2022-01-26 10:00:21 +01:00
2021-08-04 20:08:37 +02:00