forked from elementor/elementor
-
Notifications
You must be signed in to change notification settings - Fork 0
151 lines (146 loc) · 5.44 KB
/
lighthouse.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
name: Lighthouse
on:
pull_request:
merge_group:
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build-plugin:
name: Build plugin
runs-on: ubuntu-latest
if: startsWith( github.repository, 'elementor/' )
outputs:
changelog_diff: ${{ steps.changelog_diff_files.outputs.diff }}
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Check if this is only a changelog PR
id: changelog_diff_files
uses: technote-space/get-diff-action@v6
with:
# PATTERNS are:
# Everything: **/*
# Everything in directories starting with a period: .*/**/*
# Not readme.txt: !readme.txt
PATTERNS: |
**/*
.*/**/*
!readme.txt
- name: Install Node.js 18.x
uses: actions/setup-node@v3
with:
node-version: 18.x
- name: Cache node modules
if: steps.changelog_diff_files.outputs.diff
uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install dependencies
if: steps.changelog_diff_files.outputs.diff
run: npm ci
- name: Build
if: steps.changelog_diff_files.outputs.diff
run: npx grunt build
- name: Save build to cache
if: steps.changelog_diff_files.outputs.diff
uses: actions/cache@v2
id: restore-build
with:
path: ./build/*
key: ${{ github.sha }}
lighthouse_test:
name: Lighthouse test - WP ${{ matrix.wpCoreVersion }} on PHP ${{ matrix.phpVersion }}
runs-on: ubuntu-latest
needs: [build-plugin]
if: ${{ needs.build-plugin.outputs.changelog_diff }}
strategy:
matrix:
include:
- phpVersion: '8.0'
wpCoreVersion: 'master'
- phpVersion: '7.4'
wpCoreVersion: 'latest'
steps:
- name: Checkout source code
if: matrix.wpCoreVersion != 'master'
uses: actions/checkout@v3
- name: Install Node.js 18.x
if: matrix.wpCoreVersion != 'master'
uses: actions/setup-node@v2
with:
node-version: 18.x
- name: Restore build from cache
if: matrix.wpCoreVersion != 'master'
uses: actions/cache@v2
id: restore-build
with:
path: ./build/*
key: ${{ github.sha }}
- name: Run wp-env
if: matrix.wpCoreVersion != 'master'
uses: ./.github/workflows/run-wp-env
with:
TEMPLATES: './tests/lighthouse/templates'
PHP_VERSION: ${{ matrix.phpVersion }}
WP_CORE_VERSION: ${{ matrix.wpCoreVersion }}
- name: Install lhci
if: matrix.wpCoreVersion != 'master'
run: |
npm ci
npm install --no-package-lock --no-save @lhci/cli@0.11.1
- name: WordPress debug information
if: matrix.wpCoreVersion != 'master'
run: |
npx wp-env run cli "wp core version"
npx wp-env run cli "wp --info"
- name: Run Lighthouse tests
if: matrix.wpCoreVersion != 'master'
run: |
bash "${GITHUB_WORKSPACE}/.github/scripts/run-lighthouse-tests.sh"
- name: Save HTML dumps on failure
if: failure() || matrix.wpCoreVersion != 'master'
run: |
bash "${GITHUB_WORKSPACE}/.github/scripts/save-lighthouse-pages-html-dumps.sh"
- name: Upload Lighthouse reports on failure
if: failure() || matrix.wpCoreVersion != 'master'
uses: actions/upload-artifact@v2
with:
name: lighthouseci-reports
path: ${{ github.workspace }}/.lighthouseci/reports/**/*
retention-days: 7
- name: Upload Lighthouse HTML dumps on failure
if: failure() || matrix.wpCoreVersion != 'master'
uses: actions/upload-artifact@v2
with:
name: lighthouseci-htmls
path: ${{ github.workspace }}/.lighthouseci/dumps/**/*
retention-days: 7
- name: Notify slack on failure
if: failure() && github.event_name == 'schedule'
env:
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
SLACK_CHANNEL: ${{ secrets.SLACK_LIGHTHOUSE_CHANNEL }}
SLACK_BOT_NAME: ElementorBot
run: |
MESSAGE_TEXT="@channel Repo: *$GITHUB_REPOSITORY* Workflow: *$GITHUB_WORKFLOW* is FAILED - <$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID|link>"
curl -X POST "https://slack.com/api/chat.postMessage" -d "username=${SLACK_BOT_NAME}&token=${SLACK_TOKEN}&channel=${SLACK_CHANNEL}&text=${MESSAGE_TEXT}&link_names=true"
lighthouse:
needs: lighthouse_test
if: ${{ always() }} # Will be run even if 'Lighthouse' matrix will be skipped
runs-on: ubuntu-22.04
name: Lighthouse - Test Results
steps:
- name: Test status
run: echo "Test status is - ${{ needs.lighthouse_test.result }}"
- name: Check lighthouse_test matrix status
if: ${{ needs.lighthouse_test.result != 'success' && needs.lighthouse_test.result != 'skipped' }}
run: exit 1