Keuin's

为GitHub项目配置一个Jenkins持续集成服务

1. 启动Jenkins实例

首先,用Docker启动一个Jenkins实例,并设置为自动启动:

docker run -d -v /var/my_jenkins:/var/jenkins_home -p 10001:8080 -p 10002:50000 -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --name my_jenkins --restart unless-stopped jenkins/jenkins:lts-jdk11

命令里指定了时区为Asia/Shanghai,如果你在别的时区,可以自己改一下。

这个Docker镜像里面装依赖会比较麻烦,所以如果构建依赖比较多的话,推荐写一个Dockerfile去装一下。

如果你需要新的Java环境,比如Java 17,可以用lts-jdk17-preview这个镜像。

2. 创建GitHub个人访问令牌(PAT, Personal Access Token)

为了访问私有仓库,我们需要授权。不太安全的做法是把我们自己的账号密码给Jenkins用,这是个很不好的习惯,而且GitHub现在禁止git使用密码进行身份验证了,取而代之的是PAT。

PAT其实就是一个PSK,给Jenkins用的密码。为了使得密码泄露时的影响范围最小,不同个体最好使用不同的密钥,PAT应运而生。

这里创建一个新的密钥,如果你要访问私有仓库,就把第一个说明是“Full control of private repositories”的选项给选上。 然后用https://<TOKEN>@github.com/user/project的格式访问仓库就可以了。

注意:PAT只展示一次,如果弄丢了,就只能再生成一个了。 GitHub并不是鼓励你将Token保存在本地,而是在配置完毕后,不要保存在其他的任何地方,尽量减少Token的暴露面,从而降低泄露的可能。

3. 创建Jenkins构建项目

创建一个freestyle项目,在版本管理那里选git,然后把带token的url填入,其余选项酌情设置。

4. 设置代理

有些时候,我们需要通过代理服务器来访问仓库,而Jenkins支持HTTP/HTTPS代理,可以在Manage Jenkins > Manage Plugins > Advanced找到设置代理服务器的页面。

5. 配置Gradle测试

在构建时执行的gradle命令里加上test,即在构建前运行测试。

然后在“构建后操作”里新建一个“Publish Junit test build report”类型的动作,测试报告(XML)一栏填写正确的glob表达式(可以点击下面的超链接在文件夹里浏览,找到xml格式的测试报告,填入相对路径的glob表达式即可)

运行两次构建,就可以在右边看到测试结果趋势啦。