🐛 fix(matrix-mana-bot): resolve QEMU emulation failure in CI

- Build matrix-mana-bot only for linux/amd64 (arm64 fails due to QEMU)
- Move pnpm overrides for cpu-features and ssh2 to root package.json
- These native deps cause illegal instruction errors under QEMU emulation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Till-JS 2026-02-01 13:59:04 +01:00
parent 8cd5021b50
commit ab49be0bee
20 changed files with 1984 additions and 402 deletions

View file

@ -22,6 +22,8 @@
},
"dependencies": {
"@calendar/shared": "workspace:*",
"@manacore/credit-operations": "workspace:*",
"@manacore/nestjs-integration": "workspace:*",
"@manacore/shared-nestjs-auth": "workspace:*",
"@manacore/shared-nestjs-health": "workspace:*",
"@manacore/shared-nestjs-metrics": "workspace:*",

View file

@ -1,7 +1,8 @@
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ScheduleModule } from '@nestjs/schedule';
import { MetricsModule } from '@manacore/shared-nestjs-metrics';
import { ManaCoreModule } from '@manacore/nestjs-integration';
import { DatabaseModule } from './db/database.module';
import { HealthModule } from '@manacore/shared-nestjs-health';
import { CalendarModule } from './calendar/calendar.module';
@ -26,6 +27,15 @@ import { NotificationModule } from './notification/notification.module';
prefix: 'calendar_',
excludePaths: ['/health'],
}),
ManaCoreModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
appId: configService.get<string>('APP_ID', 'calendar'),
serviceKey: configService.get<string>('MANA_CORE_SERVICE_KEY', ''),
debug: configService.get('NODE_ENV') === 'development',
}),
inject: [ConfigService],
}),
DatabaseModule,
HealthModule.forRoot({ serviceName: 'calendar-backend' }),
EmailModule,

View file

@ -1,5 +1,7 @@
import { Controller, Get, Post, Put, Delete, Body, Param, UseGuards } from '@nestjs/common';
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth';
import { UseCredits } from '@manacore/nestjs-integration';
import { CreditOperationType } from '@manacore/credit-operations';
import { CalendarService } from './calendar.service';
import { CreateCalendarDto, UpdateCalendarDto } from './dto';
@ -28,6 +30,7 @@ export class CalendarController {
}
@Post()
@UseCredits(CreditOperationType.CALENDAR_CREATE)
async create(@CurrentUser() user: CurrentUserData, @Body() dto: CreateCalendarDto) {
const calendar = await this.calendarService.create(user.userId, dto);
return { calendar };

View file

@ -1,5 +1,7 @@
import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } from '@nestjs/common';
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth';
import { UseCredits } from '@manacore/nestjs-integration';
import { CreditOperationType } from '@manacore/credit-operations';
import { EventService } from './event.service';
import { CreateEventDto, UpdateEventDto, QueryEventsDto } from './dto';
@ -31,6 +33,7 @@ export class EventController {
}
@Post()
@UseCredits(CreditOperationType.EVENT_CREATE)
async create(@CurrentUser() user: CurrentUserData, @Body() dto: CreateEventDto) {
const event = await this.eventService.create(user.userId, dto);
return { event };

View file

@ -18,6 +18,8 @@
"db:generate": "drizzle-kit generate"
},
"dependencies": {
"@manacore/credit-operations": "workspace:*",
"@manacore/nestjs-integration": "workspace:*",
"@manacore/shared-nestjs-auth": "workspace:*",
"@manacore/shared-nestjs-health": "workspace:*",
"@manacore/shared-nestjs-metrics": "workspace:*",

View file

@ -1,7 +1,8 @@
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ScheduleModule } from '@nestjs/schedule';
import { MetricsModule } from '@manacore/shared-nestjs-metrics';
import { ManaCoreModule } from '@manacore/nestjs-integration';
import { DatabaseModule } from './db/database.module';
import { HealthModule } from '@manacore/shared-nestjs-health';
import { ProjectModule } from './project/project.module';
@ -22,6 +23,15 @@ import { NetworkModule } from './network/network.module';
prefix: 'todo_',
excludePaths: ['/health'],
}),
ManaCoreModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
appId: configService.get<string>('APP_ID', 'todo'),
serviceKey: configService.get<string>('MANA_CORE_SERVICE_KEY', ''),
debug: configService.get('NODE_ENV') === 'development',
}),
inject: [ConfigService],
}),
DatabaseModule,
HealthModule.forRoot({ serviceName: 'todo-backend' }),
ProjectModule,

View file

@ -1,5 +1,7 @@
import { Controller, Get, Post, Put, Delete, Body, Param, UseGuards } from '@nestjs/common';
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth';
import { UseCredits } from '@manacore/nestjs-integration';
import { CreditOperationType } from '@manacore/credit-operations';
import { ProjectService } from './project.service';
import { CreateProjectDto, UpdateProjectDto, ReorderProjectsDto } from './dto';
@ -23,6 +25,7 @@ export class ProjectController {
}
@Post()
@UseCredits(CreditOperationType.PROJECT_CREATE)
async create(@CurrentUser() user: CurrentUserData, @Body() dto: CreateProjectDto) {
const project = await this.projectService.create(user.userId, dto);
return { project };

View file

@ -1,5 +1,7 @@
import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards } from '@nestjs/common';
import { JwtAuthGuard, CurrentUser, CurrentUserData } from '@manacore/shared-nestjs-auth';
import { UseCredits } from '@manacore/nestjs-integration';
import { CreditOperationType } from '@manacore/credit-operations';
import { TaskService } from './task.service';
import { CreateTaskDto, UpdateTaskDto, QueryTasksDto } from './dto';
@ -63,6 +65,7 @@ export class TaskController {
}
@Post()
@UseCredits(CreditOperationType.TASK_CREATE)
async create(@CurrentUser() user: CurrentUserData, @Body() dto: CreateTaskDto) {
const task = await this.taskService.create(user.userId, dto);
return { task };