2021-07-11 12:55:43 +02:00
name : Build x86
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
default : '76745fde6ed75542f005ea5528f486df41c56da4'
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 : self-hosted
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
PROXY_ADDR=http://$(hostname -I | 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
2021-07-11 15:12:14 +02:00
- name : Checking build-deps for ${{ env.VERSION }}
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
2021-07-11 15:12:14 +02:00
- name : Checking chromium for ${{ env.VERSION }}
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
2021-07-11 15:12:14 +02:00
- name : Checking bromite for ${{ env.BROMITE_SHA }}
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
- name : Checking bromite-build for ${{ env.BROMITE_SHA }}
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 : self-hosted
needs : check_images
if : success()
services :
redis :
image : redis
options : >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
2021-07-27 22:02:57 +02:00
--health-retries 5
2021-07-30 09:38:27 +02:00
env :
REMOVEDOCKERSUPPORT : true
USELOCALIMAGE : true
2021-07-11 12:55:43 +02:00
gomaserver :
image : uazo/goma-server
volumes :
- /tmp/proxy:/tmp/proxy
2021-07-30 11:48:20 +02:00
options : >-
--health-cmd "hostname -I >/tmp/proxy/gomaserverip"
2021-07-30 12:06:31 +02:00
--health-interval 30s
2021-07-30 11:48:20 +02:00
--health-timeout 5s
--health-retries 5
2021-07-30 12:06:31 +02:00
2021-07-11 12:55:43 +02:00
env :
REDISHOST : redis
2021-07-30 09:38:27 +02:00
REMOVEDOCKERSUPPORT : true
USELOCALIMAGE : true
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 :
SERVER_HOST_GOMA : gomaserver
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-07-11 12:55:43 +02:00
volumes :
2021-07-31 15:25:15 +02:00
- /storage/images/${{ github.event.inputs.sha }}:/home/lg/working_dir/artifacs
2021-07-11 12:55:43 +02:00
- /tmp/proxy:/tmp/proxy
2021-07-30 09:53:16 +02:00
steps :
2021-07-11 12:55:43 +02:00
- name : Build Bromite
shell : bash
2021-07-13 17:27:26 +02:00
env :
GOMAJOBS : 60
2021-07-11 12:55:43 +02:00
run : |
export WORKSPACE=/home/lg/working_dir
2021-07-30 11:48:20 +02:00
cd $WORKSPACE
2021-07-31 15:13:23 +02:00
# reset proxy env
2021-07-30 17:24:38 +02:00
HTTP_PROXY=
HTTPS_PROXY=
http_proxy=
https_proxy=
2021-07-31 15:13:23 +02:00
# set workspace paths
WORKSPACE=/home/lg/working_dir
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
# clean artifacts
2021-07-31 15:39:34 +02:00
ARTIFACS_DIR=/home/lg/working_dir/artifacs
sudo chmod 777 $ARTIFACS_DIR
rm -rf $ARTIFACS_DIR/*
2021-07-31 15:13:23 +02:00
# set goma options
2021-07-31 11:11:13 +02:00
export SERVER_HOST_GOMA=$(cat /tmp/proxy/gomaserverip | xargs)
2021-07-31 15:13:23 +02:00
export GOMA_SERVER_HOST=$SERVER_HOST_GOMA
export GOMA_SERVER_PORT=5050
export GOMA_USE_SSL=false
export GOMA_HTTP_AUTHORIZATION_FILE=$WORKSPACE/.debug_auth_file
export GOMA_HERMETIC=error
export GOMA_USE_LOCAL=false
export GOMA_FALLBACK=true
export GOMA_ARBITRARY_TOOLCHAIN_SUPPORT=true
# start goma client
echo "::group::-------- start goma client"
$WORKSPACE/goma/goma_ctl.py ensure_stop
$WORKSPACE/goma/goma_ctl.py ensure_start
echo "::endgroup::"
2021-07-30 11:48:20 +02:00
2021-07-31 15:13:23 +02:00
cd chromium/src
OUT_PRESENT=0
test -d out/bromite && OUT_PRESENT=1
if [[ OUT_PRESENT -eq 0 ]]; then
echo "::group::-------- sync out folder"
2021-07-31 15:39:34 +02:00
test -d $ARTIFACS_DIR/out/bromite && \
2021-07-31 15:13:23 +02:00
mkdir -p out/bromite && \
2021-07-31 15:39:34 +02:00
cp -arp $ARTIFACS_DIR/out/bromite/* out/bromite/
2021-07-31 15:13:23 +02:00
echo "::endgroup::"
echo "::group::-------- gn gen"
gn gen --args="import(\"/home/lg/working_dir/bromite/build/GN_ARGS\") use_goma=true goma_dir=\"$WORKSPACE/goma\" $(cat ../../build_args.gni) " out/bromite
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/bromite/ --list --short
2021-07-31 15:39:34 +02:00
gn args out/bromite/ --list >$ARTIFACS_DIR/gn_list
2021-07-31 15:13:23 +02:00
echo "::endgroup::"
echo "::group::-------- apply .mtool"
test -f out/bromite/.mtool && \
cp out/bromite/.mtool .mtool && \
$WORKSPACE/mtool/chromium/mtime.sh --restore
echo "::endgroup::"
fi
if [[ -z "${GOMAJOBS}" ]]; then
GOMAJOBS=40
fi
echo "::group::-------- pre-cache toolchain"
sudo ../../casupload --cas-server=unix:/tmp/proxy/bots.sock --instance=default_instance \
third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include \
third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/include \
third_party/llvm-build/Release+Asserts/lib \
third_party/llvm-build/Release+Asserts/bin \
buildtools/third_party/libc++ \
chrome/android/profiles/afdo.prof
echo "::endgroup::"
echo "::group::-------- start build"
autoninja -j $GOMAJOBS -C out/bromite chrome_public_apk
echo "::endgroup::"
echo "::group::-------- get goma logs"
2021-07-31 15:39:34 +02:00
wget http://127.0.0.1:8088/logz?INFO -O $ARTIFACS_DIR/goma-client.log
2021-07-31 15:13:23 +02:00
cp out/bromite/apks/* $WORKSPACE/artifacs/
echo "::endgroup::"
echo "::group::-------- generating breakpad symbols"
autoninja -j $GOMAJOBS -C out/bromite minidump_stackwalk dump_syms
components/crash/content/tools/generate_breakpad_symbols.py --build-dir=out/bromite \
2021-07-31 15:39:34 +02:00
--symbols-dir=$ARTIFACS_DIR/symbols/ --binary=out/bromite/lib.unstripped/libchrome.so --clear --verbose
cp out/bromite/lib.unstripped/libchrome.so $ARTIFACS_DIR/symbols/libchrome.lib.so
cp out/bromite/minidump_stackwalk $ARTIFACS_DIR/symbols
cp out/bromite/dump_syms $ARTIFACS_DIR/symbols
2021-07-31 15:13:23 +02:00
echo "::endgroup::"
echo "::group::-------- sync out folder"
$WORKSPACE/mtool/chromium/mtime.sh --backup
mv .mtool out/bromite/
2021-07-31 15:39:34 +02:00
cp -arp out/bromite $ARTIFACS_DIR/out
2021-07-31 15:13:23 +02:00
echo "::endgroup::"
echo "::group::-------- stop goma"
$WORKSPACE/goma/goma_ctl.py ensure_stop
echo "::endgroup::"