Gitea与Jenkins实现DevOps落地实验最终版

基于 Gitea 与 drone 的参考提及

参考

基于Drone+Gitea+Docker对go项目进行CI/CD

初试drone1.0+gitea—docker安装

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官方脚本一键安装与使用

Ubuntu 中安装和配置 Caddy 服务

DevOps