# Speakr CI/CD 设置 本文档解释了 Speakr 项目的持续集成和持续部署(CI/CD)流水线是如何设置的。 ## 自动 Docker 镜像构建与发布 Speakr 项目使用 GitHub Actions 在代码推送到仓库时自动构建 Docker 镜像并发布到 Docker Hub。 ### 工作原理 1. 当代码推送到 `master` 分支或创建新标签(格式为 `v*.*.*`)时,GitHub Actions 工作流将被触发。 2. 工作流使用项目的 Dockerfile 构建 Docker 镜像。 3. 如果触发原因是推送到 `master` 分支,镜像将被标记为: - `latest` - 提交的短 SHA 值 - 分支名称(`master`) 4. 如果触发原因是新标签(例如 `v1.2.3`),镜像将被标记为: - 完整版本号(`1.2.3`) - 主.次版本号(`1.2`) - 标签名称(`v1.2.3`) 5. 然后镜像会被推送到你账户下的 Docker Hub。 ### 设置步骤 要设置自动 Docker 镜像发布,请按照以下步骤操作: 1. **创建 Docker Hub 账户**(如果你还没有的话): - 访问 [Docker Hub](https://hub.docker.com/) 并注册账户。 - 创建一个名为 `speakr` 的仓库。 2. **创建 Docker Hub 访问令牌**: - 登录 Docker Hub。 - 点击右上角的用户名,选择"Account Settings"进入账户设置。 - 导航到"Security"选项卡。 - 点击"New Access Token"。 - 给令牌取个名字(例如"GitHub Actions")并设置适当的权限(至少需要"Read & Write")。 - 复制生成的令牌(你将无法再次看到它)。 3. **将 Docker Hub 凭据添加到 GitHub Secrets**: - 进入你的 GitHub 仓库。 - 点击"Settings" > "Secrets and variables" > "Actions"。 - 点击"New repository secret"。 - 添加以下密钥: - 名称:`DOCKERHUB_USERNAME`,值:你的 Docker Hub 用户名 - 名称:`DOCKERHUB_TOKEN`,值:你在上一步生成的访问令牌 4. **验证工作流**: - 工作流文件位于 `.github/workflows/docker-publish.yml`。 - 它已经配置好可以构建并推送 Docker 镜像到 Docker Hub。 - 如果需要,你可以进一步自定义它。 5. **触发工作流**: - 推送更改到 `master` 分支或创建新标签来触发工作流。 - 进入 GitHub 仓库的"Actions"选项卡来监控工作流进度。 ### 使用已发布的 Docker 镜像 镜像发布到 Docker Hub 后,你可以在 docker-compose.yml 文件中使用它们: ```yaml version: '3.8' services: app: image: learnedmachine/speakr:latest container_name: speakr restart: unless-stopped ports: - "8899:8899" volumes: - ./uploads:/data/uploads - ./instance:/data/instance env_file: - .env ``` ### 版本控制策略 要创建新版本的应用程序: 1. 进行更改并提交到仓库。 2. 按照语义化版本控制创建新标签: ```bash git tag v1.0.0 # 替换为适当的版本号 git push origin v1.0.0 ``` 3. GitHub Actions 工作流将自动构建并发布带有相应版本标签的新 Docker 镜像。 这样用户可以选择使用最新版本(`learnedmachine/speakr:latest`)或特定版本(`learnedmachine/speakr:1.0.0`)。