jenkins自动化部署

jenkins 安装步骤

环境: centos7,jdk1.8.0,jenkins2.165,maven3.5.2

一、 安装配置java环境

    # tar -zxvf jdk-8u171-linux-x64.tar.gz   
    # mv  jdk1.8.0_171/ /usr/local/java
    # vim /etc/profile       # 配置环境变量
        export JAVA_HOME=/usr/local/java
     export JRE_HOME=${JAVA_HOME}/jre
     export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
     export PATH=${JAVA_HOME}/bin:$PATH
    # source /etc/profile   #  环境变量生效
    # java -version    # 安装完成,查看java版本
     java version "1.8.0_171"
    Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

二、安装jenkins

      第一种方法,使用yum安装

  第二种方法,使用war包部署

         下载war包:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.150.3/jenkins.war

         将war包部署到tomcat下面,通过启动tomcat来运行jenkins。

    这里我使用第一种方法

三、安装完成,启动服务

           # systemctl start jenkins.service
   # ps -ef |grep jenkins
jenkins 26904 1 39 16:23 ? 00:00:18 /usr/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
       
   配置文件目录: /etc/sysconfig/jenkins 
  日志目录: /var/log/jenkins/jenkins.log
   war包目录:/usr/lib/jenkins/jenkins.war 
   工作区目录:/var/lib/jenkins

四、登录jenkins

    访问jenkinsip:8080 ,进入登录页面,安装插件,创建管理员用户

五、jenkins基础配置

创建用户:系统管理--》管理用户
用户权限:系统管理--》全局安全配置--》访问控制--》授权策略--》安全矩阵--》添加用户
     

jenkins+git+maven+tomcat搭建自动化部署项目环境

1、安装maven
  • 下载地址  https://maven.apache.org/download.cgi
    # wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
    # tar zxvf apache-maven-3.5.2-bin.tar.gz
    # mv apache-maven-3.5.2 /usr/local/
  • 配置环境变量:
    # vim /etc/profile
        export MAVEN_HOME=/usr/local/apache-maven-3.5.2
        export PATH=$MAVEN_HOME/bin:$PATH
    # source /etc/profile
    # mvn --version

2、配置jenkins服务器和git仓库的连通性

      1, jenkins服务器安装git命令   

  • # yum install git -y
  • #  git --version
     git version 1.8.3.1

   2, git最好是使用ssh协议,然后使用ssh密钥,这样免去每次都输密码的麻烦       

       
     把jenkins服务器的用户公钥加到git仓库的两种方法:
        1.登入git点击头像,然后 Settings -> 左栏点击 SSH Keys -> 添加   
        2.选择项目-->Settings-->Repository-->Deploy Keys 添加
     验证: 加完之后在jenkins服务器验证能够直接远程git私有库
               # git ls-remote -h git@github.com:test/test-java.git HEAD  没有报错就说明能够连通
 
3、 jenkins配置构建
    1,jenkins先安装maven插件。系统管理-->管理插件  安装 Maven Integration插件  
    2,新建一个任务,构建一个自由风格的项目,名为java-test.
配置: 

    jenkins加私钥的方法: 在jenkins-->Credentials-->Add Credentials 加入jenkis服务器私钥
    构建过程:
    
     Goals and options : clean install -D maven.test.skip=true
 

将war项目部署到远程服务器

1,在远程服务器安装tomcat,用于部署运行war包
    下载地址: http://tomcat.apache.org/
  # wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
  # tar xzvf apache-tomcat-8.5.38.tar.gz
  # mv apache-tomcat-8.5.38 /usr/local/tomcat
2,配置远程tomcat的角色和用户,否则jenkins服务器无法将war发送过来
  在tomcat目录conf文件夹下tomcat-users.xml
<role rolename="manager-status"/>
<role rolename="manager-jmx"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcatpass" roles="manager-gui,manager-script,manager-jmx,manager-status" />
</tomcat-users>
还需配置  vim webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1|112.97.59.*|118.24.103.105" />
#  加上允许的ip 或者网段
   本地测试是否允许远程连接的:访问ip:8080/manager/html  提示输入用户名密码 输入之后可以进入页面 
3,配置jenkins, “构建后操作 ”  
  将打包好的war包发送到远程服务器 ,事先需安装安装Deploy to container Plugin
 
配置完成点击保存,然后点击开始构建。查看日志,构建成功。
验证:访问远程tomcat服务器,发现程序已经正常运行。(构建的是热部署,不用重新启动tomcat)
 
其他配置说明:
发布时选择github库里代码分支的配置
 1,先在管理插件里面安装 Git Parameter 插件
 2,在配置--》【参数化构建过程】 中加入【Git Parameter选项】 { Name: BRANCH_NAME   Description:分支  Parameter Type:Branch }  
在【源码管理】里面 【Git Repositories】的选项 Branches to build: Branch Specifier (blank for 'any') 填入${BRANCH_NAME}
点击系统管理->Global Tool Configuration,配置jdk,git,maven的根目录
 
给项目单独指定分配用户权限:
1,安装Matrix Authorization Strategy这个插件
 2,全局安全配置->Access Control Authorization->项目矩阵授权策略:
 3,在项目里面,为用户分配构建权限。

备份恢复 

jenkins自带一个备份恢复的插件:ThinBackup

 

配置之后 ,还可选择立即备份,或者恢复

Jenkins构建完成自动发送邮件配置 

1. 打开"系统管理"——"系统设置"
2. 在"Jenkins Location"设置系统管理员地址(重要:不能省略!)
3. 在"邮件通知"部分配置发送邮件的用户名、密码(注意这里的密码使用的是qq邮箱设置的"客户端授权码",不是登陆密码)
4. 测试:勾选"通过发送测试邮件测试配置",填入测试收件人,点击"Test Configuration" 到qq邮箱里check新邮件
 

 5.实例配置。  "系统管理"——"系统设置"

再进入任务的配置页面,然后在构建后操作模块增加构建后的操作“Editable Email Notification”
 6,注意要添加触发器 否则邮件也不会发送
 7,系统设置里面可以配置默认的收件人文本类型邮件主题内容等。
 

打开调试模式

 

结合salt构建项目  

jenkins带有一个saltstack插件,可以通过salt-api执行salt命令和state文件。

官网文档:https://wiki.jenkins.io/pages/viewpage.action?pageId=105742376

1, jenkins【系统管理】->【管理插件】->【可选插件】->【saltstack】->安装
2, 在salt-master服务器上面配置 salt-api
  安装salt-api   # yum Install salt-api -y
       权限配置   允许访问salt-api的用户获得必要的salt模块的权限。 同时为@runner返回者授予访问权限。
    # vim /etc/salt/master.d/salt-api.conf
external_auth:
  pam:
    salt:       #用户名
      - test.*   #可以使用的salt模块
      - pkg.*
      - cmd.*
      - state.*
      - '@runner'
    salt-test:  #用户名
      - .*
      - '@runner'
rest_cherrypy:   # CherryPy HTTP 配置
  port: 8000
  disable_ssl: True    #不启用ssl
#  ssl_crt: /etc/pki/tls/certs/localhost.crt
#  ssl_key: /etc/pki/tls/certs/localhost.key
  expire_responses: False
 
3,添加用户名密码
# useradd salt
# echo 'salt.123' |passwd --stdin salt 
验证: #salt -a pam '*'  test.ping
 
4,jenkins 配置
runner    master上运行salt-run命令 
 
可以在日志中看到
[test-salt] $ /bin/sh -xe /tmp/jenkins4249602781345844003.sh
Response on manage.status
[{
"down": ["minion-dev"],
"up": ["minion-pro"]
}]
 
local  运行salt命令的标准方法。如果命令快速返回,则返回结果。否则,如果命令长时间运行,jenkins将不会等待。
如下:执行salt-api服务器上面的 history.sls文件
相当于在salt-master执行:   # salt  'server02'  state.sls history

salt-master服务器上面

history_date:
  file.append:
    - name: /etc/profile
    - text: HISTTIMEFORMAT='%F %T '
# /srv/salt/history.sls

可以在上面的配置里启用参数化构建。先把目标服务器设置成一个变量,这里的Target使用这个变量, 构建时指定服务器就可以

 

如果不使用参数化构建,Target直接填要发布的minion服务器id。

构建的时候勾选目标服务器就可以啦

 构建成功,验证minion02上面/etc/profile 最后一行多了一句 HISTTIMEFORMAT='%F %T '

 日志:

原文地址:https://www.cnblogs.com/xiaobaozi-95/p/9406101.html