docker-compose.gogs.yaml 文件内容如下:
version: '3.1' services: gogs: image: gogs/gogs container_name: 'gogs' expose: - '3000:3000' expose: - 22 volumes: - /var/lib/docker/Persistence/Gogs:/data # 挂载数据卷。 restart: always执行以下命令后,即可启动 Gogs 程序,访问 宿主机 IP:3000 按照配置说明安装 Gogs 即可,之后你就可以创建远程仓库了。
三、Gogs 与 Jenkins 的集成虽然大部分都推荐 Jenkins 的 Gogs Webhook 插件,不过这个插件很久不更新了,而且不支持 版本发布 事件。针对于该问题虽然官方有 PR #62,但一直没有合并,等到合并的时候都是猴年马月了。这里还是建议使用 Generic Webhook Trigger ,用这个插件来触发 Jenkins 的管道任务。
3.1 创建流水线项目首先找到 Jenkins 的插件中心,搜索 Generic Webhook Trigger 插件,并进行安装。
继续新建一个管道任务,取名叫做 TestProject,类型选择 Pipeline 。
首先配置项目的数据来源,选择 SCM,并且配置 Git 远程仓库的地址,如果是私有仓库则还需要设置用户名和密码。
3.2 Jenkins 的 Webhook 配置流水线项目建立完成后,我们就可以开始设置 Generic WebHook Trigger 的一些参数,以便让远程的 Gogs 能够触发构建任务。
我们为 TestProject 创建一个 Token,这个 Token 是跟流水线任务绑定了,说白了就是流水线任务的一个标识。建议使用随机 Guid 作为 Token,不然其他人都可以随便触发你的流水线任务进行构建了。
3.3 Gogs 的 Webhook 配置接着来到刚刚我们建好的仓库,找到 仓库设置->管理 Web 钩子->添加 Web 钩子->Gogs 。
因为触发构建不可能每次提交都触发,一般来说都是创建了某个合并请求,或者发布新版本的时候就会触发流水线任务。因此这里你可以根据自己的情况来选择触发事件,这里我以合并请求为例,你可以在钩子设置页面点击 测试推送。这样就可以看到 Gogs 发送给 Jenkins 的 JSON 结构是怎样的,你就能够在 Jenkins 那边有条件的进行处理。
不过测试推送只能够针对普通的 push 事件进行测试,像 合并请求 或者 版本发布 这种事件只能自己模拟操作了。在这里我新建了一个用户,Fork 了另一个帐号建立的 TestProject 仓库。