返回

轻量级CI/CD生态 Docker+Gittea+Drone实战

闲谈

## 理解Docker+Gittea+Drone的CI/CD工具链

在深入了解如何使用Docker、Gittea和Drone来构建轻量级CI/CD环境之前,我们首先需要了解CI/CD工具链的概念,以及这些工具在其中发挥的作用。

CI/CD(持续集成和持续交付)工具链是一个自动化流程,用于将代码更改从源代码管理系统集成到生产环境中。CI/CD工具链的目的是提高软件开发和交付过程的效率和质量。

Docker是一个开源的容器引擎,用于构建、运行和部署应用程序。Docker允许您将应用程序及其依赖项打包到一个独立的容器中,从而可以在任何环境中运行。

Gittea是一个轻量级的Git服务,您可以使用它来托管您的源代码仓库。Gittea是一个开源项目,以Apache许可证授权。

Drone是一个开源的CI/CD服务器,用于自动构建、测试和部署代码。Drone支持多种语言和框架,包括Java、Python、Ruby和Go。

## 搭建Docker+Gittea+Drone环境

现在让我们开始搭建Docker+Gittea+Drone环境。为了便于理解,我们将把过程分为三个部分:

### 1. 安装Docker和Docker-Compose

首先,我们需要安装Docker和Docker-Compose。Docker是一个开源的容器引擎,用于构建、运行和部署应用程序。Docker-Compose是一个用于定义和运行多容器Docker应用程序的工具。

在Ubuntu上安装Docker和Docker-Compose的步骤如下:

1. 更新系统软件包:
```
sudo apt update
```
2. 安装必要的依赖项:
```
sudo apt install apt-transport-https ca-certificates curl software-properties-common
```
3. 添加Docker官方GPG密钥:
```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```
4. 添加Docker官方软件源:
```
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```
5. 更新系统软件包:
```
sudo apt update
```
6. 安装Docker-CE:
```
sudo apt install docker-ce
```
7. 安装Docker-Compose:
```
sudo apt install docker-compose
```

### 2. 安装并配置Gittea

接下来,我们需要安装并配置Gittea。Gittea是一个轻量级的Git服务,您可以使用它来托管您的源代码仓库。

在Ubuntu上安装Gittea的步骤如下:

1. 创建Gittea用户:
```
sudo useradd -m gittea
```
2. 切换到Gittea用户:
```
sudo su - gittea
```
3. 下载Gittea二进制文件:
```
wget https://dl.gitea.io/gitea/1.17.4/gitea-1.17.4-linux-amd64.tar.gz
```
4. 解压缩Gittea二进制文件:
```
tar -zxvf gitea-1.17.4-linux-amd64.tar.gz
```
5. 将Gittea二进制文件移动到/usr/local/bin目录:
```
sudo mv gitea-1.17.4-linux-amd64/gitea /usr/local/bin/
```
6. 创建Gittea数据目录:
```
sudo mkdir -p /var/lib/gitea
```
7. 授予Gittea用户对Gittea数据目录的权限:
```
sudo chown -R gittea:gittea /var/lib/gitea
```
8. 创建Gittea配置文件:
```
sudo nano /etc/gitea/app.ini
```
9. 在Gittea配置文件中添加如下内容:
```
RUN_MODE = prod
APP_NAME = Gitea: A painless self-hosted Git service
ROOT_URL = http://your_domain
REVERSE_PROXY = true
SSH_DOMAIN = your_domain
LFS_START_SERVER = true
DISABLE_REGISTRATION = true
DISABLE_REPO_ARCHIVING = true
REPO_ROOT = /var/lib/gitea/repositories
```
10. 启动Gittea服务:
```
sudo gitea web
```

### 3. 安装并配置Drone

最后,我们需要安装并配置Drone。Drone是一个开源的CI/CD服务器,用于自动构建、测试和部署代码。

在Ubuntu上安装Drone的步骤如下:

1. 下载Drone二进制文件:
```
wget https://github.com/drone/drone-cli/releases/download/v1.1.2/drone-linux-amd64.tar.gz
```
2. 解压缩Drone二进制文件:
```
tar -zxvf drone-linux-amd64.tar.gz
```
3. 将Drone二进制文件移动到/usr/local/bin目录:
```
sudo mv drone-linux-amd64/drone /usr/local/bin/
```
4. 创建Drone用户:
```
sudo useradd -m drone
```
5. 切换到Drone用户:
```
sudo su - drone
```
6. 创建Drone数据目录:
```
sudo mkdir -p /var/lib/drone
```
7. 授予Drone用户对Drone数据目录的权限:
```
sudo chown -R drone:drone /var/lib/drone
```
8. 创建Drone配置文件:
```
sudo nano /etc/drone/drone.toml
```
9. 在Drone配置文件中添加如下内容:
```
server {
  address = ":80"
  hostname = "your_domain"
  protocol = "https"
  secret = "your_secret"
}

storage {
  path = "/var/lib/drone"
}

runners {
  enabled = true
}

oauth2 {
  enabled = true
  github {
    client_id = "your_client_id"
    client_secret = "your_client_secret"
    redirect_uri = "http://your_domain/authorize/callback"
  }
}

plugins {
  enabled = true
}

pipeline {
  secret = "your_secret"
}
```
10. 启动Drone服务:
```
sudo drone server
```

## 配置CI/CD管道

现在我们已经搭建好Docker+Gittea+Drone环境,接下来就可以配置CI/CD管道了。CI/CD管道是一个自动化流程,用于将代码更改从源代码管理系统集成到生产环境中。

在Drone中,我们可以使用YAML文件来定义CI/CD管道。一个简单的CI/CD管道YAML文件示例如下:

```yaml
kind: pipeline
name: my-pipeline
steps:
- name: build
  image: golang:1.17-alpine
  commands:
  - go build -v
- name: test
  image: golang:1.17-alpine
  commands:
  - go test -v
- name: deploy
  image: nginx:1.19-alpine
  commands:
  - nginx -g "daemon off;"
```

这个YAML文件定义了一个名为“my-pipeline”的CI/CD管道。这个管道包含三个步骤:

* **build** :使用Golang构建应用程序。
* **test** :使用Golang测试应用程序。
* **deploy** :使用Nginx部署应用程序。

## 运行CI/CD管道

要运行CI/CD管道,我们可以使用Drone CLI工具。Drone CLI工具是一个命令行工具,用于与Drone服务器交互。

要使用Drone CLI工具运行CI/CD管道,我们可以执行以下命令:

```
drone pipeline start my-pipeline
```

这个命令将启动名为“my-pipeline”的CI/CD管道。

## 总结

在本文中,我们介绍了如何使用Docker、Gittea和Drone创建一个超轻量级的CI/CD环境。我们还介绍了如何使用Drone CLI工具来运行CI/CD管道。