docs: add CI/CD guide
This commit is contained in:
1 parent
6008228d69
commit
2e7a10de10
1 file changed
+83
@@ -0,0 +1,83 @@
|
||||
# CI/CD 自动构建与发布指南
|
||||
|
||||
本项目使用 GitHub Actions 自动构建 Docker 镜像并推送到 Docker Hub。
|
||||
|
||||
## 一次性配置 GitHub Secrets
|
||||
|
||||
进入仓库 **Settings → Secrets and variables → Actions**,添加以下两个 Secret:
|
||||
|
||||
| Secret 名称 | 值 |
|
||||
|---|---|
|
||||
| `DOCKERHUB_USERNAME` | 你的 Docker Hub 用户名 |
|
||||
| `DOCKERHUB_TOKEN` | Docker Hub 的 **Access Token**(不是密码)|
|
||||
|
||||
**获取 Access Token**:登录 [hub.docker.com](https://hub.docker.com) → Account Settings → Security → **New Access Token**
|
||||
|
||||
---
|
||||
|
||||
## 自动 Tag 规则
|
||||
|
||||
| 触发方式 | 生成的镜像 Tag |
|
||||
|---|---|
|
||||
| 推送到 `main` 分支 | `yourname/webssh:main` + `yourname/webssh:latest` |
|
||||
| 推送 `v1.2.3` tag | `yourname/webssh:1.2.3` + `yourname/webssh:1.2` + `yourname/webssh:latest` |
|
||||
|
||||
---
|
||||
|
||||
## 发版流程
|
||||
|
||||
```bash
|
||||
# 日常开发 → 自动打 :latest
|
||||
git push origin main
|
||||
|
||||
# 正式发版 → 打版本号 tag
|
||||
git tag v1.0.0
|
||||
git push origin v1.0.0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 镜像说明
|
||||
|
||||
构建出的镜像**不包含数据库**,数据库通过环境变量在运行时注入。
|
||||
|
||||
### 方式一:docker run
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name webssh-app \
|
||||
-p 3000:3000 \
|
||||
-e DB_HOST=your-mysql-host \
|
||||
-e DB_PORT=3306 \
|
||||
-e DB_USER=webssh_user \
|
||||
-e DB_PASSWORD=your-db-password \
|
||||
-e DB_NAME=webssh \
|
||||
-e JWT_SECRET=your-jwt-secret \
|
||||
-e ENCRYPTION_KEY=your-32-byte-encryption-key \
|
||||
dalaolala/webssh:latest
|
||||
```
|
||||
|
||||
### 方式二:docker-compose(推荐)
|
||||
|
||||
```bash
|
||||
# 初始化数据库(只需一次)
|
||||
mysql -u root -p < install.sql
|
||||
|
||||
# 启动应用
|
||||
docker-compose -f docker-compose.external-db.yml up -d
|
||||
```
|
||||
|
||||
> [!IMPORTANT]
|
||||
> `ENCRYPTION_KEY` 一旦设置后**不能更改**,否则已保存的服务器密码将无法解密。
|
||||
>
|
||||
> 生成随机 Key:`node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"`
|
||||
|
||||
---
|
||||
|
||||
## 优化说明
|
||||
|
||||
| 特性 | 说明 |
|
||||
|---|---|
|
||||
| **构建缓存** `cache-from/to: type=gha` | 利用 GitHub Actions 缓存 Docker layer,二次构建大幅提速(npm install 层不重复执行)|
|
||||
| **多架构** `linux/amd64,linux/arm64` | 同时支持 x86 服务器和 ARM(树莓派、Apple Silicon)|
|
||||
| **Access Token** | 比密码更安全,可随时在 Docker Hub 吊销 |
|
||||
Reference in new issue
Block a user