From 7216ffd60fa9d1a9ee65f0fab8694a67499123a9 Mon Sep 17 00:00:00 2001 From: Huarch Date: Mon, 17 Aug 2026 19:02:02 +0800 Subject: [PATCH] feat: add container CI/CD workflow --- .gitea/workflows/package.yml | 22 ++++++++++++++++++++++ Dockerfile | 6 ++++-- README.md | 11 +++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 .gitea/workflows/package.yml diff --git a/.gitea/workflows/package.yml b/.gitea/workflows/package.yml new file mode 100644 index 0000000..0760829 --- /dev/null +++ b/.gitea/workflows/package.yml @@ -0,0 +1,22 @@ +name: Frontend CI/CD + +on: + push: + tags: + - "v*" + workflow_dispatch: {} + +jobs: + build-test-publish-and-deploy: + uses: OrgTJWater/ci-templates/.gitea/workflows/container-cd.yml@main + with: + image_name: gitea.waternetwork.cn/orgtjwater/next-tjwater-frontend + dockerfile: Dockerfile + build_context: . + test_target: build + deploy_service: frontend + deploy_host: 192.168.1.114 + secrets: + REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + DEV_DEPLOY_SSH_KEY: ${{ secrets.DEV_DEPLOY_SSH_KEY }} diff --git a/Dockerfile b/Dockerfile index a4c1d03..df6c6b0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24-alpine AS build +FROM node:24-alpine@sha256:d32cdf619f63fe0471182d08996dd516c6275bb5fd31ae06e55a570bd9e1ad43 AS build WORKDIR /app RUN corepack enable @@ -9,7 +9,7 @@ RUN pnpm install --frozen-lockfile COPY . . RUN pnpm build -FROM caddy:2.10.2-alpine +FROM caddy:2.10.2-alpine@sha256:4c6e91c6ed0e2fa03efd5b44747b625fec79bc9cd06ac5235a779726618e530d RUN apk add --no-cache jq nodejs COPY Caddyfile /etc/caddy/Caddyfile @@ -19,5 +19,7 @@ COPY --from=build /app/dist-server/edge-tts-server.cjs /usr/local/lib/tjwater-fr RUN chmod 755 /usr/local/bin/tjwater-frontend-entrypoint EXPOSE 80 +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ + CMD wget --quiet --spider http://127.0.0.1/ || exit 1 ENTRYPOINT ["/usr/local/bin/tjwater-frontend-entrypoint"] CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"] diff --git a/README.md b/README.md index d6afd80..acd9fc2 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,17 @@ docker run --rm -p 8080:80 --env-file .env.local next-tjwater 启动后访问 `http://localhost:8080`。 +## CI/CD + +Gitea Actions 通过 `.gitea/workflows/package.yml` 复用 +`OrgTJWater/ci-templates` 的容器发布流程。手动触发只构建镜像并在 Dev +服务器运行候选验证;从 `main` 创建并推送 `v*` tag 后,候选验证通过才会 +提升为正式 `frontend` 服务。 + +仓库需要配置 `REGISTRY_USERNAME`、`REGISTRY_PASSWORD` 和 +`DEV_DEPLOY_SSH_KEY` 三个 Gitea Secrets。生产运行时配置由 Dev 服务器的 +`env/frontend.env` 注入,不写入镜像或仓库 Secret。 + ## 项目结构 ```text