mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-10 20:04:36 +00:00
Use a better structure
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# CI/CD
|
||||
## CI/CD
|
||||
|
||||
**持续集成(Continuous integration)** 是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GitHub Actions
|
||||
## GitHub Actions
|
||||
|
||||
GitHub [Actions](https://github.com/features/actions) 是 GitHub 推出的一款 CI/CD 工具。
|
||||
|
||||
@@ -23,6 +23,6 @@ jobs:
|
||||
args: go version
|
||||
```
|
||||
|
||||
## 参考资料
|
||||
### 参考资料
|
||||
|
||||
* [Actions Docs](https://docs.github.com/en/actions)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# DevOps 工作流完整示例
|
||||
## DevOps 工作流完整示例
|
||||
|
||||
本章将演示一个基于 Docker, Kubernetes 和 Jenkins/GitLab CI 的完整 DevOps 工作流。
|
||||
|
||||
## 工作流概览
|
||||
### 工作流概览
|
||||
|
||||
1. **Code**: 开发人员提交代码到 GitLab。
|
||||
2. **Build**: GitLab CI 触发构建任务。
|
||||
@@ -12,25 +12,25 @@
|
||||
6. **Verify**: 人工或自动化验证。
|
||||
7. **Release (Production)**: 审批后自动部署到生产环境。
|
||||
|
||||
## 关键配置示例
|
||||
### 关键配置示例
|
||||
|
||||
### 1. Dockerfile (多阶段构建)
|
||||
#### 1. Dockerfile (多阶段构建)
|
||||
|
||||
```dockerfile
|
||||
# Build stage
|
||||
## Build stage
|
||||
FROM golang:1.18 AS builder
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
RUN go build -o main .
|
||||
|
||||
# Final stage
|
||||
## Final stage
|
||||
FROM alpine:latest
|
||||
WORKDIR /app
|
||||
COPY --from=builder /app/main .
|
||||
CMD ["./main"]
|
||||
```
|
||||
|
||||
### 2. GitLab CI (.gitlab-ci.yml)
|
||||
#### 2. GitLab CI (.gitlab-ci.yml)
|
||||
|
||||
```yaml
|
||||
stages:
|
||||
@@ -67,7 +67,7 @@ deploy_staging:
|
||||
- develop
|
||||
```
|
||||
|
||||
## 最佳实践
|
||||
### 最佳实践
|
||||
|
||||
1. **不可变基础设施**: 一旦镜像构建完成,在各个环境(Dev, Staging, Prod)中都应该使用同一个镜像 tag (通常是 commit hash),而不是重新构建。
|
||||
2. **配置分离**: 使用 ConfigMap 和 Secret 管理环境特定的配置,不要打包进镜像。
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Drone
|
||||
## Drone
|
||||
|
||||
基于 `Docker` 的 `CI/CD` 工具 `Drone` 所有编译、测试的流程都在 `Docker` 容器中进行。
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
本小节以 `GitHub` + `Drone` 来演示 `Drone` 的工作流程。当然在实际开发过程中,你的代码也许不在 GitHub 托管,那么你可以尝试使用 `Gogs` + `Drone` 来进行 `CI/CD`。
|
||||
|
||||
## Drone 关联项目
|
||||
### Drone 关联项目
|
||||
|
||||
在 Github 新建一个名为 `drone-demo` 的仓库。
|
||||
|
||||
打开我们已经 [部署好的 Drone 网站](install.md) 或者 [Drone Cloud](https://cloud.drone.io),使用 GitHub 账号登录,在界面中关联刚刚新建的 `drone-demo` 仓库。
|
||||
打开我们已经 [部署好的 Drone 网站](9.2_install.md) 或者 [Drone Cloud](https://cloud.drone.io),使用 GitHub 账号登录,在界面中关联刚刚新建的 `drone-demo` 仓库。
|
||||
|
||||
## 编写项目源代码
|
||||
### 编写项目源代码
|
||||
|
||||
初始化一个 git 仓库
|
||||
|
||||
@@ -72,7 +72,7 @@ trigger:
|
||||
└── app.go
|
||||
```
|
||||
|
||||
## 推送项目源代码到 GitHub
|
||||
### 推送项目源代码到 GitHub
|
||||
|
||||
```bash
|
||||
$ git add .
|
||||
@@ -82,7 +82,7 @@ $ git commit -m "test drone ci"
|
||||
$ git push origin master
|
||||
```
|
||||
|
||||
## 查看项目构建过程及结果
|
||||
### 查看项目构建过程及结果
|
||||
|
||||
打开我们部署好的 `Drone` 网站或者 Drone Cloud,即可看到构建结果。
|
||||
|
||||
@@ -92,7 +92,7 @@ $ git push origin master
|
||||
|
||||
本书 GitBook 也使用 Drone 进行 CI/CD,具体配置信息请查看本书根目录 [`.drone.yml`](../../../.drone.yml) 文件。
|
||||
|
||||
## 参考链接
|
||||
### 参考链接
|
||||
|
||||
* [Drone Github](https://github.com/drone/drone)
|
||||
* [Drone 文档](https://docs.drone.io/)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 部署 Drone
|
||||
## 部署 Drone
|
||||
|
||||
## 要求
|
||||
### 要求
|
||||
|
||||
* 拥有公网 IP、域名 (如果你不满足要求,可以尝试在本地使用 Gogs + Drone)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
* 对 `CI/CD` 有一定了解
|
||||
|
||||
## 新建 GitHub 应用
|
||||
### 新建 GitHub 应用
|
||||
|
||||
登录 GitHub,在 https://github.com/settings/applications/new 新建一个应用。
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
接下来查看这个应用的详情,记录 `Client ID` 和 `Client Secret`,之后配置 Drone 会用到。
|
||||
|
||||
## 配置 Drone
|
||||
### 配置 Drone
|
||||
|
||||
我们通过使用 `Docker Compose` 来启动 `Drone`,编写 `docker-compose.yml` 文件。
|
||||
|
||||
@@ -68,18 +68,18 @@ volumes:
|
||||
新建 `.env` 文件,输入变量及其值
|
||||
|
||||
```bash
|
||||
# 必填 服务器地址,例如 drone.domain.com
|
||||
## 必填 服务器地址,例如 drone.domain.com
|
||||
DRONE_SERVER_HOST=
|
||||
DRONE_SERVER_PROTO=https
|
||||
DRONE_RPC_SECRET=secret
|
||||
HOSTNAME=demo
|
||||
# 必填 在 GitHub 应用页面查看
|
||||
## 必填 在 GitHub 应用页面查看
|
||||
DRONE_GITHUB_CLIENT_ID=
|
||||
# 必填 在 GitHub 应用页面查看
|
||||
## 必填 在 GitHub 应用页面查看
|
||||
DRONE_GITHUB_CLIENT_SECRET=
|
||||
```
|
||||
|
||||
### 启动 Drone
|
||||
#### 启动 Drone
|
||||
|
||||
```bash
|
||||
$ docker-compose up -d
|
||||
|
||||
Reference in New Issue
Block a user