mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-08-01 02:06:17 -04:00
Mutable tags like @v6 can be re-pointed by whoever controls the action, so the next run executes code nobody here reviewed, with the job's token and secrets. Pinning to the full commit sha freezes what runs. Version tags are kept as comments so renovate or dependabot can still track updates. dtolnay/rust-toolchain is pinned to a master commit with the toolchain moved to an explicit input, as its readme recommends for sha pinning.
199 lines
5.3 KiB
YAML
199 lines
5.3 KiB
YAML
name: wpt
|
|
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ vars.LPD_PERF_AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.LPD_PERF_AWS_SECRET_ACCESS_KEY }}
|
|
AWS_BUCKET: ${{ vars.LPD_PERF_AWS_BUCKET }}
|
|
AWS_REGION: ${{ vars.LPD_PERF_AWS_REGION }}
|
|
AWS_CF_DISTRIBUTION: ${{ vars.AWS_CF_DISTRIBUTION }}
|
|
LIGHTPANDA_DISABLE_TELEMETRY: true
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "21 2 * * *"
|
|
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
wpt-build-release:
|
|
name: zig build -Dwpt_extensions release
|
|
|
|
env:
|
|
ARCH: aarch64
|
|
OS: linux
|
|
|
|
runs-on: ubuntu-24.04-arm
|
|
timeout-minutes: 20
|
|
|
|
steps:
|
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: ./.github/actions/install
|
|
with:
|
|
os: ${{env.OS}}
|
|
arch: ${{env.ARCH}}
|
|
|
|
- name: zig build release
|
|
run: zig build -Dwpt_extensions -Dprebuilt_v8_path=v8/libc_v8.a -Doptimize=ReleaseFast -Dcpu=generic
|
|
|
|
- name: upload artifact
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: lightpanda-build-release
|
|
path: |
|
|
zig-out/bin/lightpanda
|
|
retention-days: 1
|
|
|
|
wpt-build-runner:
|
|
name: build wpt runner
|
|
|
|
runs-on: ubuntu-24.04-arm
|
|
timeout-minutes: 15
|
|
|
|
steps:
|
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
with:
|
|
repository: 'lightpanda-io/demo'
|
|
fetch-depth: 0
|
|
|
|
- run: |
|
|
cd ./wptrunner
|
|
CGO_ENABLED=0 go build
|
|
|
|
- name: upload artifact
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: wptrunner
|
|
path: |
|
|
wptrunner/wptrunner
|
|
retention-days: 1
|
|
|
|
run-wpt:
|
|
name: web platform tests json output
|
|
needs:
|
|
- wpt-build-release
|
|
- wpt-build-runner
|
|
|
|
# use a self host runner.
|
|
runs-on: lpd-wpt-aws
|
|
timeout-minutes: 600
|
|
|
|
steps:
|
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
with:
|
|
ref: fork
|
|
repository: 'lightpanda-io/wpt'
|
|
fetch-depth: 0
|
|
|
|
# The hosts are configured manually on the self host runner.
|
|
# - name: create custom hosts
|
|
# run: ./wpt make-hosts-file | sudo tee -a /etc/hosts
|
|
|
|
- name: generate manifest
|
|
run: ./wpt manifest
|
|
|
|
- name: download lightpanda release
|
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
name: lightpanda-build-release
|
|
|
|
- run: chmod a+x ./lightpanda
|
|
|
|
- name: download wptrunner
|
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
name: wptrunner
|
|
|
|
- run: chmod a+x ./wptrunner
|
|
|
|
- name: run test with json output
|
|
run: |
|
|
./wpt serve 2> /dev/null & echo $! > WPT.pid
|
|
sleep 20s
|
|
./wptrunner -lpd-path ./lightpanda -json -concurrency 5 -pool 5 --mem-limit 100 > wpt.json
|
|
kill `cat WPT.pid`
|
|
|
|
- name: write commit
|
|
run: |
|
|
echo "${{github.sha}}" > commit.txt
|
|
|
|
- name: upload artifact
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: wpt-results
|
|
path: |
|
|
wpt.json
|
|
commit.txt
|
|
retention-days: 10
|
|
|
|
perf-fmt:
|
|
name: perf-fmt
|
|
needs: run-wpt
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
|
|
container:
|
|
image: ghcr.io/lightpanda-io/perf-fmt:latest
|
|
credentials:
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
steps:
|
|
- name: download artifact
|
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
name: wpt-results
|
|
|
|
- name: format and send json result
|
|
run: /perf-fmt wpt ${{ github.sha }} wpt.json
|
|
|
|
wptdiff:
|
|
name: perf-fmt
|
|
needs: perf-fmt
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
with:
|
|
repository: 'lightpanda-io/demo'
|
|
fetch-depth: 0
|
|
|
|
- run: |
|
|
cd ./wptdiff
|
|
CGO_ENABLED=0 go build
|
|
|
|
- run: |
|
|
./wptdiff/wptdiff --completion |tee completion.log
|
|
|
|
- name: Send completion to slack
|
|
uses: slackapi/slack-github-action@af78098f536edbc4de71162a307590698245be95 # v3.0.1
|
|
with:
|
|
errors: true
|
|
method: files.uploadV2
|
|
token: ${{ secrets.CI_SLACK_BOT_TOKEN }}
|
|
payload: |
|
|
channel_id: ${{ vars.WPT_SLACK_CHANNEL_ID }}
|
|
initial_comment: "Last WPT completion"
|
|
file: "./completion.log"
|
|
filename: "wpt-completion-${{ github.sha }}.txt"
|
|
|
|
- run: |
|
|
./wptdiff/wptdiff |tee diff.log
|
|
|
|
- name: Send regression to slack
|
|
uses: slackapi/slack-github-action@af78098f536edbc4de71162a307590698245be95 # v3.0.1
|
|
with:
|
|
errors: true
|
|
method: files.uploadV2
|
|
token: ${{ secrets.CI_SLACK_BOT_TOKEN }}
|
|
payload: |
|
|
channel_id: ${{ vars.WPT_SLACK_CHANNEL_ID }}
|
|
initial_comment: "Last WPT regressions"
|
|
file: "./diff.log"
|
|
filename: "wpt-regression-${{ github.sha }}.txt"
|