持续集成 gitlab+jenkins(pipeline)实现代码自动上线

环境准备:
Centos7.6版本
ip:192.168.0.13 主机名:git
ip:192.168.0.23 主机名:jenkins
ip:192.168.0.15 主机名:web01
关闭防火墙
关闭selinux
分发公钥使两两主机间可以免密码连通


 192.168.0.13主机上

1.安装gitlab
  #安装gitlab要先安装如下依赖包
  [root@git git_data]# yum install -y curl policycoreutils-python openssh-server
  #再安装gitlab软件包
  [root@git git_data]# rpm -ivh gitlab-ce-10.2.0-ce.0.el7.x86_64.rpm

2.修改gitlab的配置文件

  [root@git git_data]# vim /etc/gitlab/gitlab.rb

  ...
  external_url 'http://192.168.0.13'        #在13行位置,修改url地址为本机的ip地址

3.重新配置gitlab

  [root@git ~]# gitlab-ctl reconfigure

4.查看gitlab的状态

  [root@git monitor]# gitlab-ctl status

5.然后就可以登录gitlab了谷歌浏览器输入http://192.168.0.13,第一次登录会提示修改密码,用户名为root,密码为修改后的密码


192.168.0.23主机上

1.安装jenkins和jdk
  [root@jenkins ~]# rpm -ivh jdk-8u181-linux-x64.rpm
  [root@jenkins ~]# rpm -ivh jenkins-2.99-1.1.noarch.rpm

2.编辑配置文件改user为root
  [root@jenkins ~]# vim /etc/sysconfig/jenkins

  ...
  JENKINS_USER="root"

3.确认jdk已经安装再启动jenkins
  [root@jenkins ~]# systemctl start jenkins

4.登录jenkins,在浏览器输入http://192.168.0.23,第一次登录会提示输入密码
  复制下面文件下的密码到web页面中到密码框
  [root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
  fc0da02333a443799c90dead163240a0

5.输入密码后,继续可能会有提示创建用户,暂时不创建,因为默认有管理员账号密码
  管理员账号为admin登录后修改密码为123

6.接着安装jenkins的必要插件
  下载好插件包jenkins-plugins.tar.gz
  安装jenkins插件,把下载的压缩包解压到/var/lib/jenkins/plugins
  把压缩包里的plugin目录下的文件移动到/var/lib/jenkins/plugins下即可

7.刷新页面在系统管理下就可查看到安装的插件了


192.168.0.15主机上

1.搭建好nginx环境
 安装nginx,安装配置方法可看我上一篇博客


 

上面步骤完成了gitlab,jenkins和nginx的搭建和部署,接下来就可以进行代码项目的部署了

为了练习,这里在码云上面找了个开源项目


接着把码云的项目代码导入到gitlab,方法如下图1,2,3


完成代码导入后继续下面的操作

代码的拉取和推送要先有代码仓库权限,因此要把git和jenkins主机的root用户的ssh公钥放到gitlab上,
然后可以在命令行进行测试:git clone
         

在gitlab添加公钥的方法如下图

 


开始新建pipeline项目,pipeline的声明式脚本执行后可以查看到详细的每一步执行,如果有错误还会提示错误位置和信息。

下面图片的顺序为操作步骤的顺序,要按照下面图片顺序来搭建:

下面代码为pipeline的声明式脚本

pipeline{
agent any
stages{
stage("get code"){
steps{
echo "get code"
}
}
stage("unit test"){
steps{
echo "unit test"
}
}
stage("package"){
steps{
sh 'tar zcf /opt/web-${BUILD_ID}.tar.gz' ./* --exclude=.git --exclude=Jenkinsfile
}
}
stage("deploy"){
steps{
sh 'ssh 192.168.0.15 "cd /usr/share/nginx/ && mkdir web-${BUILD_ID}"'
sh 'scp /opt/web-${BUILD_ID}.tar.gz 192.168.0.15:/usr/share/nginx/web-${BUILD_ID}'
sh 'ssh 192.168.0.15 "cd /usr/share/nginx/web-${BUILD_ID} && tar xf web-${BUILD_ID}.tar.gz && rm -fr web-${BUILD_ID}.tar.gz"'
sh 'ssh 192.168.0.15 "cd /usr/share/nginx/ && rm -fr html && ln -s web-${BUILD_ID} html"'
}
}
}
}

 以下为测试部分:

谷歌浏览器输入http://192.168.0.15

下图为修改代码的操作

[root@git monitor]# grep -n "dark上传模拟" index.html                          #修改后查看修改的代码     
43: <a class="logo pull-left" href="index.html" style="width: 233px">dark上传模拟</a>
[root@git monitor]# git commit -am "modified index.html"                        #把修改的代码文件提交到本地仓库
[master 19bf27d] modified index.html
1 file changed, 1 insertion(+), 1 deletion(-)
[root@git monitor]# git push -u origin master                              #把本地仓库的文件提交到远程仓库gitlab上
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 329 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To git@192.168.0.13:dark/monitor.git
4eae6ad..19bf27d master -> master
Branch master set up to track remote branch master from origin.

过一会刷新页面后,代码成功自动更改,就成功了

#####################博客文章为原创,仅供参考学习使用######################

devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线的更多相关文章

  1. 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境

    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...

  2. [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBuild+GitHub)

    本系列文章包含: [独孤九剑]持续集成实践(一)- 引子 [独孤九剑]持续集成实践(二)– MSBuild语法入门 [独孤九剑]持续集成实践(三)- Jenkins安装与配置(Jenkins+MSBu ...

  3. Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  4. Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02

    1.      Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求, ...

  5. Jenkins +git +python 进行持续集成进行接口测试(接口测试jenkins持续集成篇)

    使用jenkins+git+python脚本进行持续集成的接口测试,在jenkins平台,利用插件等,把管理代码的git仓库的代码更新下来进行持续接口测试,python进行开发测试脚本,git进行远程 ...

  6. Jenkins持续集成企业实战系列之Jenkins手动构建-----04

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  7. Jenkins持续集成企业实战系列之Jenkins配置演示-----03

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  8. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

  9. GIt+jenkins代码自动上线

    代码自动上线功能 企业部署代码上线是件比较麻烦的事情,还好我们有jenkins这个持续集成的软件可以帮助我们做很多的事情,现在我们就 来测试用jenkins推送代码上线. 我们这里测试的是一个html ...

随机推荐

  1. Python_021(内置方法讲解二)

    一.内置方法二 1.__del__方法: a:构造方法:创建一个空间,  析构方法;释放一个空间; b:触发del的情况:Python解释器的垃圾回收机制,和遇到 del 对象名 c:析构方法的思想: ...

  2. Bazinga

    Bazinga Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  3. Hadoop 服务SYS CPU过高导致宕机问题

    最近某hadoop集群多次出现机器宕机,现象为瞬间机器的sys cpu增长至100%,机器无法登录.只能硬件重启,ganglia cpu信息如下: 首先怀疑有用户启动了比较奇葩的job,导致不合理的系 ...

  4. 查看Linux中lanmp的各软件编译参数

    转载 如何查看已经安装的nginx.apache.mysql和php的编译参数 Mysql查看mysql编译参数 Mysql5.4及之前版本查看编译安装参数,进入到mysql安装目录的bin下面 $ ...

  5. 邻近双线性插值图像缩放的Python实现

    最近在查找有关图像缩放之类的算法,因工作中需要用到诸如此类的图像处理算法就在网上了解了一下相关算法,以及其原理,并用Python实现,且亲自验证过,在次与大家分享. 声明:本文代码示例针对的是plan ...

  6. spring的后置处理器——BeanPostProcessor以及spring的生命周期

    后置处理器的调用时机 BeanPostProcessor是spring提供的接口,它有两个方法——postProcessBeforeInitialization.postProcessAfterIni ...

  7. 从DT时代云栖大会聊聊恒生电子

    从IT到DT,除了HOMS和配资,本文结合互联网金融的背景,帮助读者对恒生电子600570了解更多. 马云在2015杭州·云栖大会Computing Conference发表致辞时多次强调DT(Dat ...

  8. C# picturebox 加载图片后透明显示在另一控件之上

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. 从SOA 谈软件的发展

    本文是个科普文章,有些内容可能不精准,为了给女儿解释SOA所写.要深刻理解SOA,必须了解软件的发展过程.互联网上有大量的这方面的文章可以参考. 软件与计算机 软件这个概念很年轻,也就不到70年. 软 ...

  10. 【MM系列】SAP MM模块-委外采购订单 把Warning转换成Error信息提示

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-委外采购订单 把W ...