build-reconfig
Some checks failed
Deploy / deploy (push) Has been skipped
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled

This commit is contained in:
2025-09-02 09:09:34 +03:00
parent 1aace5fd19
commit b1270c5cb6
5 changed files with 43 additions and 712 deletions

View File

@@ -1,15 +1,19 @@
[build]
# Limit parallel compilation to reduce memory usage
# Extreme memory optimization for CI/CD environments
jobs = 1
incremental = false
# Global rust flags for ultimate memory conservation
[target.x86_64-unknown-linux-gnu]
# Aggressive memory optimization for CI/CD environments
rustflags = [
"-C", "link-arg=-Wl,--no-keep-memory",
"-C", "link-arg=-Wl,--reduce-memory-overheads",
"-C", "link-arg=-Wl,--reduce-memory-overheads",
"-C", "link-arg=-Wl,--gc-sections",
"-C", "codegen-units=1",
"-C", "debuginfo=0",
"-C", "debuginfo=0",
"-C", "opt-level=s",
"-C", "panic=abort",
"-C", "strip=symbols",
]
# Profile for optimized builds with lower memory usage

View File

@@ -1,20 +1,22 @@
## [0.5.1] - 2025-01-28
## [0.5.1] - 2025-09-02
### Fixed
- 🔧 **Агрессивная оптимизация Docker сборки** - решена проблема превышения памяти при компиляции AWS SDK
- 🔧 Добавлена конфигурация `.cargo/config.toml` с максимальными оптимизациями компилятора
- 🔧 Ограничение параллельных задач сборки до 1 (`jobs = 1`) для экономии памяти
- 🔧 Оптимизированные флаги линковщика и отключение debug info
- 🔧 Временный swap файл в Docker для критических случаев нехватки памяти
- 🔧 Альтернативный `Dockerfile.minimal` для сред с экстремальными ограничениями
- 🔧 **ЭКСТРЕМАЛЬНАЯ оптимизация Docker сборки** - комплексное решение проблемы превышения памяти при компиляции AWS SDK
- 🔧 Радикальное уменьшение features AWS SDK и зависимостей
- 🔧 Конфигурация `.cargo/config.toml` с максимальными оптимизациями компилятора
- 🔧 Отключение incremental compilation и default features для major dependencies
- 🔧 Оптимизированные флаги линковщика включая `panic=abort` и `strip=symbols`
- 🔧 Увеличенный swap файл (2GB) с настройкой swappiness в Docker
- 🔧 `Cargo.minimal.toml` fallback для экстремально ограниченных сред
- 🔧 `.dockerignore` для уменьшения контекста сборки
### Technical Details
- **Компилятор**: `opt-level = "s"`, `debuginfo = 0`, `codegen-units = 1`
- **Профили**: thin LTO, отключение debug info в dev и release
- **Docker**: временный swap 1GB, поэтапная очистка памяти
- **Линковщик**: `--no-keep-memory`, `--reduce-memory-overheads`
- **Fallback**: Dockerfile.minimal без dependency caching для критических случаев
- **Компилятор**: `opt-level = "s"`, `debuginfo = 0`, `codegen-units = 1`, `panic = abort`
- **Профили**: thin LTO, отключение incremental compilation, `strip = symbols`
- **Docker**: увеличенный swap 2GB, настройка swappiness = 60
- **Линковщик**: `--no-keep-memory`, `--reduce-memory-overheads`, `--gc-sections`
- **Dependencies**: minimal AWS SDK features, отключение default features для image/tokio/sentry
- **Fallback**: `Cargo.minimal.toml` для критических случаев без AWS SDK
## [0.5.0] - 2025-09-01

690
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,13 +12,13 @@ reqwest = { version = "0.12.23", features = ["json"] }
sentry = { version = "0.42", features = ["tokio"] }
uuid = { version = "1.18.0", features = ["v4"] }
redis = { version = "0.32.5", features = ["tokio-comp"] }
tokio = { version = "1.47.1", features = ["full"] }
tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros", "fs", "net"] }
serde = { version = "1.0.219", features = ["derive"] }
sentry-actix = "0.42"
aws-sdk-s3 = "1.104.0"
image = "0.25.7"
sentry-actix = { version = "0.42", default-features = false }
aws-sdk-s3 = { version = "1.104.0", default-features = false, features = ["rt-tokio", "rustls"] }
image = { version = "0.25.6", default-features = false, features = ["jpeg", "png", "webp", "tiff"] }
mime_guess = "2.0.5"
aws-config = "1.8.6"
aws-config = { version = "1.8.6", default-features = false, features = ["rt-tokio", "rustls"] }
actix-multipart = "0.7.2"
log = "0.4.22"
env_logger = "0.11.8"

View File

@@ -1,11 +1,13 @@
# Build stage with memory optimization
FROM rust:slim-bookworm AS build
# Create temporary swap file to help with memory-intensive compilation
RUN dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024 && \
# Create larger temporary swap file for extreme memory optimization
RUN dd if=/dev/zero of=/tmp/swapfile bs=1M count=2048 && \
chmod 600 /tmp/swapfile && \
mkswap /tmp/swapfile && \
swapon /tmp/swapfile || true
swapon /tmp/swapfile || true && \
# Set swappiness to use swap more aggressively
echo 60 > /proc/sys/vm/swappiness || true
# Install build dependencies
RUN apt-get update && \
@@ -35,9 +37,14 @@ COPY ./Cargo.lock ./Cargo.lock
COPY ./Cargo.toml ./Cargo.toml
COPY ./.cargo ./.cargo
# Cache dependencies with memory optimization
# Extreme memory optimization environment variables
ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
# Build dependencies only
ENV CARGO_NET_RETRY=3
ENV CARGO_NET_TIMEOUT=60
ENV CARGO_HTTP_TIMEOUT=60
ENV CARGO_HTTP_LOW_SPEED_LIMIT=10
ENV RUSTC_FORCE_INCREMENTAL=0
# Build dependencies only with extreme memory conservation
RUN cargo build --release 2>&1 | head -100 && \
# Force cleanup of intermediate files to free memory
cargo clean -p quoter && \