使用Docker运行Jenkins(二)

Gitea 是一款极易搭建的自助 Git 服务,最初是fork子Gogs项目(Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务)。Gitea使用 Go 语言开发。使用 Go 语言开发使得 Gitea 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

Gitea占用资源小,比起Gitlab这种庞然大物来说简直是精致得要命。但是作为小团队的项目管理用来替代Gitlab还是基本能够满足需求的。而且Gitea(包括Gogs)社区还是挺活跃的,新功能也在逐渐增加中,个人很看好它的前景。

1. 怎么运行Gitea

1.1 使用Docker运行mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '2'
services:
mysql:
image: mysql:5.7.18
volumes:
- /opt/docker/gitbox/db:/var/lib/mysql
- /opt/docker/gitbox/config:/etc/mysql/conf.d
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=password
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- 3307:3306
hostname: mysql
restart: unless-stopped

Gitea支持MySQL、PostgreSQL或SQlite,上面是以MySQL为例。也可以安装其他数据库。

1.2 创建数据库

使用上面创建的root用户登录mysql,创建数据库:

1
2
DROP DATABASE IF EXISTS gogs;
CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

1.3 安装Gitea

1
2
3
4
5
6
7
8
9
10
11
12
version: '2'
services:
gogs:
image: gitea/gitea:1.4.0-rc2
volumes:
- /etc/localtime:/etc/localtime
- /opt/docker/gogs/data:/data
- /opt/docker/gogs/logs:/app/gogs/log
ports:
- "10080:3000"
- "10022:22"
hostname: gogs

通过volume配置,可以将log以及repository等数据保存到宿主机上。

1.4 配置

使用浏览器访问,会自动跳入设置界面。配置好数据库,做好必要的配置Gogs就安装好了。

2. Webhook的使用

到现在为止,我还不会使用Jenkins中的Gitea plugin,所以最终还是使用了Gogs的plugin。

2.1 Jenkins中安装插件

Gogs plugin。安装这个插件之后就可以使用Gogs类型的Webhook了。

2.2 项目配置

在Jenkins中针对要启用Webhook的项目选择”Use Gogs Secret”,设置一个Secret。这个Secret将保证通讯中的数据安全。

2.3 Gitea中配置

在Gitea中仓库设置 -> 管理Web钩子,选择添加一个Gogs类型的Webhook,其他参数如下:

  • 推送地址为:{jenkins-server-address}/gogs-webhook/?job={job name}
  • 数据格式为:application/json
  • 密钥文本设置为上面的Secret。
  • 希望触发Web钩子的事件:只推送即可。

经过以上配置之后,当推送了最新代码的时候,会自动触发Jenkins中的构建事件,对代码进行打包测试。

热评文章