Kubernetes/CICD/Drone/README.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

362 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
# DronePlugins构建Docker镜像
## 准备环境
- 克隆仓库到本地
```bash
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
```
- 修改 Dockerfile 并上传至自己的仓库
- 进入 Drone Web页面点击 SYNC 同步仓库
- 点击 ACTIVATE REPOSITORY 激活存储库
- 点击 Settings 配置 Secrets
| 变量名 | 解释 | 例 |
| :-------------: | :--------------: | :---------------------------------------------------: |
| REGISTRY | 镜像仓库地址 | registry.cn-hangzhou.aliyuncs.com |
| DOCKER_USERNAME | 镜像仓库登录用户 | |
| DOCKER_PASSWORD | 镜像仓库登录密码 | |
| REPO | 镜像的仓库名称 | registry.cn-hangzhou.aliyuncs.com/<命名空间>/<镜像名> |
## 插件 plugins/docker 参数
[官网文档](https://plugins.drone.io/plugins/docker)
| 属性 | 类型 | 可选/必选 | 描述 | 默认值 |
| ------------------- | ------ | --------- | ------------------------------------------------------------ | ------------ |
| registry | 字符串 | 可选 | 身份验证到该注册表的注册表 | 无 |
| username | 字符串 | 可选 | 使用此用户名进行身份验证 | 无 |
| password | 字符串 | 可选 | 使用此密码进行身份验证 | 推荐使用密钥 |
| repo | 字符串 | 可选 | 图像的仓库名称 | 无 |
| tags | 数组 | 可选 | 图像的仓库标签 | 无 |
| secret | 字符串 | 可选 | 使用buildkit将秘密传递给dockerbuild。例如`id=mysecretsrc=secret-file` | 无 |
| dockerfile | 字符串 | 可选 | 要使用的Dockerfile | Dockerfile |
| dry_run | 字符串 | 可选 | 如果不应在最后推送Docker镜像则为布尔值 | 无 |
| purge | 布尔值 | 可选 | 如果应在最后清理Docker镜像则为布尔值 | true |
| context | 字符串 | 可选 | 要使用的上下文路径默认为git存储库的根目录 | 无 |
| target | 字符串 | 可选 | 要使用的构建目标必须在Docker文件中定义 | 无 |
| force_tag | 布尔值 | 可选 | 替换现有匹配的镜像标签 | false |
| insecure | 布尔值 | 可选 | 启用与此注册表的不安全通信 | false |
| mirror | 字符串 | 可选 | 使用镜像注册表而不是直接从中央Hub拉取图像 | 无 |
| bip | 布尔值 | 可选 | 用于传递桥接IP | false |
| custom_dns | 字符串 | 可选 | 为容器设置自定义DNS服务器 | 无 |
| custom_dns_search | 字符串 | 可选 | Docker守护程序DNS搜索域 | 无 |
| storage_driver | 字符串 | 可选 | 支持`aufs`、`overlay`或`vfs`驱动器 | 无 |
| storage_path | 字符串 | 可选 | Docker守护程序存储路径 | 无 |
| build_args | 字符串 | 可选 | 传递给docker build的自定义参数 | 无 |
| build_args_from_env | 字符串 | 可选 | 将环境变量作为docker build的自定义参数传递 | 无 |
| auto_tag | 布尔值 | 可选 | 根据git分支和git标签自动生成标签名称 | false |
| auto_tag_suffix | 字符串 | 可选 | 使用此后缀生成标签名称 | 无 |
| debug | 布尔值 | 可选 | 以详细调试模式启动docker守护进程 | false |
| launch_debug | 布尔值 | 可选 | 以详细调试模式启动docker守护进程 | false |
| mtu | 字符串 | 可选 | Docker守护程序自定义MTU设置 | 无 |
| ipv6 | 字符串 | 可选 | Docker守护程序IPv6网络 | 无 |
| experimental | 布尔值 | 可选 | Docker守护程序实验模式 | false |
| daemon_off | 布尔值 | 可选 | 不启动docker守护进程 | false |
| cache_from | 字符串 | 可选 | 考虑作为缓存源的镜像 | 无 |
| squash | 布尔值 | 可选 | 在构建时压缩层 | false |
| pull_image | 布尔值 | 可选 | 强制在构建时拉取基础镜像 | false |
| compress | 布尔值 | 可选 | 使用gzip压缩构建上下文 | false |
| custom_labels | 字符串 | 可选 | 附加的k=v标签 | 无 |
| label_schema | 字符串 | 可选 | label-schema标签 | 无 |
| email | 字符串 | 可选 | Docker电子邮件 | 无 |
| no_cache | 字符串 | 可选 | 不使用缓存的中间容器 | 无 |
| add_host | 字符串 | 可选 | 附加的主机:IP映射 | 无 |
| platform | 字符串 | 可选 | 指定构建输出的目标平台,例如`linux/amd64`、`linux/arm64`或`darwin/amd64` | 无 |
| ssh-agent-key | 字符串 | 可选 | 用于ssh直通的私钥参见https://docs.docker.com/engine/reference/commandline/buildx_build/#ssh | 推荐使用密钥 |
# Drone Webhook 通知构建结果
## 准备环境
- 克隆仓库到本地
```bash
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
```
- 修改 Dockerfile 并上传至自己的仓库
- 进入 Drone Web页面点击 SYNC 同步仓库
- 点击 ACTIVATE REPOSITORY 激活存储库
- 点击 Settings 修改 Configuration,修改后点击 SAVE CHANGES 保存
```bash
.drone-build-webhook.yml
```
- 配置 Secrets
| 变量名 | 解释 | 例 |
| :---------: | :-----------------: | :----------------------------------------------: |
| WEBHOOK_URL | 发送 Webhook 的 URL | https://open.feishu.cn/open-apis/bot/v2/hook/*** |
## 插件 plugins/webhook 参数
| 属性名 | 类型 | 必需性 | 描述 | 默认值 |
| ------------ | ------- | -------- | ------------------------ | ---------------- |
| urls | string | required | 发送 Webhook 的 URL | none |
| username | string | optional | 用于基本身份验证的用户名 | none |
| password | string | optional | 用于基本身份验证的密码 | none |
| SECRET | string | | 推荐使用的密钥 | none |
| method | string | optional | 请求使用的 HTTP 方法 | POST |
| content_type | string | optional | Webhook 的内容类型 | application/json |
| template | string | optional | Webhook 的自定义模板 | none |
| headers | array | optional | 自定义标头的映射 | none |
| skip_verify | boolean | optional | 跳过 SSL 验证 | false |
| debug | boolean | optional | 启用调试信息 | false |
# Drone Dind 构建 Docker 镜像
## 准备环境
- 克隆仓库到本地
```bash
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
```
- 修改 Dockerfile 并上传至自己的仓库
- 进入 Drone Web页面点击 SYNC 同步仓库
- 点击 ACTIVATE REPOSITORY 激活存储库
- 点击 Settings 开启 Trusted (未开启无法挂载Docker守护进程)
- 修改 Configuration,修改后点击 SAVE CHANGES 保存
```bash
.drone-dind.yml
```
- 配置 Secrets
| 变量名 | 解释 | 例 |
| :-------------: | :--------------: | :-------------------------------: |
| REGISTRY | 镜像仓库地址 | registry.cn-hangzhou.aliyuncs.com |
| DOCKER_USERNAME | 镜像仓库登录用户 | |
| DOCKER_PASSWORD | 镜像仓库登录密码 | |
| NAMESPACE | 镜像的仓库名称 | <命名空间> |
| IMAGENAME | 镜像名称 | |
| IMAGETAG | 镜像标签 | |
# Drone 构建多架构 Docker 镜像
## 准备环境
- 克隆仓库到本地
```bash
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
```
- 修改 Dockerfile 并上传至自己的仓库
- 进入 Drone Web页面点击 SYNC 同步仓库
- 点击 ACTIVATE REPOSITORY 激活存储库
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
```bash
.drone-buildx.yml
```
- 配置 Secrets
| 变量名 | 解释 | 例 |
| :-------------: | :--------------: | :---------------------------: |
| REGISTRY | 镜像仓库地址 | docker.io |
| DOCKER_USERNAME | 镜像仓库登录用户 | |
| DOCKER_PASSWORD | 镜像仓库登录密码 | |
| REPO | 镜像的仓库名称 | docker.io/<命名空间>/<镜像名> |
# Drone Scp 文件到服务器内
## 准备环境
- 克隆仓库到本地
```bash
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
```
- 修改 Dockerfile 并上传至自己的仓库
- 进入 Drone Web页面点击 SYNC 同步仓库
- 点击 ACTIVATE REPOSITORY 激活存储库
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
```bash
.drone-scp.yml
```
- 配置 Secrets
| 变量名 | 解释 | 例 |
| :------: | :----------------: | :----------: |
| HOST | 目标主机机器 | 192.168.1.10 |
| USER | 目标主机机器用户名 | Root |
| PASSWORD | 目标主机机器密码 | |
| PORT | 目标主机机器端口 | 22 |
## 插件 appleboy/drone-scp 参数
[官方文档](https://plugins.drone.io/plugins/scp)
| 属性名 | 类型 | 是否必需 | 描述 | 默认值 |
| -------------------- | ------ | -------- | ---------------------------- | ------ |
| host | 字符串 | 必需 | 目标主机机器。 | 无 |
| port | 数字 | 可选 | 目标主机机器端口。 | 22 |
| username | 字符串 | 必需 | 目标主机机器用户名。 | 无 |
| password | 字符串 | 必需 | 目标主机机器密码。 | 无 |
| key | 字符串 | 可选 | 目标主机机器私钥。建议保密。 | 无 |
| passphrase | 字符串 | 可选 | 私钥密码。建议保密。 | 无 |
| target | 字符串 | 必需 | 目标主机机器路径。 | 无 |
| source | 字符串 | 必需 | 源文件路径。 | 无 |
| rm | 布尔值 | 可选 | 复制后是否删除源文件。 | false |
| timeout | 数字 | 可选 | 超时时间(秒)。 | 30 |
| command_timeout | 数字 | 可选 | 命令超时时间(分钟)。 | 10 |
| strip_components | 数字 | 可选 | 从目标路径中去除的组件数。 | 0 |
| tar_tmp_path | 字符串 | 可选 | 用于临时存储tar文件的路径。 | 无 |
| tar_exec | 字符串 | 可选 | Tar命令。 | 无 |
| overwrite | 布尔值 | 可选 | 如果目标文件存在,是否覆盖。 | false |
| proxy_host | 字符串 | 可选 | 代理主机。 | 无 |
| proxy_port | 数字 | 可选 | 代理端口。 | 0 |
| proxy_username | 字符串 | 可选 | 代理用户名。 | 无 |
| proxy_password | 字符串 | 可选 | 代理密码。建议保密。 | 无 |
| proxy_key | 字符串 | 可选 | 代理私钥。建议保密。 | 无 |
| proxy_key_path | 字符串 | 可选 | 代理私钥路径。 | 无 |
| proxy_key_passphrase | 字符串 | 可选 | 代理私钥密码。建议保密。 | 无 |
# Drone Ssh 操作服务器
## 准备环境
- 克隆仓库到本地
```bash
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
```
- 修改 Dockerfile 并上传至自己的仓库
- 进入 Drone Web页面点击 SYNC 同步仓库
- 点击 ACTIVATE REPOSITORY 激活存储库
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
```bash
.drone-ssh.yml
```
- 配置 Secrets
| 变量名 | 解释 | 例 |
| :------: | :----------------: | :----------: |
| HOST | 目标主机机器 | 192.168.1.10 |
| USER | 目标主机机器用户名 | Root |
| PASSWORD | 目标主机机器密码 | |
| PORT | 目标主机机器端口 | 22 |
## 插件 appleboy/drone-ssh 参数
[官方文档](https://plugins.drone.io/plugins/ssh)
| 属性名 | 类型 | 是否必须 | 描述 | 默认值 |
| --------------- | ------ | -------- | ---------------------------- | -------------- |
| host | 字符串 | 必须 | 服务器的主机名或IP地址。 | 无 |
| port | 字符串 | 可选 | 服务器的端口。 | 22 |
| username | 字符串 | 可选 | 目标主机用户的帐户。 | 无 |
| password | 字符串 | 可选 | 登录到服务器的密码。 | 无(建议保密) |
| key | 字符串 | 可选 | 用户私钥的明文。 | 无(建议保密) |
| key_path | 字符串 | 可选 | 登录到服务器的私钥路径。 | 无 |
| envs | 数组 | 可选 | 在脚本部分可用的自定义秘密。 | 无 |
| script | 字符串 | 可选 | 在服务器上执行的命令。 | 无 |
| script_stop | 布尔值 | 可选 | 在第一次失败后停止脚本执行。 | false |
| timeout | 字符串 | 可选 | SSH连接建立的最长时间。 | 30秒 |
| command_timeout | 字符串 | 可选 | 执行命令的最长时间。 | 10分钟 |
| proxy_host | 字符串 | 可选 | 代理的主机名或IP地址。 | 无 |
| proxy_port | 字符串 | 可选 | 代理端口。 | 无 |
| proxy_username | 字符串 | 可选 | 代理用户名。 | 无 |
| proxy_password | 字符串 | 可选 | 代理密码。 | 无(建议保密) |
| proxy_key | 字符串 | 可选 | 代理私钥的明文。 | 无(建议保密) |
| proxy_key_path | 字符串 | 可选 | 登录到代理的私钥路径。 | 无 |
# Drone Git Push 代码
> 你不会,俺不会,大家一起都不会!
## 准备环境
- 克隆仓库到本地
```bash
git clone https://gitea.offends.cn/offends/Kubernetes.git && cd Kubernetes/CICD/Drone
```
- 修改 Dockerfile 并上传至自己的仓库
- 进入 Drone Web页面点击 SYNC 同步仓库
- 点击 ACTIVATE REPOSITORY 激活存储库
- 点击 Settings 下 General 修改 Configuration,修改后点击 SAVE CHANGES 保存
```bash
.drone-git-push.yml
```
- 配置 Secrets
| 变量名 | 解释 | 例 |
| :-----: | :-------------------: | :-----------------------: |
| REMOTE | 目标远程仓库 | <仓库 clone 地址> |
| SSH_KEY | 远程机器的私有SSH密钥 | <应该是 .ssh/id_rsa 文件> |
## 插件 appleboy/drone-git-push 参数
[官方文档](https://plugins.drone.io/plugins/git-push)
| 属性名 | 类型 | 是否必须 | 描述 | 默认值 |
| -------------- | ------ | -------- | -------------------------------------- | ---------------------------- |
| ssh_key | 字符串 | 可选 | 远程机器的私有SSH密钥。 | 无 |
| remote | 字符串 | 必须 | 目标远程仓库(如果为空,则假定存在)。 | 无 |
| remote_name | 字符串 | 可选 | 用于本地操作的远程的名称。 | deploy |
| branch | 字符串 | 可选 | 要推送到的目标分支。 | master |
| local_branch | 字符串 | 可选 | 从中推送的本地分支或引用。 | HEAD |
| path | 字符串 | 可选 | 仓库的路径。 | 当前仓库 |
| force | 布尔值 | 可选 | 使用 --force 标志进行强制推送。 | false |
| skip_verify | 布尔值 | 可选 | 跳过HTTPS证书的验证。 | false |
| commit | 布尔值 | 可选 | 在推送之前添加并提交仓库的内容。 | false |
| commit_message | 字符串 | 可选 | 为提交添加自定义消息。 | [skip ci] Commit dirty state |
| empty_commit | 布尔值 | 可选 | 如果没有更改,则创建一个空的提交。 | false |
| author_name | 字符串 | 可选 | 提交的作者姓名。 | commiter name |
| author_email | 字符串 | 可选 | 提交的作者电子邮件。 | commiter email |
| followtags | 布尔值 | 可选 | 使用 --follow-tags 选项推送。 | false |