设为首页 收藏本站
查看: 3005|回复: 1

[经验分享] 简单的jenkins+git自动化上线

[复制链接]

尚未签到

发表于 2018-9-16 09:40:29 | 显示全部楼层 |阅读模式
一.Jenkins+Github自动化上线
  不会的要多查多问,不然不会的永远不会,哪怕你离会就差了那么一点点
  (一).环境:
  [root@hxy-centos7 ]# cat /etc/redhat-release

  CentOS Linux>  [root@hxy-centos7 .ssh]# uname -a
  Linux hxy-centos7 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  Jenkins 版本
  jenkins-2.118-1.1
  Jdk版本1.8.0
  java-1.8.0-openjdk.x86_64
  Git版本
  git-1.8.3.1
  (二).安装
  1.安装epel源
  rpm -ivh https://mirrors.kernel.org/fedora-epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
  2.安装jenkins
  wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
  rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
  yum install jenkins -y
  3.安装jdk
  yum install java-1.8.0-openjdk.x86_64 -y
  4.安装git
  yum install git -y
  5.启动jenkins
  /etc/init.d/jenkins restart
  或
  java -jar /usr/lib/jenkins/jenkins.war
  检查进程是否存在,端口是否开启,不想用8080的,也可以自己换个端口
DSC0000.jpg

  6.这里关闭防火墙,或者配置开放端口(我懒得配置直接关闭了)
  systemctl start firewalld.service
  systemctl disable firewalld.service
  iptables -F
  or(开放端口)
  iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
  7.测试jenkins然后在浏览器上输入
  http://192.168.18.171:8080
DSC0001.jpg

  [root@bogon ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
  c9c35f0eefb84059b4d2c70baed5d7e1
  8.输入密码登录完成
DSC0002.jpg

  9. 安装插件:
  我是新手我选择了第一个(安装推荐的插件)
DSC0003.jpg

  10.然后开始创建用户(你可以继续使用admin也可以创建新的用户)
DSC0004.jpg

  11.jenkins安装完成
DSC0005.jpg

  12.安装ssh插件
DSC0006.jpg

DSC0007.jpg

  13.配置公私钥
  安装插件,Publish Over SSH我的已安装了,未安装的会出现这个的,未安装安装上就行
  在Linux服务器上生成公私钥:
DSC0008.jpg

  [root@hxy-centos7 .ssh]# ssh-keygen -t rsa -C "mghxy123@163.com"
  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa): mghxy123_rsa
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

  Your>  Your public key has been saved in mghxy123_rsa.pub.
  The key fingerprint is:
  SHA256:SHl1ywpu4SECMxSn7SJn8I+LzT0F7ErvcNeCzp+gim8 mghxy123@163.com
  The key's randomart image is:
  +---[RSA 2048]----+
  | .*..     . .    |
  |   B   . . o .   |
  |. ..o + =   o    |
  | o .oo * + .     |
  |. =.... S .      |
  | +.+...o         |
  | .oo=.o .        |
  |.+EOoo o         |
  |++*.=oo          |
  +----[SHA256]-----+
  Passwd:
  mghxy123
  cp mghxy123_rsa.pub authorized_keys
  chmod 600 authorized_keys
  [root@hxy-centos7 .ssh]# ll
  总用量 12
  -rw-------. 1 root root  398 4月  28 17:39 authorized_keys
  -rw-------. 1 root root 1766 4月  28 17:38 mghxy123_rsa
  -rw-r--r--. 1 root root  398 4月  28 17:38 mghxy123_rsa.pub
  [root@localhost .ssh]# ssh localhost
  Last login: Mon Apr 23 17:42:55 2018 from 192.168.178.1
  14.公司要配置完成,尝试本地登录,无密码登录就OK了
DSC0009.jpg

  注:这个是centos6.5的,6.5可以输入密码在登录的时候无密码登录,但是centos7不行,只能是密码为空的,才能实现免密码登录
  [root@bogon .ssh]# ssh-keygen -t rsa -C "mghxy123@163.com"
  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa):
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:

  Your>  Your public key has been saved in /root/.ssh/id_rsa.pub.
  The key fingerprint is:
  SHA256:MXl46VkFaBA1pDoPkcCCeyE2ZVjlHkslbMhwICTHpUI mghxy123@163.com
  The key's randomart image is:
  +---[RSA 2048]----+
  |+EOB*o .o=+....  |
  |*=*+o+o. +oo .   |
  |oooo.+o *.+ .    |
  |... o oo * o     |
  | .   o+ S o      |
  |       +         |
  |        .        |
  |                 |
  |                 |
  +----[SHA256]-----+
  [root@bogon .ssh]# cp  id_rsa.pub authorized_keys
  [root@bogon .ssh]# chmod 600 authorized_keys
  [root@bogon .ssh]# ssh localhost
  The authenticity of host 'localhost (::1)' can't be established.
  ECDSA key fingerprint is SHA256:t1iQaiLET6B/bFvzukcTrBLUJLrSkBTUva+My47Zd7M.
  ECDSA key fingerprint is MD5:9a:6e:4d:3b:d1:b6:64:f8:77:d7:2d:c7:33:34:f4:98.
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
  Last failed login: Mon May  7 23:52:01 CST 2018 on pts/0
  There was 1 failed login attempt since the last successful login.
  Last login: Mon May  7 15:55:23 2018 from 192.168.18.1
  拷贝公钥,修改权限为600
  15.然后给jenkins配置秘钥
DSC00010.jpg DSC00011.jpg

  16.配置完成了点下test configuration 配置没问题了结果就成success,不是success就检查下配置
  17.ssh秘钥配置完成,下面创建任务
DSC00012.jpg

  18.配置下你的工作空间,便于管理(描述什么的,随便写不写都行)
DSC00013.jpg

  19.配置git,这里需要github的utl了,到自己的github项目上去找
DSC00014.jpg

  19..1这里在自己的github找到https的url(我在这里选用的是https,而不是用ssh,方法其实都差不多) DSC00015.jpg
  https://github.com/mghxy123/my_script.git
  19..2.可以用ssh,但是ssh需要另外配置秘钥
DSC00016.jpg

  19..2..1在这里填入私钥即可
DSC00017.jpg

  19..2..3如果是ssh,就需要在jekins上也配置秘钥
DSC00018.jpg

DSC00019.jpg

  19..2..4要是gitlab上拉代码就不用勾选。
  ①在Repository URL填写自己的远端地址。git打头的是ssh的连接形式,http打头的是http的连接形式。
  ②在Credentials这一栏,我弄了很久,每次我都是直接点击那个“Add”->“Jenkins”然后创建账号。结果总是不对。后来我回到首页:
DSC00020.jpg

DSC00021.jpg

  19..2..5点击 Stores scoped to Jenkins中的 Jenkins
DSC00022.jpg

  19..2..6在System中鼠标移动Global credentials(unrestricled)右边会出现小三角,
  点击会出现Add Credentials.
DSC00023.jpg

  19..2..7 Kind中选择SSH类型
DSC00024.jpg

  Username这里是可以随便填,建议填写你生成ssh时的key。
  private key这里选择第一个“Enter directly”,再把.ssh文件夹中的私钥全部复制过来(包括注释)。
  至此,正常情况下这样配置,ssh认证是没有错的!
  ③Branches to build这一栏:*/master
  20.构建触发器
  定时构建,每两分钟构建一次(也可以不填)
DSC00025.jpg

  21.构建,构建要根据具体的需求来做,我这里只是为了测试,就随意写了个脚本
DSC00026.jpg

DSC00027.jpg

  [root@hxy-centos7 ~]# mkdir /data
  [root@hxy-centos7 my_script]# chmod 777 /data/ -R
  [root@hxy-centos7 my_script]# chmod 777 /tmp -R
  构建
DSC00028.jpg

  22.发现权限不够的情况下
  ①可以把需要的文件和目录的拥有者都改为jenkins用户;
  ②修改jenkins配置文件把jenkins用户改为root用户
  vim /etc/sysconfig/jenkins
  JENKINS_USER="jenkins"
  改为:
  JENKINS_USER="root"
DSC00029.jpg

  1. 手动把需要的权限的文件夹或者目录加权限,(这样很费劲的)
  构建成功:
DSC00030.jpg

  这里只是为了测试写了个简单的脚本,至于构建成功后你再怎么做就看个人的需要了
二. Jekins+Gitlab自动化上线
  安装jenkins就不重复了
  1.安装gitlab插件
DSC00031.jpg

  2.如图所示输入gitlab
DSC00032.jpg

  3.我这里已经安装了,没有安装的安装上就行了
  然后配置公私钥(不要再系统配置的gitlab里面配置,配置都失败了):
  Gredentials--->stores scoped to jenkins--->global--->add gredentials
DSC00033.jpg

  4.然后选择
  ssh username whieh private key
  5.Username随便填,但是最好填自己秘钥的名字
DSC00034.jpg

  6.然后再私钥里面填入私钥:
  其他的可填可不填,看个人的情况:
DSC00035.jpg

  7.然后配置自己gitlab的公私钥:
DSC00036.jpg

  8.然后创建任务:
DSC00037.jpg

  9.描述什么的,看个人的情况来填:
DSC00038.jpg

  10.秘钥就选我们刚才配置的
  配置定时任务,这个的定时任务和crontab不一样,这里的分别代表
  分 时 天 月 年
  我这里写的是每小时的半点执行一次
DSC00039.jpg

  [root@bogon my_script]# cat jenkins_web.sh
  #!/bin/bash
  now_time=$(date +"%Y%m%d_%H%M%S")
  mv  /data/web /data/web_back_${now_time}
  mv /data/git_dir/ /data/web/
  mkdir /data/git_dir
  chmod 777 /data/git_dir
  11.构建失败,查看构建时的输入,找到问题
  对于这样权限不够的,我直接吧文件夹的拥有者改成了jenkins就没问题了
  chown jenkins:jenkins /data -R
DSC00040.jpg

  12.修改完成再次构建
DSC00041.jpg

  构建成功就OK了
  13.然后到浏览器上测试一下
DSC00042.jpg

  14.再次修改提交测试一下
DSC00043.jpg

  15.提交完成,开始构建测试
DSC00044.jpg

  16构建完成
DSC00045.jpg

  17.在浏览器上看一下
DSC00046.jpg

  18.正常输出,没问题,试验完成
三.在安装使用jenkins的时候遇到的一些问题
  一.启动jenkins报错,这个报错很明显说jenkins需要jdk1.8,但是你的jdk是1.7
  所以升级jdk到1.8就好了
DSC00047.jpg

  [root@localhost ~]# java -jar /usr/lib/jenkins/jenkins.war
  Jenkins requires Java 8, but you are running 1.7.0_51-mockbuild_2014_06_09_19_19-b00 from /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre
  java.lang.UnsupportedClassVersionError: 51.0
  at Main.main(Main.java:128)
  原因是需要升级jdk到1.8
  2.关于密码问题
  一、admin密码未更改情况
  1.进入/Jenkins/secrets目录,打开initialAdminPassword文件,复制密码;
  2.访问Jenkins页面,输入管理员admin,及刚才的密码;
  3.进入后可更改其他管理员密码;
  admin密码更改忘记情况
  1.删除Jenkins目录下config.xml文件中下面代码,并保存文件。
  true
  
  true
  
  
  true
  false
  
  2.重启Jenkins服务;
  3.进入首页>“系统管理”>“Configure Global Security”;
  4.勾选“启用安全”;
  5.点选“Jenkins专有用户数据库”,并点击“保存”;
DSC00048.jpg

  6.重新点击首页>“系统管理”,发现此时出现“管理用户”;
  7.点击进入展示“用户列表”;
  8.点击右侧进入修改密码页面,修改后即可重新登录。
DSC00049.jpg DSC00050.jpg

DSC00051.jpg

DSC00052.jpg

  改好密码后就可以登录了
DSC00053.jpg

DSC00054.jpg

  然后把修改的东西再修改回来就好了
  Centos7克隆的时候报错了,fatal: unable to access
DSC00055.jpg

  需要升级一下就好了yum update -y nss curl libcurl
DSC00056.jpg

  修改工作空间:
DSC00057.jpg


  在安装插件的时候有可能安装不了,重试几次都不行,我的解决办法是重启jenkins,jenkins重启不行,就重启虚拟机或是服务器,就没问题了
  网上找了好多博客,要么不全,要么不合适,感谢个博客
  https://blog.csdn.net/u013066244/article/details/52611070


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-584407-1-1.html 上篇帖子: jenkins和docker实现自动化构建部署 下篇帖子: CentOS7.2 搭建 Jenkins2.107.3-dockerHadoop
累计签到:67 天
连续签到:1 天
发表于 2018-10-22 17:13:05 | 显示全部楼层
如果项目很多的时候使用jenkins有没有好的方法,又或者使用哪个插件来完成多项目的自动部署?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表