个人博客

gitlab+jenkins持续集成环境

一、什么是持续集成

持续集成是一种软件开发的实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

二、项目开发的工作流程

一般的项目开发到发布的流程如下:

1.项目开发 >> 2.提交项目代码到(git或svn) >> 3. 拉取项目代码(jenkins或手动) >> 4.编译项目代码(jenkins或手动) >> 5.发布项目,并运行项目 >> 6.测试

picture

此时ci工具的工作流程如下:

1.项目代码编写 >> 2.提交项目代码git容器 >> 3.jenkins容器拉取项目代码 >> 4.编译构建项目 >> 5.jenkins发布项目到tomcat容器 >> 6.测试

picture

三、使用docker搭建gitlab服务器

查看gitlab的docker镜像

docker search gitlab

picture

拉取gitlab社区版镜像

docker pull gitlab/gitlab-ce

使用命令查看docker镜像docker images,就可以看到刚下载的gitlab社区版

picture

运行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,即可以看到登陆界面

picture

四、使用docker搭建jenkins

下载jenkins的docker镜像

docker pull jenkins/jenkins:lts //最新版

使用命令查看docker镜像docker images,就可以看到刚下载的jenkins

picture

创建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,可以看到界面:

picture

注:

  • 在安装完成后,默认生成了一个登录密码,首次登录需要这个密码。
  • 密码路径:var/jenkins_home/secrets/initialAdminPassword //容器内部
  • docker exec -it jenkins bash //进入jenkins容器
  • cat /var/jenkins_home/secrets/initialAdminPassword //查看密码

安装插件,选择:Install suggested plugins

picture

picture

创建管理员:

picture

配置完成就可以看到jenkins界面了

picture

五、配置jenkins

配置jenkins插件

系统管理 >> 插件管理 >> 高级 :

将升级站点:http://updates.jenkins-ci.org/update-center.json,替换为:http://mirror.esuni.jp/jenkins/updates/update-center.json

再将升级失败的插件重新升级

picture

再安装插件publish-over-ssh,可在http://updates.jenkins-ci.org/download/plugins/下载,再把插件通过系统管理 >> 插件管理 >> 高级 >> 上传插件,安装到系统中(用于通过SSH方式发送文件到指定服务器中)

picture

配置SSH服务器

系统管理 >> 系统配置 >> Publish over SSH :

picture

新建任务

新建任务 >> 构建一个自由风格的软件项目,然后配置如下:

picture

picture

构建

执行立即构建,在查看日志:

picture

picture

这就表明部署成功了

相关标签
回到顶部