build-reconfig
This commit is contained in:
@@ -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
|
||||
|
||||
26
CHANGELOG.md
26
CHANGELOG.md
@@ -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
690
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
10
Cargo.toml
10
Cargo.toml
@@ -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"
|
||||
|
||||
17
Dockerfile
17
Dockerfile
@@ -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 && \
|
||||
|
||||
Reference in New Issue
Block a user