build-reconfig
This commit is contained in:
@@ -1,15 +1,19 @@
|
|||||||
[build]
|
[build]
|
||||||
# Limit parallel compilation to reduce memory usage
|
# Extreme memory optimization for CI/CD environments
|
||||||
jobs = 1
|
jobs = 1
|
||||||
|
incremental = false
|
||||||
|
|
||||||
|
# Global rust flags for ultimate memory conservation
|
||||||
[target.x86_64-unknown-linux-gnu]
|
[target.x86_64-unknown-linux-gnu]
|
||||||
# Aggressive memory optimization for CI/CD environments
|
|
||||||
rustflags = [
|
rustflags = [
|
||||||
"-C", "link-arg=-Wl,--no-keep-memory",
|
"-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", "codegen-units=1",
|
||||||
"-C", "debuginfo=0",
|
"-C", "debuginfo=0",
|
||||||
"-C", "opt-level=s",
|
"-C", "opt-level=s",
|
||||||
|
"-C", "panic=abort",
|
||||||
|
"-C", "strip=symbols",
|
||||||
]
|
]
|
||||||
|
|
||||||
# Profile for optimized builds with lower memory usage
|
# 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
|
### Fixed
|
||||||
- 🔧 **Агрессивная оптимизация Docker сборки** - решена проблема превышения памяти при компиляции AWS SDK
|
- 🔧 **ЭКСТРЕМАЛЬНАЯ оптимизация Docker сборки** - комплексное решение проблемы превышения памяти при компиляции AWS SDK
|
||||||
- 🔧 Добавлена конфигурация `.cargo/config.toml` с максимальными оптимизациями компилятора
|
- 🔧 Радикальное уменьшение features AWS SDK и зависимостей
|
||||||
- 🔧 Ограничение параллельных задач сборки до 1 (`jobs = 1`) для экономии памяти
|
- 🔧 Конфигурация `.cargo/config.toml` с максимальными оптимизациями компилятора
|
||||||
- 🔧 Оптимизированные флаги линковщика и отключение debug info
|
- 🔧 Отключение incremental compilation и default features для major dependencies
|
||||||
- 🔧 Временный swap файл в Docker для критических случаев нехватки памяти
|
- 🔧 Оптимизированные флаги линковщика включая `panic=abort` и `strip=symbols`
|
||||||
- 🔧 Альтернативный `Dockerfile.minimal` для сред с экстремальными ограничениями
|
- 🔧 Увеличенный swap файл (2GB) с настройкой swappiness в Docker
|
||||||
|
- 🔧 `Cargo.minimal.toml` fallback для экстремально ограниченных сред
|
||||||
- 🔧 `.dockerignore` для уменьшения контекста сборки
|
- 🔧 `.dockerignore` для уменьшения контекста сборки
|
||||||
|
|
||||||
### Technical Details
|
### Technical Details
|
||||||
- **Компилятор**: `opt-level = "s"`, `debuginfo = 0`, `codegen-units = 1`
|
- **Компилятор**: `opt-level = "s"`, `debuginfo = 0`, `codegen-units = 1`, `panic = abort`
|
||||||
- **Профили**: thin LTO, отключение debug info в dev и release
|
- **Профили**: thin LTO, отключение incremental compilation, `strip = symbols`
|
||||||
- **Docker**: временный swap 1GB, поэтапная очистка памяти
|
- **Docker**: увеличенный swap 2GB, настройка swappiness = 60
|
||||||
- **Линковщик**: `--no-keep-memory`, `--reduce-memory-overheads`
|
- **Линковщик**: `--no-keep-memory`, `--reduce-memory-overheads`, `--gc-sections`
|
||||||
- **Fallback**: Dockerfile.minimal без dependency caching для критических случаев
|
- **Dependencies**: minimal AWS SDK features, отключение default features для image/tokio/sentry
|
||||||
|
- **Fallback**: `Cargo.minimal.toml` для критических случаев без AWS SDK
|
||||||
|
|
||||||
## [0.5.0] - 2025-09-01
|
## [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"] }
|
sentry = { version = "0.42", features = ["tokio"] }
|
||||||
uuid = { version = "1.18.0", features = ["v4"] }
|
uuid = { version = "1.18.0", features = ["v4"] }
|
||||||
redis = { version = "0.32.5", features = ["tokio-comp"] }
|
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"] }
|
serde = { version = "1.0.219", features = ["derive"] }
|
||||||
sentry-actix = "0.42"
|
sentry-actix = { version = "0.42", default-features = false }
|
||||||
aws-sdk-s3 = "1.104.0"
|
aws-sdk-s3 = { version = "1.104.0", default-features = false, features = ["rt-tokio", "rustls"] }
|
||||||
image = "0.25.7"
|
image = { version = "0.25.6", default-features = false, features = ["jpeg", "png", "webp", "tiff"] }
|
||||||
mime_guess = "2.0.5"
|
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"
|
actix-multipart = "0.7.2"
|
||||||
log = "0.4.22"
|
log = "0.4.22"
|
||||||
env_logger = "0.11.8"
|
env_logger = "0.11.8"
|
||||||
|
|||||||
17
Dockerfile
17
Dockerfile
@@ -1,11 +1,13 @@
|
|||||||
# Build stage with memory optimization
|
# Build stage with memory optimization
|
||||||
FROM rust:slim-bookworm AS build
|
FROM rust:slim-bookworm AS build
|
||||||
|
|
||||||
# Create temporary swap file to help with memory-intensive compilation
|
# Create larger temporary swap file for extreme memory optimization
|
||||||
RUN dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024 && \
|
RUN dd if=/dev/zero of=/tmp/swapfile bs=1M count=2048 && \
|
||||||
chmod 600 /tmp/swapfile && \
|
chmod 600 /tmp/swapfile && \
|
||||||
mkswap /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
|
# Install build dependencies
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
@@ -35,9 +37,14 @@ COPY ./Cargo.lock ./Cargo.lock
|
|||||||
COPY ./Cargo.toml ./Cargo.toml
|
COPY ./Cargo.toml ./Cargo.toml
|
||||||
COPY ./.cargo ./.cargo
|
COPY ./.cargo ./.cargo
|
||||||
|
|
||||||
# Cache dependencies with memory optimization
|
# Extreme memory optimization environment variables
|
||||||
ENV CARGO_NET_GIT_FETCH_WITH_CLI=true
|
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 && \
|
RUN cargo build --release 2>&1 | head -100 && \
|
||||||
# Force cleanup of intermediate files to free memory
|
# Force cleanup of intermediate files to free memory
|
||||||
cargo clean -p quoter && \
|
cargo clean -p quoter && \
|
||||||
|
|||||||
Reference in New Issue
Block a user