zoukankan      html  css  js  c++  java
  • jenkins部署记录

    环境规划

    主机分配

    • 192.168.2.139 : gitlab
    • 192.168.2.141 : jenkins
    • 192.168.2.142 : haproxy01
    • 192.168.2.143 :haproxy02
    • 192.168.2.144 :tomcat01
    • 192.168.2.145 : tomcat02
      各节点环境配置
      安装一些使用的工具包
    [root@ansible ~]# ansible all -m shell -a 'yum install vim gcc gcc-c++ wget net-tools lrzsz iotop lsof iotop bash-completion -y'
    [root@ansible ~]# ansible all -m shell -a 'yum install curl policycoreutils openssh-server openssh-clients postfix -y'

    安装epel源

    ansible all -m shell -a 'wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo'

    禁用并关闭防火墙

    [root@ansible ~]# ansible all -m shell -a 'systemctl disable firewalld'
    [root@ansible ~]# ansible all -m shell -a 'systemctl stop firewalld'

    禁用selinux

    [root@ansible ~]# ansible all -m shell -a 'sed -i ”/SELINUX/s/enforcing/disabled/“ /etc/selinux/config'
    [root@ansible ~]# ansible all -m shell -a 'setenforce 0'

    安装gitlab服务

    下载gitlab包:百度云盘下载:https://pan.baidu.com/s/1OrYy3Gx8mXcezH_JDubU-A 密码:sk73
    下载的包文件存放在/usr/local/src目录下

    • 安装
    [root@gitlab src]# yum localinstall gitlab-ce-8.13.5-ce.0.el7.x86_64.rpm -y
    • 修改配置文件/etc/gitlab/gitlab.rb
    [root@gitlab src]# vim /etc/gitlab/gitlab.rb
    external_url 'http://192.168.2.139' #访问地址:可以写主机名或ip地址
    #配置邮件通知(添加账号通知等,可以不写)
    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.163.com"
    gitlab_rails['smtp_port'] = 25
    gitlab_rails['smtp_user_name'] = "mail_name@163.com"
    gitlab_rails['smtp_password'] = "password"
    gitlab_rails['smtp_domain'] = "163.com"
    gitlab_rails['smtp_authentication'] = :login
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = false
    gitlab_rails['gitlab_email_from'] = "mail_name@163.com"
    user["git_user_email"] = "mail_name@163.com"
    • 修改配置文件后执行重载指令
      重载指令执行需要一段时间
    [root@gitlab ~]# gitlab-ctl reconfigure

    上面的指令执行完成后可以使用gitlab-ctl status指令查看git依赖的服务

    [root@gitlab ~]# gitlab-ctl status
    run: gitlab-workhorse: (pid 3468) 37s; run: log: (pid 3295) 63s
    run: logrotate: (pid 3382) 55s; run: log: (pid 3381) 55s
    run: nginx: (pid 3342) 61s; run: log: (pid 3341) 61s
    run: postgresql: (pid 3027) 112s; run: log: (pid 3026) 112s
    run: redis: (pid 2890) 118s; run: log: (pid 2889) 118s
    run: sidekiq: (pid 3250) 69s; run: log: (pid 3249) 69s
    run: unicorn: (pid 3195) 71s; run: log: (pid 3194) 71s

    此时就可以使用浏览器web界面来访问git了,使用gitlab主机地址直接访问即可
    登录前先设置密码

    登录后,需要将默认的用户注册功能取消,因为用户是由管理员定义分配的。

    点击右上角扳手图标进入下面的界面,创建用户设置密码,用户组,项目等

    创建一个测试项目,用在本地测试

    本地安装git客户端

    [root@gitlab ~]# yum install git -y

    本地测试版本管理

    • 将测试项目clone到本地的当前目录下
    [root@gitlab testdir]# git clone http://192.168.2.139/myweb/testweb.git
    Cloning into 'testweb'...
    Username for 'http://192.168.2.139': yufu
    Password for 'http://yufu@192.168.2.139':
    remote: Counting objects: 3, done.
    remote: Total 3 (delta 0), reused 0 (delta 0)
    Unpacking objects: 100% (3/3), done.
    • 查看内容
    [root@gitlab testdir]# ls
    testweb
    [root@gitlab testdir]# cat testweb/README.md
    test111
    • 修改内容后提交
      在原来的文件中添加了一行新内容
      克隆的文件修改后提交前,要将文件添加git add到本地,并且提交git commit声明操作,然后在将最新文件推送到git服务端上
    [root@gitlab testweb]# git add README.md
    [root@gitlab testweb]# git commit -m "add new line" #提示错误:提示信息给出了解决办法
    Run
      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"
    to set your account's default identity.
    Omit --global to set the identity only in this repository.

    根据提示执行指令

    [root@gitlab testweb]# git config --global user.email "136423119@qq.com"
    [root@gitlab testweb]# git config --global user.name "yufu"

    重新提交

    [root@gitlab testweb]# git commit -m "add new line"
    [master c62845d] add new line
     1 file changed, 2 insertions(+), 1 deletion(-)

    执行git push

    [root@gitlab testweb]# git push
    #需要验证用户密码
    Username for 'http://192.168.2.139': yufu
    Password for 'http://yufu@192.168.2.139':
    Counting objects: 5, done.
    Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To http://192.168.2.139/myweb/testweb.git
       cc5ab3e..c62845d master -> master

    此时到git上查看文件内容已经发生了更改
    本地修改内容执行commit提交后,并没有真正条到git服务端,只有执行git push后才真正同步

    其他常用git 指令

    git config --global user.name “name“ #设置全局用户名,可以非真实账户
    git config --global user.email xxx@xx.com #设置全局邮箱,可以非真实邮箱
    git config --global –list #列出用户全局设置
    git add index.html #添加文件到暂存区
    git commit -m “11“ #提交文件到工作区
    git status #查看工作区的状态
    git push #提交代码到服务器
    git pull #获取代码到本地
    git log #查看操作日志
    vim .gitignore #定义忽略文件
    git reset --hard HEAD^ #git版本回滚, HEAD为当前版本,加一个^为上一个,^^为上上一个版本
    git reflog # #获取每次提交的ID,可以使用--hard根据提交的ID进行版本回退
    git reset --hard 5ae4b06 #回退到指定id的版本
    # git branch #查看当前所处的分支
    git checkout -- file #从服务器更新某个那文件覆盖本地的文件

    安装Jenkins

    jenkins需要依赖java环境,因此要安装jdk,从本地上传安装包进行安装,jenkins服务上的jdk可以直接使用rpm包安装
    jenkins:https://pan.baidu.com/s/1lEBWD9OKZEZiOAjn4ZM57A 密码:up81
    JDK:https://pan.baidu.com/s/1KA99fCN7e7Sx9IfBq8c7aA 密码:3r3e

    [root@jenkins ~]# yum install jenkins-2.27-1.1.noarch.rpm jdk-8u111-linux-x64.rpm -y

    jenkins安装后的配置文件在/etc/sysconfig/jenkins

    - 启动jenkins

    [root@jenkins ~]# systemctl start jenkins

    jenkins启动时会创建一个用户和密码,在日志中可以找到,用户使用该信息登录

    • 查看日志中的信息如下:
    [root@jenkins ~]# cat /var/log/jenkins/jenkins.log
    Jenkins initial setup is required. An admin user has been created and a password gen![](http://gudaoyufu.com/wp-content/uploads/2018/08/clonetest.png)erated.
    Please use the following password to proceed to installation:
    ea02cbe6a0364330942bed70e7d8198f
    This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword

    jenkins服务启动后就可以访问web页面了,使用刚才日志里面的密码进行登录 使用ip:8080 进行登录

    确认后会进入联网状态,jenkins是基于插件方式工作的,安装时要安装很多插件,有两种安装方式:一种是自定义插件安装,一种是使用默认插件安装,这里选择使用默认的安装方式,通常在安装插件过程中会有很多插件安装失败,可以在后面将安装失败的插件导入进来,或者安装后进行选择安装插件也可以。

    安装插件的过程比较长,耐心等待
    【注意:如果界面一直停留在上图中,那么是卡住了,重新开个页面再访问即可,重新访问后选择跳过继续下面的操作】
    重新访问后的页面如下:选择跳过继续配置


    设置管理员用户名密码等信息

    其他信息先可以跳过,就可以进入到配置界面了

    解决插件安装失败问题

    有很多插件没有安装成功,可以将相应的插件下载到本地,然后导入到jenkins插件目录
    jenkins安装插件的目录在/var/lib/jenkins/plugins下;
    下载插件:https://pan.baidu.com/s/1_pMrHzThiqZ93x9K6z5_Fw 密码:sxcu
    将插件压缩包传到jenkins的插件目录解压,并修改属主属组

    [root@jenkins plugins]# tar xvf jenkins_plugin.tar.gz
    [root@jenkins plugins]# chown -R jenkins:jenkins ./
    [root@jenkins plugins]# mv jenkins_plugin.tar.gz /opt/ #移走压缩包
    • 重启jenkins服务
    [root@jenkins plugins]# systemctl restart jenkins

    导入插件后可能还会有少数插件不可用,如果使用不到相应功能可以不用安装,如果将来需要使用新的插件可以通过从网上下载后导入的方式进行,也可以在线安装。
    插件下载地址:http://updates.jenkins-ci.org/download/plugins/

    gitlab和gitlab Hook Plugin插件

    • 确认gitlab和gitlab Hook Plugin两个关键插件是否安装,没有安装则可以在线安装
      这两个插件很重要,gitlab是从gitlab服务器端获取代码的插件,gitlab Hook Plugin 是触发jenkins构建项目的插件,如果没有这个插件,那么未经测试的代码直接就发布到生产环境中去了

    配置jenkins和gitlab关联

    jenkins要从gitlab上获取代码,因此两者之间要基于key认证,将jenkins生成的公钥配置在gitlab中,gitalb指定某个用户对某个项目有操作权限。

    • 在gitlab上新建一个用户xiaoming,他属于myweb组

      后面在jenkins上要使用xiaoming这个用户来进行测试发布
    • jenkins上生成秘钥,将公钥复制到gitlab中的myweb项目中
    [root@jenkins ~]# cat ~/.ssh/id_rsa.pub
    #复制不要有空格,不要有转行符,要写在一行,用记事本编辑
    ssh-rsa
    AAAAB3NzaC1yc2EAAAADAQABAAABAQCjcEidAzdo3tdOXzVFyhLz2OH8q5WnIA3Rp1tWq/EGWHTcyxfw2orL+hRI3iJ41UoGZ2rvu/giglexL1uFyfIDxrSEarqTpnB6dfD6eT+n5sBRRDxdhHmmLxdCocpKeTYa/HaqTxibxiCgo1J9806SSVECAs0PJrjeLEETTpGAhbiyrpOkk1eWDfHa3U/qyaghyIaWNY0nSr5Q61/7OQ53XkYdQmCo5Q6ITmZvV0jCNvpeDNK+yvF83N2sdy/tV7b1hnMi7W0OLzFlrwOcuWQdDZEYdWRqO8R0XUZKBZTyp9hLivqBkbaaFzsPCubjDD/fPYelrznFmAH/4WxGOocn root@jenkins
    • 在gitlab的project中,找到Deploy keys,将上面jenkins的公钥加入到上面
    • jenkins测试用ssh的方式向gitlab拉取文件
    [root@jenkins mnt]# git clone git@192.168.2.139:myweb/testweb.git
    Cloning into 'testweb'...
    The authenticity of host '192.168.2.139 (192.168.2.139)' can't be established.
    ECDSA key fingerprint is SHA256:KEONIDsIh3vnCDC9A8xDVvqr6QvSEdfCSEal1qaP95s.
    ECDSA key fingerprint is MD5:f7:bc:00:eb:6e:fe:9e:c2:8b:0a:98:d3:47:1c:9b:4c.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.2.139' (ECDSA) to the list of known hosts.
    remote: Counting objects: 12, done.
    remote: Compressing objects: 100% (4/4), done.
    remote: Total 12 (delta 0), reused 0 (delta 0)
    Receiving objects: 100% (12/12), done.
    [root@jenkins mnt]# ls
    testweb
    #测试正常后将该目录删除了

    jenkins通过配置用户拉取代码默认会保存在/var/lib/jenkins/workspace/目录下

    • 将jenkins私钥配置到jenkins的web服务中,(gitlab放公钥,jenkins放私钥)

      进入之后点击“Add Credentials”添加私钥:如下图,点击OK保存(私钥太长不贴出来了)

      至此jenkins与gitlab关联和配置就做好了,接下来就可以在jenkins中构建项目了,通常我们构建一个自由风格的项目

      项目的构建工作主要就在这里配置,有很多配置项
      配置源码管理,指定从哪里拉取代码

      保存后返回首页就可以看到刚才创建的项目,可以构建项目测试看一下

      构建完后可以查看构建过程中的信息状态,看看是构建成功还是失败

      可以看到输出信息中最后一行提示为seccess

      在jenkins服务端查看拉取的内容
    [root@jenkins ~]# cd /var/lib/jenkins/workspace/test-demo
    [root@jenkins test-demo]# ls
    README.md
  • 相关阅读:
    Hadoop集群(三) Hbase搭建
    Hadoop集群(二) HDFS搭建
    Hadoop集群(一) Zookeeper搭建
    Redis Cluster 添加/删除 完整折腾步骤
    Redis Cluster在线迁移
    Hadoop分布式HA的安装部署
    Describe the difference between repeater, bridge and router.
    what is the “handover” and "soft handover" in mobile communication system?
    The main roles of LTE eNodeB.
    The architecture of LTE network.
  • 原文地址:https://www.cnblogs.com/anay/p/26842f7cad5ee47ebeec2d816dae42dc.html
Copyright © 2011-2022 走看看