-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tools: update daily wpt actions summary
PR-URL: #47138 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
- Loading branch information
1 parent
4add368
commit 13eb029
Showing
1 changed file
with
156 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
# This workflow runs every night and tests various releases of Node.js | ||
# (latest nightly, current, and two latest LTS release lines) against the | ||
# `epochs/daily` branch of WPT. | ||
|
||
name: Daily WPT report | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
node-versions: | ||
description: Node.js versions (as supported by actions/setup-node) to test as JSON array | ||
required: false | ||
default: '["current", "lts/*", "lts/-1"]' | ||
schedule: | ||
# This is 20 minutes after `epochs/daily` branch is triggered to be created | ||
# in WPT repo. | ||
# https://github.com/web-platform-tests/wpt/blob/master/.github/workflows/epochs.yml | ||
- cron: 30 0 * * * | ||
|
||
env: | ||
PYTHON_VERSION: '3.11' | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
report: | ||
if: github.repository == 'nodejs/node' || github.event_name == 'workflow_dispatch' | ||
strategy: | ||
matrix: | ||
node-version: ${{ fromJSON(github.event.inputs.node-versions || '["latest-nightly", "current", "lts/*", "lts/-1"]') }} | ||
fail-fast: false | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Set up Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
- name: Environment Information | ||
run: npx envinfo | ||
|
||
# install a version and checkout | ||
- name: Get latest nightly | ||
if: matrix.node-version == 'latest-nightly' | ||
run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-x64"))][0].version')" >> $GITHUB_ENV | ||
- name: Install Node.js | ||
id: setup-node | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: ${{ env.NIGHTLY || matrix.node-version }} | ||
check-latest: true | ||
- name: Get nightly ref | ||
if: contains(matrix.node-version, 'nightly') | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: | | ||
SHORT_SHA=$(node -p 'process.version.split(/-nightly\d{8}/)[1]') | ||
echo "NIGHTLY_REF=$(gh api /repos/nodejs/node/commits/$SHORT_SHA --jq '.sha')" >> $GITHUB_ENV | ||
- name: Checkout ${{ steps.setup-node.outputs.node-version }} | ||
uses: actions/checkout@v3 | ||
with: | ||
persist-credentials: false | ||
ref: ${{ env.NIGHTLY_REF || steps.setup-node.outputs.node-version }} | ||
- name: Set env.NODE | ||
run: echo "NODE=$(which node)" >> $GITHUB_ENV | ||
- name: Set env.WPT_REVISION | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
run: echo "WPT_REVISION=$(gh api /repos/web-platform-tests/wpt/branches/epochs/daily --jq '.commit.sha')" >> $GITHUB_ENV | ||
|
||
# replace checked out WPT with the synchronized branch | ||
- name: Remove stale WPT | ||
run: rm -rf wpt | ||
working-directory: test/fixtures | ||
- name: Checkout epochs/daily WPT | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: web-platform-tests/wpt | ||
persist-credentials: false | ||
path: test/fixtures/wpt | ||
clean: false | ||
ref: ${{ env.WPT_REVISION }} | ||
|
||
# Node.js WPT Runner | ||
- name: Run WPT and generate report | ||
run: | | ||
make test-wpt-report || true | ||
if [ -e out/wpt/wptreport.json ]; then | ||
echo "WPT_REPORT=$(pwd)/out/wpt/wptreport.json" >> $GITHUB_ENV | ||
fi | ||
# undici WPT Runner | ||
- name: Set env.UNDICI_VERSION | ||
if: ${{ env.WPT_REPORT != '' }} | ||
run: echo "UNDICI_VERSION=v$(jq -r '.version' < deps/undici/src/package.json)" >> $GITHUB_ENV | ||
- name: Remove deps/undici | ||
if: ${{ env.WPT_REPORT != '' }} | ||
run: rm -rf deps/undici | ||
- name: Checkout undici | ||
if: ${{ env.WPT_REPORT != '' }} | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: nodejs/undici | ||
persist-credentials: false | ||
path: deps/undici | ||
clean: false | ||
ref: ${{ env.UNDICI_VERSION }} | ||
- name: Add undici WPTs to the report | ||
if: ${{ env.WPT_REPORT != '' }} | ||
run: | | ||
rm -rf test/wpt/tests | ||
mv ../../test/fixtures/wpt/ test/wpt/tests/ | ||
npm install | ||
npm run test:wpt || true | ||
working-directory: deps/undici | ||
|
||
# Upload artifacts | ||
- name: Clone report for upload | ||
if: ${{ env.WPT_REPORT != '' }} | ||
working-directory: out/wpt | ||
run: cp wptreport.json wptreport-${{ steps.setup-node.outputs.node-version }}.json | ||
- name: Upload GitHub Actions artifact | ||
if: ${{ env.WPT_REPORT != '' }} | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
path: out/wpt/wptreport-*.json | ||
name: WPT Reports | ||
if-no-files-found: error | ||
- name: Upload WPT Report to wpt.fyi API | ||
if: ${{ env.WPT_REPORT != '' }} | ||
env: | ||
WPT_FYI_USERNAME: ${{ vars.WPT_FYI_USERNAME }} | ||
WPT_FYI_PASSWORD: ${{ secrets.WPT_FYI_PASSWORD }} | ||
working-directory: out/wpt | ||
run: | | ||
gzip wptreport.json | ||
echo "## Node.js ${{ steps.setup-node.outputs.node-version }}" >> $GITHUB_STEP_SUMMARY | ||
echo "" >> $GITHUB_STEP_SUMMARY | ||
echo "WPT Revision: [\`${WPT_REVISION:0:7}\`](https://github.com/web-platform-tests/wpt/commits/$WPT_REVISION)" >> $GITHUB_STEP_SUMMARY | ||
for WPT_FYI_ENDPOINT in "https://wpt.fyi/api/results/upload" "https://staging.wpt.fyi/api/results/upload" | ||
do | ||
response=$(curl -sS \ | ||
-u "$WPT_FYI_USERNAME:$WPT_FYI_PASSWORD" \ | ||
-F "result_file=@wptreport.json.gz" \ | ||
-F "labels=master" \ | ||
$WPT_FYI_ENDPOINT) | ||
if [[ $response =~ Task\ ([0-9]+)\ added\ to\ queue ]]; then | ||
run_id=${BASH_REMATCH[1]} | ||
origin=${WPT_FYI_ENDPOINT%/api/results/upload} | ||
echo "" >> $GITHUB_STEP_SUMMARY | ||
echo "Run ID [\`$run_id\`]($origin/api/runs/$run_id) added to the processor queue at ${origin:8}" >> $GITHUB_STEP_SUMMARY | ||
echo "- [View on the ${origin:8} dashboard]($origin/results?run_id=$run_id)" >> $GITHUB_STEP_SUMMARY | ||
fi | ||
done |