-
Notifications
You must be signed in to change notification settings - Fork 64
134 lines (111 loc) · 3.99 KB
/
test-and-release.yaml
File metadata and controls
134 lines (111 loc) · 3.99 KB
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
name: Check & Release
env:
PUPPETEER_DOWNLOAD_BASE_URL: https://storage.googleapis.com/chrome-for-testing-public
on:
# Push to master will deploy a dev version
push:
branches: [master, renovate/**]
# PR to master branch will skip deployment
pull_request:
branches: [master]
jobs:
# NPM install is done in a separate job and cached to speed up the following jobs.
build_and_test:
name: Build & Test
if: (!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, 'docs:'))
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# tests on windows are extremely unstable
# os: [ ubuntu-22.04, windows-2019 ]
os: [ubuntu-22.04]
node-version: [18, 20, 22, 24]
steps:
- name: Cancel Workflow Action
uses: styfle/cancel-workflow-action@0.13.0
with:
access_token: ${{ github.token }}
- name: Checkout repository
uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: 'package-lock.json'
- name: Install Dependencies
run: |
npm ci --force
npx playwright install --with-deps
- name: Build
run: npm run ci:build
- name: Tests
run: npm test
docs:
name: Docs build
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
runs-on: ubuntu-22.04
steps:
- name: Checkout Source code
uses: actions/checkout@v6
- name: Use Node.js 24
uses: actions/setup-node@v6
with:
node-version: 24
cache: 'npm'
cache-dependency-path: 'package-lock.json'
- name: Install Dependencies
run: npm ci --force
- name: Build docs
if: github.ref != 'refs/heads/master'
run: |
cd website
npm ci
npm run build
lint:
name: Lint
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Use Node.js 24
uses: actions/setup-node@v6
with:
node-version: 24
cache: 'npm'
cache-dependency-path: 'package-lock.json'
- name: Install Dependencies
run: npm ci --force
- name: ESLint
run: npm run lint
- name: Prettier
run: npm run format:check
publish:
name: Publish
if: (github.ref == 'refs/heads/master') && !contains(github.event.head_commit.message, 'docs:')
runs-on: ubuntu-22.04
needs: [lint, build_and_test]
steps:
- name: Checkout Source code
uses: actions/checkout@v6
with:
fetch-depth: 0 # we need to pull everything to have correct dev version suffix
ref: master
- name: Use Node.js 24
uses: actions/setup-node@v6
with:
node-version: 24
cache: 'npm'
cache-dependency-path: 'package-lock.json'
- name: Install Dependencies
run: npm ci --force
- name: Publish beta to npm
uses: apify/workflows/execute-workflow@main
with:
workflow: publish-to-npm.yaml
inputs: >
{
"ref": "${{ github.sha }}",
"tag": "next"
}