Fix and update

This commit is contained in:
baohua
2026-02-09 11:34:35 -08:00
parent e669ee0fe8
commit 63377d0431
136 changed files with 2146 additions and 262 deletions

View File

@@ -1,7 +1,9 @@
## CI/CD
# CI/CD
**持续集成(Continuous integration)** 是一种软件开发实践每次集成都通过自动化的构建包括编译发布自动化测试来验证从而尽早地发现集成错误
**持续集成Continuous integration** 是一种软件开发实践每次集成都通过自动化的构建包括编译发布自动化测试来验证从而尽早地发现集成错误
**持续部署continuous deployment** 是通过自动化的构建测试和部署循环来快速交付高质量的产品
**持续部署(continuous deployment)** 是通过自动化的构建测试和部署循环来快速交付高质量的产品
`Jenkins` 不同的是基于 Docker CI/CD 每一步都运行在 Docker 容器中所以理论上支持所有的编程语言

View File

@@ -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)

View File

@@ -14,23 +14,33 @@
### 关键配置示例
#### 1. Dockerfile (多阶段构建)
#### 1. Dockerfile 多阶段构建
使用 Docker 多阶段构建可以有效减小镜像体积
Dockerfile 内容如下
```dockerfile
## Build stage
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o main .
## 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.gitlab-ci.yml配置如下
```yaml
stages:

View File

@@ -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 网站](9.2_install.md) 或者 [Drone Cloud](https://cloud.drone.io),使用 GitHub 账号登录,在界面中关联刚刚新建的 `drone-demo` 仓库。
### 编写项目源代码
## 编写项目源代码
初始化一个 git 仓库
@@ -72,7 +72,9 @@ trigger:
└── app.go
```
### 推送项目源代码到 GitHub
## 推送项目源代码到 GitHub
运行以下命令
```bash
$ git add .
@@ -82,7 +84,7 @@ $ git commit -m "test drone ci"
$ git push origin master
```
### 查看项目构建过程及结果
## 查看项目构建过程及结果
打开我们部署好的 `Drone` 网站或者 Drone Cloud即可看到构建结果
@@ -92,7 +94,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/)

View File

@@ -69,18 +69,23 @@ volumes:
```bash
## 必填 服务器地址,例如 drone.domain.com
DRONE_SERVER_HOST=
DRONE_SERVER_PROTO=https
DRONE_RPC_SECRET=secret
HOSTNAME=demo
## 必填 在 GitHub 应用页面查看
DRONE_GITHUB_CLIENT_ID=
## 必填 在 GitHub 应用页面查看
DRONE_GITHUB_CLIENT_SECRET=
```
#### 启动 Drone
运行以下命令
```bash
$ docker-compose up -d
```

View File

@@ -1,3 +1,3 @@
## IDE 中使用 Docker
# IDE 中使用 Docker
使用 IDE 进行开发往往要求本地安装好工具链一些 IDE 支持 Docker 容器中的工具链这样充分利用了 Docker 的优点而无需在本地安装

View File

@@ -1,5 +1,6 @@
## VS Code 中使用 Docker
### Docker 容器作为远程开发环境
无需本地安装开发工具直接将 Docker 容器作为开发环境具体参考 [官方文档](https://code.visualstudio.com/docs/remote/containers)。

View File

@@ -1,4 +1,4 @@
## 操作系统
# 操作系统
目前常用的 Linux 发行版主要包括 `Debian/Ubuntu` 系列和 `CentOS/Fedora` 系列
@@ -6,4 +6,5 @@
使用 Docker读者只需要一个命令就能快速获取一个 Linux 发行版镜像这是以往包括各种虚拟化技术都难以实现的这些镜像一般都很精简但是可以支持完整 Linux 系统的大部分功能
本章将介绍如何使用 Docker 安装和使用 `Busybox``Alphine``Debian/Ubuntu``CentOS/Fedora` 等操作系统
本章将介绍如何使用 Docker 安装和使用 `Busybox``Alpine``Debian/Ubuntu``CentOS/Fedora` 等操作系统

View File

@@ -4,7 +4,9 @@
![Alpine Linux 操作系统](../../_images/alpinelinux-logo.png)
`Alpine` 操作系统是一个面向安全的轻型 `Linux` 发行版它不同于通常 `Linux` 发行版`Alpine` 采用了 `musl libc` `busybox` 以减小系统的体积和运行时资源消耗但功能上比 `busybox` 又完善的多因此得到开源社区越来越多的青睐在保持瘦身的同时`Alpine` 还提供了自己的包管理工具 `apk`可以通过 `https://pkgs.alpinelinux.org/packages` 网站上查询包信息也可以直接通过 `apk` 命令直接查询和安装各种软件
`Alpine` 操作系统是一个面向安全的轻型 `Linux` 发行版它不同于通常 `Linux` 发行版`Alpine` 采用了 `musl libc` `busybox` 以减小系统的体积和运行时资源消耗但功能上比 `busybox` 又完善的多因此得到开源社区越来越多的青睐在保持瘦身的同时`Alpine` 还提供了自己的包管理工具 `apk`可以通过 [Alpine Packages](https://pkgs.alpinelinux.org/packages) 网站上查询包信息,也可以直接通过 `apk` 命令直接查询和安装各种软件。
`Alpine` 由非商业组织维护的支持广泛场景的 `Linux`发行版它特别为资深/重度`Linux`用户而优化关注安全性能和资源效能`Alpine` 镜像可以适用于更多常用场景并且是一个优秀的可以适用于生产的基础系统/环境
@@ -31,7 +33,8 @@ $ docker run alpine echo '123'
123
```
### 迁移至 `Alpine` 基础镜像
### 迁移至 Alpine 基础镜像
目前大部分 Docker 官方镜像都已经支持 `Alpine` 作为基础镜像可以很容易进行迁移

View File

@@ -4,6 +4,7 @@
![Busybox - Linux 瑞士军刀](../../_images/busybox-logo.png)
`BusyBox` 是一个集成了一百多个最常用 Linux 命令和工具 `cat``echo``grep``mount``telnet` 的精简工具箱它只需要几 MB 的大小很方便进行各种快速验证被誉为Linux 系统的瑞士军刀
`BusyBox` 可运行于多款 `POSIX` 环境的操作系统中 `Linux`包括 `Android``Hurd``FreeBSD`

View File

@@ -1,4 +1,5 @@
## CentOS Fedora
## CentOS Fedora
### CentOS 系统简介
@@ -6,10 +7,14 @@
![CentOS 操作系统](../../_images/centos-logo.png)
CentOSCommunity Enterprise Operating System中文意思是社区企业操作系统它是基于 `Red Hat Enterprise Linux` 源代码编译而成由于 `CentOS` `Redhat Linux` 源于相同的代码基础所以很多成本敏感且需要高稳定性的公司就使用 `CentOS` 来替代商业版 `Red Hat Enterprise Linux``CentOS` 自身不包含闭源软件
#### 使用 CentOS 官方镜像
CentOS 官方镜像的使用非常简单
**注意CentOS 8 已于 2021 12 31 日停止维护EOL对于新部署推荐使用 CentOS Stream Rocky LinuxAlmaLinux 等替代发行版**
使用 `docker run` 直接运行 `CentOS 7` 镜像并登录 `bash`
@@ -29,6 +34,7 @@ CentOS Linux release 7.9.2009 (Core)
![Fedora 操作系统](../../_images/fedora-logo.png)
`Fedora` `Fedora Project` 社区开发红帽公司赞助的 `Linux` 发行版它的目标是创建一套新颖多功能并且自由和开源的操作系统`Fedora` 的功能对于用户而言它是一套功能完备的可以更新的免费操作系统而对赞助商 `Red Hat` 而言它是许多新技术的测试平台被认为可用的技术最终会加入到 `Red Hat Enterprise Linux`
#### 使用 Fedora 官方镜像

View File

@@ -6,7 +6,8 @@
![Debian 操作系统](../../_images/debian-logo.png)
`Debian` 是由 `GPL` 和其他自由软件许可协议授权的自由软件组成的操作系统 **Debian 计划Debian Project** 组织维护**Debian 计划** 是一个独立的分散的组织 `3000` 人志愿者组成接受世界多个非盈利组织的资金支持`Software in the Public Interest` 提供支持并持有商标作为保护机构`Debian` 以其坚守 `Unix` 和自由软件的精神以及其给予用户的众多选择而闻名现时 `Debian` 包括了超过 `25,000` 个软件包并支持 `12` 个计算机系统结构
`Debian` 是由 `GPL` 和其他自由软件许可协议授权的自由软件组成的操作系统 **Debian 计划Debian Project**组织维护**Debian 计划** 是一个独立的分散的组织 `3000` 人志愿者组成接受世界多个非盈利组织的资金支持`Software in the Public Interest` 提供支持并持有商标作为保护机构`Debian` 以其坚守 `Unix` 和自由软件的精神以及其给予用户的众多选择而闻名现时 `Debian` 包括了超过 `25,000` 个软件包并支持 `12` 个计算机系统结构
`Debian` 作为一个大的系统组织框架其下有多种不同操作系统核心的分支计划主要为采用 `Linux` 核心的 `Debian GNU/Linux` 系统其他还有采用 `GNU Hurd` 核心的 `Debian GNU/Hurd` 系统采用 `FreeBSD` 核心的 `Debian GNU/kFreeBSD` 系统以及采用 `NetBSD` 核心的 `Debian GNU/NetBSD` 系统甚至还有利用 `Debian` 的系统架构和工具采用 `OpenSolaris` 核心构建而成的 `Nexenta OS` 系统在这些 `Debian` 系统中以采用 `Linux` 核心的 `Debian GNU/Linux` 最为著名
@@ -14,6 +15,9 @@
#### 使用 Debian 官方镜像
Debian 是一个也是一个常用的基础镜像
官方提供了大家熟知的 `debian` 镜像以及面向科研领域的 `neurodebian` 镜像可以使用 `docker run` 直接运行 `Debian` 镜像
```bash
@@ -28,10 +32,14 @@ Debian GNU/Linux 8
![Ubuntu 操作系统](../../_images/ubuntu-logo.jpg)
`Ubuntu` 是一个以桌面应用为主的 `GNU/Linux` 操作系统其名称来自非洲南部祖鲁语或豪萨语的ubuntu一词官方译名友帮拓另有吾帮托乌班图有奔头乌斑兔等译名`Ubuntu` 意思是人性以及我的存在是因为大家的存在是非洲传统的一种价值观类似华人社会的仁爱思想 `Ubuntu` 基于 `Debian` 发行版和 `GNOME/Unity` 桌面环境 `Debian` 的不同在于它每 6 个月会发布一个新版本 2 年推出一个长期支持 **Long Term SupportLTS** 版本一般支持 3 年时间
#### 使用 Ubuntu 官方镜像
Ubuntu 是目前最流行的 Linux 发行版之一
下面以 `ubuntu:24.04` 为例演示如何使用该镜像安装一些常用软件
首先使用 `-ti` 参数启动容器登录 `bash`查看 `ubuntu` 的发行版本号