Skip to content

Commit c76bf47

Browse files
chiedozekeJasonEtco
authored
Attempt to reduce uneeded test runs (#16015)
* Reduce unneeded test runs - Attempt to make the skip logic work w/ required checks - Move pa11y to cron schedule - Make browser test conditional Co-authored-by: Zeke Sikelianos <[email protected]> Co-authored-by: Jason Etcovitch <[email protected]>
1 parent e097e88 commit c76bf47

File tree

4 files changed

+74
-19
lines changed

4 files changed

+74
-19
lines changed

.github/allowed-actions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = [
1818
'crowdin/[email protected]',
1919
'dawidd6/action-delete-branch@v3',
2020
'docker://chinthakagodawita/autoupdate-action:v1',
21+
'fkirc/skip-duplicate-actions@a12175f6209d4805b5a163d723270be2a0dc7b36',
2122
'github/codeql-action/analyze@v1',
2223
'github/codeql-action/init@v1',
2324
'ianwalter/[email protected]',

.github/workflows/browser-test.yml

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,36 @@ on:
55
push:
66

77
jobs:
8+
see_if_should_skip:
9+
runs-on: ubuntu-latest
10+
# Map a step output to a job output
11+
outputs:
12+
should_skip: ${{ steps.skip_check.outputs.should_skip }}
13+
steps:
14+
- id: skip_check
15+
uses: fkirc/skip-duplicate-actions@a12175f6209d4805b5a163d723270be2a0dc7b36
16+
with:
17+
cancel_others: 'false'
18+
github_token: ${{ github.token }}
19+
paths: '["assets/**", "content/**", "data/**", "includes/**", "javascripts/**", "jest-puppeteer.config.js", "jest.config.js", "layouts/**", "lib/**", "middleware/**", "package-lock.json", "package.json", "server.js", "translations/**", "webpack.config.js"]'
820
build:
21+
needs: see_if_should_skip
922
runs-on: ubuntu-latest
1023
steps:
11-
- name: Checkout
24+
# Each of these ifs needs to be repeated at each step to make sure the required check still runs
25+
# Even if if doesn't do anything
26+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
27+
name: Checkout
1228
uses: actions/checkout@v2
13-
- name: Install
29+
30+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
31+
name: Install
1432
uses: ianwalter/[email protected]
1533
with:
1634
args: npm ci
17-
- name: Test
35+
36+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
37+
name: Test
1838
uses: ianwalter/[email protected]
1939
with:
2040
args: npm run browser-test

.github/workflows/pa11y.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
name: "Pa11y"
2-
on: [push]
2+
on:
3+
workflow_dispatch:
4+
schedule:
5+
- cron: "25 17 * * *" # once a day at 17:25 UTC / 11:50 PST
36
jobs:
47
test:
58
runs-on: ubuntu-latest

.github/workflows/test.yml

Lines changed: 46 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,74 +15,105 @@ env:
1515
CI: true
1616

1717
jobs:
18+
see_if_should_skip:
19+
runs-on: ubuntu-latest
20+
# Map a step output to a job output
21+
outputs:
22+
should_skip: ${{ steps.skip_check.outputs.should_skip }}
23+
steps:
24+
- id: skip_check
25+
uses: fkirc/skip-duplicate-actions@a12175f6209d4805b5a163d723270be2a0dc7b36
26+
with:
27+
cancel_others: 'false'
28+
github_token: ${{ github.token }}
29+
paths_ignore: '[".all-contributorsrc", ".env.example", ".gitattributes", ".vscode/**", "app.json", "assets/**", "CODE_OF_CONDUCT.md", "CONTRIBUTING.md", "contributing/**", "crowdin-actions-config.yml", "crowdin.yml", "docs", "javascripts/**", "jest-puppeteer.config.js", "LICENSE-CODE", "LICENSE", "nodemon.json", "ownership.yaml", "README.md", "script/**", "stylesheets/**"]'
1830
lint:
31+
needs: see_if_should_skip
1932
runs-on: ubuntu-latest
2033
steps:
21-
- name: Check out repo
34+
# Each of these ifs needs to be repeated at each step to make sure the required check still runs
35+
# Even if if doesn't do anything
36+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
37+
name: Check out repo
2238
uses: actions/checkout@v2
2339

24-
- name: Setup node
40+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
41+
name: Setup node
2542
uses: actions/setup-node@v1
2643
with:
2744
node-version: 14.x
2845

29-
- name: Get npm cache directory
46+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
47+
name: Get npm cache directory
3048
id: npm-cache
3149
run: |
3250
echo "::set-output name=dir::$(npm config get cache)"
3351
34-
- name: Cache node modules
52+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
53+
name: Cache node modules
3554
uses: actions/cache@v2
3655
with:
3756
path: ${{ steps.npm-cache.outputs.dir }}
3857
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
3958
restore-keys: |
4059
${{ runner.os }}-node-
4160
42-
- name: Install dependencies
61+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
62+
name: Install dependencies
4363
run: npm ci
4464

45-
- name: Run linter
65+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
66+
name: Run linter
4667
run: npx standard
4768

48-
- name: Check dependencies
69+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
70+
name: Check dependencies
4971
run: npm run check-deps
50-
5172
test:
73+
needs: see_if_should_skip
5274
runs-on: ubuntu-latest
5375
strategy:
5476
fail-fast: false
5577
matrix:
5678
test-group: [content, meta, rendering, routing, unit, links-and-images]
5779
steps:
58-
- name: Check out repo
80+
# Each of these ifs needs to be repeated at each step to make sure the required check still runs
81+
# Even if if doesn't do anything
82+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
83+
name: Check out repo
5984
uses: actions/checkout@v2
6085

61-
- name: Setup node
86+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
87+
name: Setup node
6288
uses: actions/setup-node@v1
6389
with:
6490
node-version: 14.x
6591

66-
- name: Get npm cache directory
92+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
93+
name: Get npm cache directory
6794
id: npm-cache
6895
run: |
6996
echo "::set-output name=dir::$(npm config get cache)"
7097
71-
- name: Cache node modules
98+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
99+
name: Cache node modules
72100
uses: actions/cache@v2
73101
with:
74102
path: ${{ steps.npm-cache.outputs.dir }}
75103
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
76104
restore-keys: |
77105
${{ runner.os }}-node-
78106
79-
- name: Install dependencies
107+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
108+
name: Install dependencies
80109
run: npm ci
81110

82-
- name: Run build script
111+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
112+
name: Run build script
83113
run: npm run build
84114

85-
- name: Run tests
115+
- if: ${{ needs.see_if_should_skip.outputs.should_skip == 'false' }}
116+
name: Run tests
86117
run: npx jest tests/${{ matrix.test-group }}/
87118

88119
- name: Send Slack notification if workflow fails

0 commit comments

Comments
 (0)