持续集成之 Jenkins+Gitlab 简介 [一]
持续集成概念 持续集成 Continuous Integration 持续交付 Continuous Delivery 持续部署 Continuous Deployment 1.1 什么是持续集成: 持续集成是指开发者在代码的开发过程中,可以频繁的将代码部署集成到主干,并进程自动化测试 1.3 什么是持续交付: 持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境 1.4 持续部署: 在持续交付的基础上,把部署到生产环境的过程自动化,持续部署和持续交付的区别就是最终部署到生产环境是自动化的。 1.5 部署代码上线流程 1.代码获取(直接了拉取) 2.编译 (可选) 3.配置文件放进去 4.打包 5.scp 到目标服务器 6.将目标服务器移除集群 7.解压并放置到 Webroot 8.Scp 差异文件 9.重启 (可选) 10.测试 11.加入集群 运维必知 OWASP Jenkins 上 OWASP 插件介绍: 它是开放式 Web 应用程序安全项目[OWASP,Open Web Application Secunity Project]它每年会出一个 top10 的安全漏洞,我们需要知道当前 top10 的漏洞有哪些 https://www.owasp.org/images/5/57/OWASP_Proactive_Controls_2.pdf https://www.owasp.org/index.php/Top_10_2013-Top_10 Gitlab 介绍 GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库, 可通过 Web 界面进行访问公开的或者私人项目。 GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库 的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可 以轻松实现代码复用,便于日后有需要的时候进行查找。 环境准备
上传所需安装包
安装部署gitlab
1.安装gitlab rpm -ivh gitlab-ce-11.9.8-ce.0.el6.x86_64.rpm 2.初始化gitlab gitlab-ctl reconfigure 3.浏览器登陆gitlab 4.新建一个项目
在Linux生成密钥并复制 ssh-keygen -t rsa 生成密钥 cat /root/.ssh/id_rsa.pub 查看密钥并复制
放置密钥
进入自己的项目 5.设置项目在linux 参考web上的介绍 (1) 创建用户和所需邮箱表明身份
[root@localhost ~]# git config --global user.name “admin”
[root@localhost ~]# git config --global user.email admin@admin.com
(2) 克隆一个仓库
git clone git@192.168.1.40:root/xgp-demo.git
[root@localhost ~]# cd xgp-demo/ 进入库
[root@localhost xgp-demo]# vim index.html 创建测试文件
[root@localhost xgp-demo]# git add index.html 上传测试文件到缓存
[root@localhost xgp-demo]# git commit -m "1" 上传到版板库
[root@localhost xgp-demo]# git push -u origin master 上传到运程仓库
(3).修改配置文件
[root@localhost xgp-demo]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.1.40' #13行
(4).重新初始化一下 gitlab-ctl reconfigure
安装部署jenkins
Jenkins 介绍 Jenkins 只是一个平台,真正运作的都是插件。这就是 jenkins 流行的原因,因为 jenkins 什么插件都有Hudson 是 Jenkins 的前身,是基于 Java 开发的一种持续集成工具,用于监控程序重复的工作, Hudson 后来被收购,成为商业版。后来创始人又写了一个 jenkins, jenkins 在功能上远远超过 hudson Jenkins 官网: https://jenkins.io/ Jenkins 是 Java 编写的,所以需要先安装 JDK,这里采用 yum 安装,如果对版本有需求,可以 直接在 Oracle 官网下载 JDK。 安装 1.安装 JDK rpm -ivh jenkins-2.172-1.1.noarch.rpm 2.修改JDK配置文件 vim /etc/sysconfig/jenkins JENKINS_PORT="8081" #修改端口 56 3.启动JDK并查看端口 /etc/init.d/jenkins start #启动 netstat -anpt | grep 8081 #查看的端口
- Jenkins Web 访问地址: 192.168.1.40:8081 Linux查看密码并复制到web页面 ,然后点击继续 [root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword bb220f4cf61d46999ba7f6686eeecf32
(1)安装方法一 复制这个文件下面的 ID,否则不可以进行安装。我们选择推荐安装即可 设置用户名密码: 点击保存并退出 (3) 安装方法二
[root@localhost ~]# tar zxf jenkins-plugins.tar.gz #解压所需安装包
[root@localhost ~]# rm -rf /var/lib/jenkins/plugins/ #删除目录
[root@localhost ~]# mv plugins/ /var/lib/jenkins/ #将替换目录移动过去
[root@localhost ~]# /etc/init.d/jenkins restart #重启JDK
Restarting jenkins (via systemctl): [ 确定 ]
浏览器查看一下 Linux查看密码并复制到web页面 ,然后点击继续 (记得断网) [root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword bb220f4cf61d46999ba7f6686eeecf32 3.安装完成查看一下插件
持续集成之 Jenkins+Gitlab 实现持续集成 [二]
项目:使用 git+jenkins 实现持续集成
(1) 方法一 源码管理 我们安装的是 git 插件,还可以安装 svn 插件 们将 git 路径存在这里还需要权限认证,否则会出现 error cat /root/.ssh/id_rsa 查看密钥方式 我们添加一个认证
现在我们复制 git 的 url 就不会出现验证提示
(2)方法二 保存完毕后,我们选择立即构建 构建成功
Linux上查看一下
自动构建
- 安装插件 先进入到之前查看插件的地方 系统设置----插件管理----高级_---上传插件gitlab-oauth、gitlab-plugin、 windows-slaves、ruby-runt ime、gitlab-hook
- 构建触发器(xgp改为了x) x- demo---配置-- -构建触发器------勾选触发远程构建--构建身份令牌(在终 端执行openssl rand -hex 10) 生成的令牌238e3f0ed60b9bc795f3 勾选Build when a change is pushed to GitLab --保存 openssl rand -hex 10 生成十位数令牌
- 回到git1ab的web页面 点击projects--your project- -web- demo--settings-- Integrations -- JENKINS_ URL/ job/web- demo/build?token=TOKEN NAME- -取消勾选Enable SSL verification 确定之后有报错:解决方法 回到git1ab的web页面---点击小钳子---settings---Ne twork-----0utbound requests---- 勾选Allow requests to the local ne twork(允许本地请求)
再次点击projects--your project- -web- demo--settings-- Integrations -- JENKINS_ URL/ job/web- demo/build?token=TOKEN NAME- -取消勾选Enable SSL verification
4.测试一下 可以看到又有报错:解决方法 回到jenkins页面 系统管理---全局安全设置---授权策略-- -取消勾选防止跨站点请求伪造 勾选匿名用户具有可读权限 系统管理--系统设置---取消勾选Enable authentication for '/project' end-point 回到gitlab测试一下 成功 4. 在Linux上创建测试文件,再次测试一下
49 cd xgp-demo/
50 vim xgp.txt
51 git add xgp.txt
52 git commit -m "web hook"
53 git push origin master
在web界面的jenkins查看一下
实验完毕