Nik Afiq 1c3b10bdca
All checks were successful
CI / build-tts-sidecar (push) Has been skipped
CI / changes (push) Successful in 7s
CI / test (push) Successful in 6s
CI / build-ai-gateway (push) Successful in 1m10s
CI / build-ha-gateway (push) Successful in 52s
CI / build-discord-bot (push) Successful in 53s
CI / build-tts-gateway (push) Successful in 5m25s
Enhance CI/CD pipeline and Dockerfile optimizations
- Updated CI workflow to run `go vet` and `go test` for all modules on every push/PR.
- Implemented a `changes` job to rebuild only affected Docker images based on modified paths.
- Introduced caching for Docker builds to speed up subsequent runs by leveraging registry-based cache.
- Modified Dockerfiles for `ai-gateway`, `discord-bot`, `ha-gateway`, and `tts-gateway` to copy `go.mod` and `go.sum` files first, allowing for better caching of dependencies.
- Added `go.sum` file for `tts-gateway` to ensure proper dependency management.
- Ensured that `go mod download` is executed in the correct order to optimize layer caching.
2026-07-24 23:24:59 +09:00

45 lines
1.6 KiB
Docker

# Unlike ha-gateway/ai-gateway/discord-bot, tts-gateway needs `ffmpeg` and the
# `open_jtalk` CLI (+ dictionary + voice) present at runtime, which rules out
# a distroless base - hence the Ubuntu runtime stage below instead. Model
# artifact distribution for the inference sidecar (tts-gateway/sidecar/) is
# still an open decision (TTS_GATEWAY_PLAN.md Phase 5); this image is only the
# Go gateway, which has no model weights to worry about.
FROM golang:1.26-bookworm AS builder
WORKDIR /workspace
COPY go.work go.work.sum ./
# Manifests only, copied first, so `go mod download` gets its own cache layer
# invalidated only by dependency changes - not by every source edit below.
COPY gen/go.mod gen/go.sum ./gen/
COPY ai-gateway/go.mod ai-gateway/go.sum ./ai-gateway/
COPY ha-gateway/go.mod ha-gateway/go.sum ./ha-gateway/
COPY discord-bot/go.mod discord-bot/go.sum ./discord-bot/
COPY tts-gateway/go.mod tts-gateway/go.sum ./tts-gateway/
WORKDIR /workspace/tts-gateway
RUN go mod download
WORKDIR /workspace
COPY gen/ ./gen/
COPY ai-gateway/ ./ai-gateway/
COPY ha-gateway/ ./ha-gateway/
COPY discord-bot/ ./discord-bot/
COPY tts-gateway/ ./tts-gateway/
WORKDIR /workspace/tts-gateway
RUN CGO_ENABLED=0 GOOS=linux go build -o /tts-gateway ./cmd/gateway
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg \
open-jtalk \
open-jtalk-mecab-naist-jdic \
hts-voice-nitech-jp-atr503-m001 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /tts-gateway /tts-gateway
EXPOSE 50053
ENTRYPOINT ["/tts-gateway"]