Skip to content

Commit

Permalink
devops: scheduled daily runs with latest browser revisions
Browse files Browse the repository at this point in the history
  • Loading branch information
mxschmitt committed Aug 16, 2020
1 parent d516f81 commit d17cdd5
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 14 deletions.
58 changes: 58 additions & 0 deletions .github/workflows/auto_roll.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/bin/bash

set -ex

browser_name="$1"
playwright_dir="$(pwd)"

function set_github_action_output_parameter {
echo "::set-output name=$1::$2"
}

git config --global user.email "[email protected]"
git config --global user.name "playwright-devops"

# Ensure the compiled browser will be used
rm -rf ~/.cache/ms-playwright/

set_github_action_output_parameter "FFPATH" "$(pwd)/browser_patches/firefox/checkout/obj-build-playwright/dist/bin/firefox"
set_github_action_output_parameter "WKPATH" "$(pwd)/browser_patches/webkit/pw_run.sh"

if [[ "${browser_name}" == "webkit" ]]; then
sudo apt install -y libharfbuzz-dev libepoxy-dev libgcrypt-dev libsoup2.4-dev libwebp-dev flatpak
elif [[ "${browser_name}" == "firefox" ]]; then
sudo apt install -y autoconf2.13 libclang-dev clang
fi

./browser_patches/prepare_checkout.sh "$browser_name"

if [[ "${browser_name}" == "webkit" ]]; then
./browser_patches/webkit/checkout/Tools/gtk/install-dependencies
./browser_patches/webkit/checkout/Tools/wpe/install-dependencies

./browser_patches/webkit/checkout/Tools/Scripts/update-webkitwpe-libs
./browser_patches/webkit/checkout/Tools/Scripts/update-webkitgtk-libs
elif [[ "${browser_name}" == "firefox" ]]; then
cd browser_patches/firefox/checkout
SHELL=/bin/bash ./mach bootstrap --no-interactive --application-choice="Firefox for Desktop"
cd -
fi

if [[ "${browser_name}" == "webkit" ]]; then
cd ./browser_patches/webkit/checkout
# Rebase WebKit atop of master branch.
git rebase browser_upstream/master
cd -
elif [[ "${browser_name}" == "firefox" ]]; then
cd ./browser_patches/firefox/checkout
# We keep firefox atop of beta branch since it's much more stable.
git rebase browser_upstream/beta
cd -
fi

echo "Building $browser_name"
SHELL=/bin/bash "./browser_patches/$browser_name/build.sh"

./browser_patches/export.sh "${browser_name}"

git commit -am "feat($browser_name): roll $browser_name"
47 changes: 47 additions & 0 deletions .github/workflows/auto_roll.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Auto browser roll
on:
schedule:
- cron: '0 1 * * *'
jobs:
roll:
strategy:
fail-fast: false
matrix:
browser: [firefox, webkit]
runs-on: ubuntu-18.04
name: ${{ matrix.browser }}
steps:
- uses: microsoft/playwright-github-action@v1
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 10
- run: npm ci
- run: npm run build
- name: Build ${{ matrix.browser }}
id: build-browser
run: bash .github/workflows/auto_roll.sh ${{ matrix.browser }}
- run: mkdir -p coredumps
# Set core dump file name pattern
- run: sudo bash -c 'echo "$(pwd -P)/coredumps/core-pid_%p.dump" > /proc/sys/kernel/core_pattern'
# XVFB-RUN merges both STDOUT and STDERR, whereas we need only STDERR
# Wrap `npm run` in a subshell to redirect STDERR to file.
# Enable core dumps in the subshell.
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- bash -c "ulimit -c unlimited && node test/runner test/ --jobs=1 --forbid-only --timeout=30000 && npm run coverage"
env:
BROWSER: ${{ matrix.browser }}
DEBUG: "pw:*,-pw:wrapped*,-pw:test*"
DEBUG_FILE: "testrun.log"
PWCHANNEL: none
FFPATH: ${{ steps.build-browser.outputs.FFPATH }}
WKPATH: ${{ steps.build-browser.outputs.WKPATH }}
- uses: actions/upload-artifact@v1
if: failure()
with:
name: ${{ matrix.browser }}-output
path: test/output-${{ matrix.browser }}
- uses: actions/upload-artifact@v1
if: ${{ always() }}
with:
name: ${{ matrix.browser }}-testrun.log
path: testrun.log
3 changes: 0 additions & 3 deletions .github/workflows/infra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ on:
- master
- release-*

env:
CI: true

jobs:
doc-and-lint:
name: "docs & lint"
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/publish_canary_npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ on:
- master
- release-*

env:
CI: true

jobs:
publish-canary-npm:
name: "publish to NPM"
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/publish_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ on:
release:
types: [published]

env:
CI: true

jobs:
publish-npm-release:
name: "publish to NPM"
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ on:
- release-*

env:
CI: true
# Force terminal colors. @see https://www.npmjs.com/package/colors
FORCE_COLOR: 1

Expand All @@ -38,7 +37,7 @@ jobs:
# XVFB-RUN merges both STDOUT and STDERR, whereas we need only STDERR
# Wrap `npm run` in a subshell to redirect STDERR to file.
# Enable core dumps in the subshell.
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- bash -c "ulimit -c unlimited && node test/runner test/ --jobs=1 --forbid-only --timeout=30000 && npm run coverage"
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- bash -c "ulimit -c unlimited && node test/runner test/ --jobs=1 --forbid-only --timeout=30000 && npm run coverage"
env:
BROWSER: ${{ matrix.browser }}
DEBUG: "pw:*,-pw:wrapped*,-pw:test*"
Expand Down Expand Up @@ -160,7 +159,7 @@ jobs:
# XVFB-RUN merges both STDOUT and STDERR, whereas we need only STDERR
# Wrap `npm run` in a subshell to redirect STDERR to file.
# Enable core dumps in the subshell.
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- bash -c "ulimit -c unlimited && node test/runner test/ --jobs=1 --forbid-only --timeout=30000"
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- bash -c "ulimit -c unlimited && node test/runner test/ --jobs=1 --forbid-only --timeout=30000"
if: ${{ always() }}
env:
BROWSER: ${{ matrix.browser }}
Expand Down Expand Up @@ -198,7 +197,7 @@ jobs:
# XVFB-RUN merges both STDOUT and STDERR, whereas we need only STDERR
# Wrap `npm run` in a subshell to redirect STDERR to file.
# Enable core dumps in the subshell.
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- bash -c "ulimit -c unlimited && node test/runner test/ --jobs=1 --forbid-only --timeout=30000"
- run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- bash -c "ulimit -c unlimited && node test/runner test/ --jobs=1 --forbid-only --timeout=30000"
env:
BROWSER: ${{ matrix.browser }}
DEBUG: "pw:*,-pw:wrapped*,-pw:test*"
Expand Down
2 changes: 1 addition & 1 deletion browser_patches/prepare_checkout.sh
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ elif [[ ! -z "${FIREFOX_EXTRA_FOLDER_PATH}" ]]; then
git add juggler
fi

git commit -a --author="playwright-devops <devops@playwright.com>" -m "chore: bootstrap build #$BUILD_NUMBER"
git commit -a --author="playwright-devops <devops@playwright.dev>" -m "chore: bootstrap build #$BUILD_NUMBER"

echo
echo
Expand Down

0 comments on commit d17cdd5

Please sign in to comment.