Repository navigation
executable file
·148 lines (121 loc) · 3.53 KB
/
Copy pathci.yml
File metadata and controls
executable file
·148 lines (121 loc) · 3.53 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: CI/CD Pipeline
permissions:
contents: read
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
validate:
name: Validate Code
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [21.x]
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 8
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v5
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
# Backend validation
- name: Install backend dependencies
run: npm install
working-directory: ./
- name: Build backend
run: npm run build
working-directory: ./
# Frontend validation
- name: Install frontend dependencies
run: pnpm install
working-directory: ./frontend
- name: Build frontend
run: pnpm run build
working-directory: ./frontend
# Security and dependency checks
- name: Run npm audit (backend)
run: npm audit --audit-level=moderate
working-directory: ./
continue-on-error: true
- name: Run pnpm audit (frontend)
run: pnpm audit --audit-level=moderate
working-directory: ./frontend
continue-on-error: true
docker-build:
name: Docker Build Test
runs-on: ubuntu-latest
needs: validate
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build backend Docker image
uses: docker/build-push-action@v6
with:
context: .
file: ./backend/Dockerfile
push: false
tags: pagelm-backend:test
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Build frontend Docker image
uses: docker/build-push-action@v6
with:
context: ./frontend
file: ./frontend/Dockerfile
push: false
tags: pagelm-frontend:test
cache-from: type=gha
cache-to: type=gha,mode=max
dependency-check:
name: Dependency Vulnerability Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 8
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '21.x'
- name: Install dependencies (backend)
run: npm install
working-directory: ./
- name: Check for known vulnerabilities (backend)
run: npm audit --audit-level=high
working-directory: ./
continue-on-error: false
- name: Install dependencies (frontend)
run: pnpm install
working-directory: ./frontend
- name: Check for known vulnerabilities (frontend)
run: pnpm audit --audit-level=high
working-directory: ./frontend
continue-on-error: false
summary:
name: Validation Summary
runs-on: ubuntu-latest
needs: [validate, docker-build, dependency-check]
if: always()
steps:
- name: Check results
run: |
if [[ "${{ needs.validate.result }}" == "failure" || \
"${{ needs.docker-build.result }}" == "failure" || \
"${{ needs.dependency-check.result }}" == "failure" ]]; then
echo "❌ Some validation checks failed"
exit 1
else
echo "✅ All validation checks passed"
fi