-
Notifications
You must be signed in to change notification settings - Fork 6
133 lines (105 loc) · 3.04 KB
/
Copy pathci.yml
File metadata and controls
133 lines (105 loc) · 3.04 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
name: CI
on:
push:
branches:
- main
- develop
- 'feat/**'
pull_request:
branches:
- main
- develop
jobs:
build-and-test:
name: Build and Test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [16.x, 18.x, 22.x]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install dependencies
run: npm ci
# TODO: Remove when Node.js 16 support is dropped (Homey Pro 2016-2019 EOL)
# Workaround for ts-jest peer dependency resolution issue on Node.js 16 in CI
- name: Workaround for ts-jest peer deps on Node 16
if: matrix.node-version == '16.x'
run: npm install --save-dev jest-util@^29.0.0
- name: Build project
run: npm run build
- name: Run tests with coverage
run: npm run test:coverage
- name: Upload coverage to Codecov
if: matrix.node-version == '22.x'
uses: codecov/codecov-action@v4
with:
file: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
lint-formatting:
name: Linting and Formatting
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22.x'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Validate formatting and linting
run: npm run validate
build-homey-app:
name: Build Homey App
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js 18 (for Homey CLI)
uses: actions/setup-node@v4
with:
node-version: '18.x'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Install Homey CLI
run: npm install -g homey
- name: Build Homey app
run: homey app build
- name: Validate app.json
run: homey app validate
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: homey-app-build
path: |
build/
app.json
retention-days: 7
status-check:
name: All Checks Passed
runs-on: ubuntu-latest
needs: [build-and-test, lint-formatting, build-homey-app]
if: always()
steps:
- name: Check build status
if: needs.build-and-test.result != 'success'
run: exit 1
- name: Check markdown lint status
if: needs.lint-formatting.result != 'success'
run: exit 1
- name: Check Homey build status
if: needs.build-homey-app.result != 'success'
run: exit 1
- name: All checks passed
run: echo "✅ All CI checks passed successfully!"