|
7 | 7 | branches: [main, develop] |
8 | 8 |
|
9 | 9 | env: |
10 | | - NODE_VERSION: '18.x' |
| 10 | + NODE_VERSION: '20.x' |
11 | 11 | POSTGRES_VERSION: '14' |
12 | 12 |
|
| 13 | +defaults: |
| 14 | + run: |
| 15 | + working-directory: microservices/config-service |
| 16 | + |
13 | 17 | jobs: |
14 | 18 | # Code Quality Checks |
15 | 19 | lint-and-format: |
|
25 | 29 | with: |
26 | 30 | node-version: ${{ env.NODE_VERSION }} |
27 | 31 | cache: 'npm' |
| 32 | + cache-dependency-path: microservices/config-service/package-lock.json |
28 | 33 |
|
29 | 34 | - name: 📋 Install dependencies |
30 | 35 | run: npm ci |
|
52 | 57 | with: |
53 | 58 | node-version: ${{ env.NODE_VERSION }} |
54 | 59 | cache: 'npm' |
| 60 | + cache-dependency-path: microservices/config-service/package-lock.json |
| 61 | + |
| 62 | + - name: 📋 Install dependencies |
| 63 | + run: npm ci |
55 | 64 |
|
56 | 65 | - name: 🔐 Run security audit |
57 | | - run: npm audit --audit-level=moderate |
| 66 | + run: npm audit --omit=dev --audit-level=moderate |
58 | 67 |
|
59 | 68 | - name: 🛡️ Run dependency vulnerability scan |
60 | 69 | run: | |
|
68 | 77 |
|
69 | 78 | strategy: |
70 | 79 | matrix: |
71 | | - node-version: ['16.x', '18.x', '20.x'] |
| 80 | + node-version: ['20.x', '22.x'] |
72 | 81 |
|
73 | 82 | steps: |
74 | 83 | - name: 📥 Checkout code |
|
79 | 88 | with: |
80 | 89 | node-version: ${{ matrix.node-version }} |
81 | 90 | cache: 'npm' |
| 91 | + cache-dependency-path: microservices/config-service/package-lock.json |
82 | 92 |
|
83 | 93 | - name: 📋 Install dependencies |
84 | 94 | run: npm ci |
@@ -137,31 +147,21 @@ jobs: |
137 | 147 | with: |
138 | 148 | node-version: ${{ env.NODE_VERSION }} |
139 | 149 | cache: 'npm' |
| 150 | + cache-dependency-path: microservices/config-service/package-lock.json |
140 | 151 |
|
141 | 152 | - name: 📋 Install dependencies |
142 | 153 | run: npm ci |
143 | 154 |
|
144 | | - - name: 🗄️ Run database migrations |
145 | | - run: npm run migration:run |
146 | | - env: |
147 | | - DATABASE_HOST: localhost |
148 | | - DATABASE_PORT: 5432 |
149 | | - DATABASE_USER: test_user |
150 | | - DATABASE_PASSWORD: test_password |
151 | | - DATABASE_NAME: quest_service_test |
152 | | - |
153 | 155 | - name: 🔗 Run integration tests |
154 | | - run: npm run test:integration |
| 156 | + run: npm run test:e2e -- --runInBand |
155 | 157 | env: |
156 | 158 | NODE_ENV: test |
157 | | - DATABASE_HOST: localhost |
158 | | - DATABASE_PORT: 5432 |
159 | | - DATABASE_USER: test_user |
160 | | - DATABASE_PASSWORD: test_password |
161 | | - DATABASE_NAME: quest_service_test |
162 | | - REDIS_HOST: localhost |
163 | | - REDIS_PORT: 6379 |
164 | | - JWT_SECRET: test-jwt-secret-key-for-ci |
| 159 | + DB_HOST: localhost |
| 160 | + DB_PORT: 5432 |
| 161 | + DB_USER: test_user |
| 162 | + DB_PASSWORD: test_password |
| 163 | + DB_NAME: quest_service_test |
| 164 | + ENCRYPTION_KEY: test-encryption-key-at-least-32-characters |
165 | 165 |
|
166 | 166 | - name: 📊 Upload integration test coverage |
167 | 167 | uses: codecov/codecov-action@v3 |
@@ -209,39 +209,27 @@ jobs: |
209 | 209 | with: |
210 | 210 | node-version: ${{ env.NODE_VERSION }} |
211 | 211 | cache: 'npm' |
| 212 | + cache-dependency-path: microservices/config-service/package-lock.json |
212 | 213 |
|
213 | 214 | - name: 📋 Install dependencies |
214 | 215 | run: npm ci |
215 | 216 |
|
216 | 217 | - name: 🏗️ Build application |
217 | 218 | run: npm run build |
218 | 219 |
|
219 | | - - name: 🗄️ Setup test database |
220 | | - run: | |
221 | | - npm run migration:run |
222 | | - npm run seed:run |
223 | | - env: |
224 | | - DATABASE_HOST: localhost |
225 | | - DATABASE_PORT: 5432 |
226 | | - DATABASE_USER: test_user |
227 | | - DATABASE_PASSWORD: test_password |
228 | | - DATABASE_NAME: quest_service_e2e |
229 | | - |
230 | 220 | - name: 🎭 Run E2E tests |
231 | | - run: npm run test:e2e |
| 221 | + run: npm run test:e2e -- --runInBand |
232 | 222 | env: |
233 | 223 | NODE_ENV: test |
234 | | - DATABASE_HOST: localhost |
235 | | - DATABASE_PORT: 5432 |
236 | | - DATABASE_USER: test_user |
237 | | - DATABASE_PASSWORD: test_password |
238 | | - DATABASE_NAME: quest_service_e2e |
239 | | - REDIS_HOST: localhost |
240 | | - REDIS_PORT: 6379 |
241 | | - JWT_SECRET: test-jwt-secret-key-for-e2e |
| 224 | + DB_HOST: localhost |
| 225 | + DB_PORT: 5432 |
| 226 | + DB_USER: test_user |
| 227 | + DB_PASSWORD: test_password |
| 228 | + DB_NAME: quest_service_e2e |
| 229 | + ENCRYPTION_KEY: test-encryption-key-at-least-32-characters |
242 | 230 |
|
243 | 231 | - name: 📸 Upload E2E test artifacts |
244 | | - uses: actions/upload-artifact@v3 |
| 232 | + uses: actions/upload-artifact@v4 |
245 | 233 | if: failure() |
246 | 234 | with: |
247 | 235 | name: e2e-test-results |
@@ -280,6 +268,7 @@ jobs: |
280 | 268 | with: |
281 | 269 | node-version: ${{ env.NODE_VERSION }} |
282 | 270 | cache: 'npm' |
| 271 | + cache-dependency-path: microservices/config-service/package-lock.json |
283 | 272 |
|
284 | 273 | - name: 📋 Install dependencies |
285 | 274 | run: npm ci |
@@ -343,7 +332,7 @@ jobs: |
343 | 332 | - name: 🏗️ Build and push Docker image |
344 | 333 | uses: docker/build-push-action@v5 |
345 | 334 | with: |
346 | | - context: . |
| 335 | + context: microservices/config-service |
347 | 336 | platforms: linux/amd64,linux/arm64 |
348 | 337 | push: true |
349 | 338 | tags: ${{ steps.meta.outputs.tags }} |
|
0 commit comments