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命令
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: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 '
日志: