-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathci-validate-build-functional.yml
More file actions
148 lines (123 loc) · 3.83 KB
/
ci-validate-build-functional.yml
File metadata and controls
148 lines (123 loc) · 3.83 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
name: Full CI – Validate, Lint, Build, Extract
on:
pull_request:
branches:
- develop
- baseline-recipes-dev
- templates/**
push:
branches:
- main
- baseline-recipes
- baseline-recipes-dev
- templates/**
jobs:
validate-repo:
name: 🔎 Validate Repository
runs-on: ubuntu-latest
steps:
- name: 🛎 Checkout repository
uses: actions/checkout@v4
- name: 🧰 Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: "20"
- name: 💾 Cache node_modules
uses: actions/cache@v3
with:
path: |
node_modules
apps/*/node_modules
packages/*/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: 📦 Install dependencies
run: npm install
- name: 🔍 Check workspace integrity
run: |
echo "Checking workspace structure with manypkg..."
npm run workspace:check
build-and-lint:
name: 🛠️ Build Packages & Lint All
runs-on: ubuntu-latest
needs: validate-repo
steps:
- name: 🛎 Checkout repository
uses: actions/checkout@v4
- name: 🧰 Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: "20"
- name: 💾 Cache node_modules
uses: actions/cache@v3
with:
path: |
node_modules
apps/*/node_modules
packages/*/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: 📦 Install dependencies
run: npm install
- name: 🏗️ Build all packages
run: |
echo "Building all packages..."
npm run build:packages
- name: 🧹 Lint all packages and apps
run: |
echo "Running full monorepo lint..."
npm run lint
- name: 📤 Archive dist folders
if: success()
run: |
echo "Archiving all dist folders from packages/*..."
tar -czf build-packages.tar.gz packages/*/dist
- name: 🚚 Upload dist archive as artifact
uses: actions/upload-artifact@v4
with:
name: build-packages
path: build-packages.tar.gz
extract-and-lint:
name: 🧪 Extract Components & Lint
runs-on: ubuntu-latest
needs: build-and-lint
steps:
- name: 🛎 Checkout repository
uses: actions/checkout@v4
- name: 🧰 Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: "20"
- name: 💾 Cache node_modules
uses: actions/cache@v3
with:
path: |
node_modules
apps/*/node_modules
packages/*/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: 📦 Install dependencies
run: npm install
- name: 📥 Download dist archive
uses: actions/download-artifact@v4
with:
name: build-packages
path: .
- name: ♻️ Extract dist folders into packages/*
run: |
echo "Extracting dist folders into packages..."
tar -xzf build-packages.tar.gz
- name: 🧪 Run component:extract in apps/csk
working-directory: apps/csk
run: |
echo "Running extract with simulated input..."
echo "a" | npm run component:extract
- name: 🧹 Lint apps/csk after extract
working-directory: apps/csk
run: |
echo "Linting apps/csk after component extraction..."
npm run lint