gitlab+jenkins持续集成环境
作者:向前的步伐 / 发表: 2020年10月9日 00:20 / 更新: 2020年10月9日 00:27 / git&工具 / 阅读量:803
一、什么是持续集成
持续集成是一种软件开发的实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
二、项目开发的工作流程
一般的项目开发到发布的流程如下:
1.项目开发 >> 2.提交项目代码到(git或svn) >> 3. 拉取项目代码(jenkins或手动) >> 4.编译项目代码(jenkins或手动) >> 5.发布项目,并运行项目 >> 6.测试
此时ci工具的工作流程如下:
1.项目代码编写 >> 2.提交项目代码git容器 >> 3.jenkins容器拉取项目代码 >> 4.编译构建项目 >> 5.jenkins发布项目到tomcat容器 >> 6.测试
三、使用docker搭建gitlab服务器
查看gitlab的docker镜像
docker search gitlab
拉取gitlab社区版镜像
docker pull gitlab/gitlab-ce
使用命令查看docker镜像docker images,就可以看到刚下载的gitlab社区版
运行gitlab容器
先创建映射目录:
mkdir -p /docker/gitlab/config
mkdir -p /docker/gitlab/logs
mkdir -p /docker/gitlab/data
再运行容器,并映射到本地路径:
docker run -d -p 2222:22 -p 8888:80 -p 8443:443 --volume /docker/gitlab/config:/etc/gitlab --volume /docker/gitlab/logs:/var/log/gitlab --volume /docker/gitlab/data:/var/opt/gitlab --restart always --privileged=true --name gitlab gitlab/gitlab-ce:latest
参数说明
--detach: 设置容器后台运行
--hostname: 设置容器的 hostname
--publish: 端口转发规则
(
22: SSH访问端口,
80:Http 访问端口,
443:Https 访问端口,
-----------------------------
自定义GitLab端口转发规则
2222:Docker 容器的 SSH 访问端口,
8888:Docker 容器的 Http 访问端口,
8443:Docker 容器的 Https 访问端口,
)
--name:容器名称
--restart always:每次启动容器就重启GitLab
--volume: 共享目录挂载,即 docker 容器内外数据共享
(
/docker/gitlab/data: 应用程序数据,
/docker/gitlab/logs:GitLab 的 log,
/docker/gitlab/config:GitLab 的配置文件)
--privileged=true:给容器加入权限参数 --privileged=true,以特权方式启动容器 。解决运行时写入权限的问题。
登陆gitlab
运行成功后,访问http://服务器IP:8888,即可以看到登陆界面
四、使用docker搭建jenkins
下载jenkins的docker镜像
docker pull jenkins/jenkins:lts //最新版
使用命令查看docker镜像docker images,就可以看到刚下载的jenkins
创建jenkins映射目录
mkdir /home/jenkins_home
启动jenkins容器
docker run -d --name jenkins -p 8081:8080 -v /home/jenkins_home:/var/jenkins_home -u 0 --privileged=true jenkins/jenkins:lts
参数说明
-d //启动在后台
--name //容器名字
-p //端口映射(8081:宿主主机端口,8080:容器内部端口)
-v //数据卷挂载映射(/data/jenkins_home:宿主主机目录,另外一个即是容器目录)
jenkins/jenkins:lts //Jenkins镜像(最新版)
-u 0:指定使用root用户运行jenkins,解决写入文件夹权限问题。
--privileged=true:给容器加入权限参数 --privileged=true,以特权方式启动容器 。解决运行时写入权限的问题。
访问jenkins
访问地址:http://服务器IP:8081,可以看到界面:
注:
- 在安装完成后,默认生成了一个登录密码,首次登录需要这个密码。
- 密码路径:var/jenkins_home/secrets/initialAdminPassword //容器内部
- docker exec -it jenkins bash //进入jenkins容器
- cat /var/jenkins_home/secrets/initialAdminPassword //查看密码
安装插件,选择:Install suggested plugins
创建管理员:
配置完成就可以看到jenkins界面了
五、配置jenkins
配置jenkins插件
系统管理 >> 插件管理 >> 高级 :
将升级站点:http://updates.jenkins-ci.org/update-center.json,替换为:http://mirror.esuni.jp/jenkins/updates/update-center.json
再将升级失败的插件重新升级
再安装插件publish-over-ssh,可在http://updates.jenkins-ci.org/download/plugins/下载,再把插件通过系统管理 >> 插件管理 >> 高级 >> 上传插件,安装到系统中(用于通过SSH方式发送文件到指定服务器中)
配置SSH服务器
系统管理 >> 系统配置 >> Publish over SSH :
新建任务
新建任务 >> 构建一个自由风格的软件项目,然后配置如下:
构建
执行立即构建,在查看日志:
这就表明部署成功了