基于 Gitea 与 drone 的参考提及
参考
1. 最终选择基于 Gitea 与 Jenkins
由于大部分体系较大的公司或者喜欢自己写脚本的开发运维来说,用jenkins来与代码库做 ci/cd 是较为完整的稳定的操作流程,所有这次最终选择的是 Gitea 与 Jenkins 来做我这次的微服务自动化流程的实验落地方案。
Installation from binary for Gitea
基于二进制可执行文件安装 Gitea ,具体环境变量和文件创建位置参考 官方文档即可
注意: linux 都自带 python , python 自带 sqlite ,如果你的机器上没有,请自行搜索安装即可。
1. 下载安装 Gitea
wget -O gitea https://dl.gitea.io/gitea/1.9.3/gitea-1.9.3-linux-amd64
chmod +x gitea
2. 启动与挂载 Gitea
gitea 这里下载下来就是一个可以执行的go的二进制包文件,直接执行即可。
直接终端打印跑起:
./gitea web
后台挂起可以运行如下:
nohup ./gitea &
跑起来后浏览器自行打开对应ip或者域名加端口默认为 3000
3. install 页面配置注意事项
- 首秀先进入一个 /install 进行安装流程,这里数据库默认选择就是用 sqlite3 系统自带简单方便。
- 所有要求填入域名或者host的填空,皆填入你的域名或者 ip 地址即可。
- 我这里运行用户都是按照 root 进行的,这里和你安装gitea的时候需要自行注意些。
最后创建一个自己的测试代码仓库即可界面如下:
2. docker-compose 安装 Jenkins
1. docker-compose 启动程序
建立 docker-compose.yml 如下内容:
version: "3"
services:
jenkins:
image: jenkins/jenkins:lts
restart: always
user: root
privileged: true
environment:
- TZ=Asia/Shanghai
- JENKINS_JAVA_OPTIONS="-Dorg.apache.commons.jelly.tags.fmt.timeZone=Asia/Shanghai"
ports:
- "8080:8080"
- "50000:50000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/jenkins_home:/var/jenkins_home
- /etc/localtime:/etc/localtime:ro
配置说明:
- TZ 用docker-compose 启动程序,设置docker内部的时区问题
- JENKINS_JAVA_OPTIONS 这是设置jenkins时区问题,防止相差八小时问题
- ro 表示docker容器内只读文件
参考文章: docker-compose.yml文本内容详解 + docker-compose命令详解 + docker-compose启动服务容器时区设置
创建好对应文件后运行:
docker-compose up -d
打开对应地址:
http://47.99.xxx.xx:8080
你会看见一张图叫你填写一个系统管理密码串,它在
/var/jenkins_home/secrets/initialAdminPassword
注意具体路径以你看见图片中的路径为准,并且最好是把路径映射到主机中,即加入volumes中。
请运行命令即可得到秘钥串:
cat /var/jenkins_home/secrets/initialAdminPassword
完了以后构建一个项目再进入插件管理中选择 gitea(gogs):
点击 直接安装 即可。
2. 在 jenkins 中配置好 gitea 触发Push的钩子相关
进入到建立的test项目中,点击配置看见如下图所示进行填写:
注意如果安装的是gogs插件会有Gogs webhookbooks 一项的配置,我这里用的是gitea 所以少了这个配置。
下载对应插件名称,填写对应token
填写test项目对应启动脚本的名称过程:
以上步骤都完成以后 说明你已经将 jenkins 和 gitea 连接一起了,你需要做的就是拉下代码更新内容再push上去,就能看见你的项目再自动构建和部署了!
小提示:
如果你觉得输入端口号麻烦,那么请用上nginx的反向代理,不过这里推荐使用 caddy 简单方便配置安装就可以搞定你的需求了。
caddy 安装可参考 caddy官方脚本一键安装与使用