Fix/rc 1 (#89)

* Revert "packages(apps/web): upgrade next@15.5.0"

This reverts commit 22e4f72ee6e36834672e44a25acf8a5797dcca8c.

* docker-compose: add volumes

* Update Dockerfiles to install specific version of turbo (2.3.2) for consistent dependency management

* .github\workflows\deploy.yml: remove REDIS_PASSWORD env variable

* Update deploy.yml to add REDIS_PASSWORD environment variable for improved configuration management

* Reapply "packages(apps/web): upgrade next@15.5.0"

This reverts commit bcb9be88dfd1b57d6ce6f47bedca4aa3e8db0eae.

* refactor(bot): remove Redis integration from bot configuration

- Eliminated Redis instance and related storage client from the bot's configuration, streamlining the setup and reducing dependencies.
- Updated bot middleware to enhance performance and maintainability.

* Revert "refactor(bot): remove Redis integration from bot configuration"

This reverts commit 4fbbccb0a2967af0c92ff19fe337467347d9a91a.

* docker compose: format

* bot: fix production run (logger problem)

* docker-compose: add app network to redis
This commit is contained in:
Vlad Chikalkin 2025-08-27 11:37:15 +03:00 committed by GitHub
parent 81fa32c3d2
commit 0934417aaf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 38 additions and 28 deletions

View File

@ -25,7 +25,7 @@ jobs:
echo "EMAIL_GRAPHQL=fake@example.com" >> .env
echo "NEXTAUTH_SECRET=fakesecret" >> .env
echo "BOT_URL=http://localhost:3000" >> .env
echo "REDIS_PASSWORD=fake" > .env
echo "REDIS_PASSWORD=fake" >> .env
- name: Set image tags
id: vars

View File

@ -11,7 +11,7 @@ ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN apk add --no-cache libc6-compat && \
corepack enable && \
pnpm install turbo dotenv-cli --global
pnpm install turbo@2.3.2 dotenv-cli --global
FROM base AS pruner
ARG PROJECT

View File

@ -1,4 +1,3 @@
import { type logger } from '@/utils/logger';
import { type AutoChatActionFlavor } from '@grammyjs/auto-chat-action';
import { type CommandsFlavor } from '@grammyjs/commands';
import { type ConversationFlavor } from '@grammyjs/conversations';
@ -8,13 +7,7 @@ import { type Context as DefaultContext, type SessionFlavor } from 'grammy';
export type Context = ConversationFlavor<
HydrateFlavor<
AutoChatActionFlavor &
CommandsFlavor &
DefaultContext &
I18nFlavor &
SessionFlavor<SessionData> & {
logger: typeof logger;
}
AutoChatActionFlavor & CommandsFlavor & DefaultContext & I18nFlavor & SessionFlavor<SessionData>
>
>;

View File

@ -1,6 +1,7 @@
import { type Context } from '../context';
import { getUpdateInfo } from '../helpers/logging';
import { KEYBOARD_REMOVE } from '@/config/keyboards';
import { logger } from '@/utils/logger';
import { ERRORS } from '@repo/graphql/constants/errors';
import { type ErrorHandler } from 'grammy';
@ -11,7 +12,7 @@ export const errorHandler: ErrorHandler<Context> = async (error) => {
await ctx.reply(ctx.t(text), { ...KEYBOARD_REMOVE, parse_mode: 'HTML' });
ctx.logger.error({
logger.error({
err: error.error,
update: getUpdateInfo(ctx),
});

View File

@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { type Context } from '../context';
import { logger } from '@/utils/logger';
import { type Update } from '@grammyjs/types';
import { type Middleware } from 'grammy';
@ -11,7 +12,7 @@ export function getUpdateInfo(context: Context): Omit<Update, 'update_id'> {
export function logHandle(id: string): Middleware<Context> {
return (context, next) => {
context.logger.info({
logger.info({
msg: `Handle "${id}"`,
...(id.startsWith('unhandled') ? { update: getUpdateInfo(context) } : {}),
});

View File

@ -1,12 +1,13 @@
import { type Context } from '@/bot/context';
import { getUpdateInfo } from '@/bot/helpers/logging';
import { logger } from '@/utils/logger';
import { type Middleware } from 'grammy';
import { performance } from 'node:perf_hooks';
export function updateLogger(): Middleware<Context> {
return async (ctx, next) => {
ctx.api.config.use((previous, method, payload, signal) => {
ctx.logger.debug({
logger.debug({
method,
msg: 'Bot API call',
payload,
@ -15,7 +16,7 @@ export function updateLogger(): Middleware<Context> {
return previous(method, payload, signal);
});
ctx.logger.debug({
logger.debug({
msg: 'Update received',
update: getUpdateInfo(ctx),
});
@ -25,7 +26,7 @@ export function updateLogger(): Middleware<Context> {
return next();
} finally {
const endTime = performance.now();
ctx.logger.debug({
logger.debug({
elapsed: endTime - startTime,
msg: 'Update processed',
});

View File

@ -1,7 +1,7 @@
/* eslint-disable turbo/no-undeclared-env-vars */
import pino from 'pino';
export const logger = pino({
const logger = pino({
transport: {
level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
options: {
@ -11,3 +11,9 @@ export const logger = pino({
target: 'pino-pretty',
},
});
logger.info = logger.info.bind(logger);
logger.debug = logger.debug.bind(logger);
logger.error = logger.error.bind(logger);
export { logger };

View File

@ -11,7 +11,7 @@ ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN apk add --no-cache libc6-compat openssl && \
corepack enable && \
pnpm install turbo dotenv-cli --global
pnpm install turbo@2.3.2 dotenv-cli --global
FROM base AS pruner
ARG PROJECT

View File

@ -34,3 +34,6 @@ services:
timeout: 10s
retries: 3
start_period: 30s
volumes:
redis-data:

View File

@ -5,7 +5,7 @@ services:
- .env
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
test: ['CMD', 'curl', '-f', 'http://localhost:3000/']
interval: 10s
timeout: 3s
retries: 5
@ -22,7 +22,7 @@ services:
- redis
networks:
- app
redis:
image: redis:8-alpine
restart: always
@ -45,6 +45,11 @@ services:
timeout: 10s
retries: 3
start_period: 30s
networks:
- app
volumes:
redis-data:
networks:
app:

18
pnpm-lock.yaml generated
View File

@ -23,7 +23,7 @@ catalogs:
version: 2.2.2
autoprefixer:
specifier: ^10.4.20
version: 10.4.21
version: 10.4.20
dayjs:
specifier: ^1.11.3
version: 1.11.13
@ -35,7 +35,7 @@ catalogs:
version: 9.21.0
graphql:
specifier: ^16.9.0
version: 16.11.0
version: 16.9.0
husky:
specifier: ^9.1.7
version: 9.1.7
@ -44,13 +44,13 @@ catalogs:
version: 9.0.2
lint-staged:
specifier: ^15.2.10
version: 15.5.2
version: 15.2.10
lucide-react:
specifier: ^0.462.0
version: 0.462.0
postcss:
specifier: ^8.4.49
version: 8.5.6
version: 8.4.49
postcss-load-config:
specifier: ^6.0.1
version: 6.0.1
@ -59,7 +59,7 @@ catalogs:
version: 3.6.2
radashi:
specifier: ^12.5.1
version: 12.6.0
version: 12.5.1
react:
specifier: ^19.1.1
version: 19.1.1
@ -68,19 +68,19 @@ catalogs:
version: 19.1.1
tailwindcss:
specifier: ^3.4.15
version: 3.4.17
version: 3.4.15
typescript:
specifier: ^5.7
version: 5.8.3
version: 5.7.2
vite-tsconfig-paths:
specifier: ^5.1.4
version: 5.1.4
vitest:
specifier: ^2.1.8
version: 2.1.9
version: 2.1.8
zod:
specifier: ^3.24.1
version: 3.25.71
version: 3.24.1
importers: