90 lines
3.1 KiB
Markdown
90 lines
3.1 KiB
Markdown
# 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`)。
|