- Update all woodpecker files to use internal registry
- Use Docker Hub credentials for base image pulls
- Add cache_from/cache_to for internal registry caching
- Remove GitHub Container Registry dependency
- Replace complex caching with simple Dockerfile
- Remove cargo-chef complexity that was slowing builds
- Add .woodpecker-base.yml for separate base image builds
- Add Dockerfile.simple for faster builds
- Add Dockerfile.ultrafast for when base image exists
- Add Dockerfile.fast with cargo-chef and symbol stripping
- Add Dockerfile.superfast using pre-built base image
- Add Dockerfile.base for dependency caching
- Update Woodpecker with registry cache (cache_from/cache_to)
- Add fast-build.sh for local ultra-fast builds
- Add build-base-image.sh for one-time dependency build
- Enable BuildKit layer caching in CI
- Update .woodpecker.yml with change detection step
- Add optimized Dockerfile.optimized support
- Add deployment step to Kubernetes
- Add woodpecker-local-build.sh for local testing
- Only build and deploy services with code changes
- Skip unchanged services for faster pipelines
- Add Dockerfile.optimized with cargo-chef caching
- Add build-changed.sh script to build only modified services
- Add deploy-changed.sh script for selective deployment
- Add comprehensive deployment optimization guide
- Support independent service rollouts (no full redeploy needed)
- Add GET /api/admin/email/smtp-config endpoint
- Add POST /api/admin/email/smtp-config endpoint
- Add POST /api/admin/email/smtp-test endpoint
- Add send_test_email method to Mailer
- Update SMTP management page with test functionality
- Add 35 branded HTML email templates with Nxtgauge styling
- Create email template engine with base template system
- Add email management API for admin panel
- Wire email triggers from all services
- All services compile successfully
Added openssl-libs-static and OPENSSL_STATIC=1 environment variable
to fix reqwest/native-tls compilation errors with musl target.
Changes:
- Install openssl-libs-static in builder
- Set OPENSSL_STATIC=1 and OPENSSL_DIR=/usr
- Ensures OpenSSL is statically linked for all services
Switched from Debian to Alpine Linux for significant improvements:
- Image size: ~5MB vs ~100MB (95% smaller)
- Security: Minimal attack surface, no glibc vulnerabilities
- Static linking: No glibc version issues ever again
- Uses rust:alpine builder with x86_64-unknown-linux-musl target
- Static binaries with RUSTFLAGS='-C target-feature=+crt-static'
Fixes the GLIBC_2.38 error permanently by avoiding glibc entirely.
Fixed glibc version mismatch between rust:latest builder (glibc 2.38+)
and debian:bookworm-slim runtime (glibc 2.36). This was causing:
- ./companies: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.38 not found
- ./payments: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.38 not found
- Similar errors for users service
Updated all 19 service Dockerfiles + Dockerfile.template to use
debian:trixie-slim which includes glibc 2.38+.