持续集成,自动测试,持续部署的超级引擎,支持自定义工具集,多种交互通道
第一种安装方法
安装java环境:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
rpm -ivh jenkins-2.32.3-1.1.noarch.rpm
Admin默认密码:/var/lib/jenkins/secrets/initialAdminPassword
卡启动:断网等待
systemctl start jenkins
chkconfig jenkins on
系统设置 –》用户管理 修改密码
安装插件
存放插件路径:/var/lib/jenkins/plugins/
tar xf plugins.tar.gz -C plugins
systemctl restart Jenkins 解压完重启一下
chown Jenkins:Jenkins –R ./ 修改权限
更新那插件
下载插件https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
http://updates.jenkins-ci.org/
下载完直接在高级上传更新
Jenkins配置
rpm -ql Jenkins
/etc/init.d/Jenkins 服务启动文件
/etc/logrotate.d/jenkins
/etc/sysconfig/Jenkins 配置文件
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/Jenkins 程序代码
/var/lib/Jenkins 主目录
/var/log/Jenkins
vim /etc/sysconfig/jenkins
JENKINS_USER="root" 生成环境用 Jenkins 账户
systemctl restart Jenkins
备份:
tar xf zcf Jenkins.tar.gz /var/lib/Jenkins
做定时任务
系统管理 –>系统配置 -->执行者数量 5 –>用法 只允许绑定到这台机器job –》生成前等待时间 10 任务10秒后开始运行 àSCM签出重试次数 3 拉取git失败重试次数
Jenkins升级版本
systemctl stop Jenkins
cd /usr/lib/jenkins/
mv jenkins.war jenkins.war-2.32.3.war.bak
上传新版war包 jenkins.war
systemctl start Jenkins 启动,版本更新了
第二种安装方法(推荐)
由于Jenkins属于一个JAVA 代码,需要java容器才能运行jenkins,所以需要安装JDK+Tomcat,方法如下:
JAVA JDK安装
#下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-8u91-linux-x64.tar.gz
tar -xzf jdk-7u25-linux-x64.tar.gz ; mkdir -p /usr/java/ ; mv jdk1.8.0_25/ /usr/java/jdk1.8
#然后配置环境变量,这样可以任何地方引用jdk,如下配置:
#vi /etc/profile 最后面加入以下语句:
export JAVA_HOME=/usr/java/jdk1.8
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
#source /etc/profile #使环境变量马上生效
#java -version #查看java版本,看到jdk1.8.0_25版本即代表java jdk安装成功。
Tomcat安装配置
#官方网站下载tomcat 8.0.36或者其他版本:
tar xzf apache-tomcat-8.0.36.tar.gz
#直接解压就可以使用,解压完成执行:
mv apache-tomcat-8.0.36 /usr/local/tomcat
把得到的war包直接扔到tomcat下webapps/ROOT/下,启动tomcat,Jenkins就安装完毕!
rm -rf /usr/local/tomcat/webapps/* ;
mkdir -p /usr/local/tomcat/webapps/ROOT/;
mv jenkins.war /usr/local/tomcat/webapps/ROOT/;
jar –xf jenkins.war
构建自由项目
新建 --》构建一个自由风格的软件项目 --》 选丢弃旧的构建 10 --》git配置 --》构建 --》Excute shell
gitlab拉下来的代码路径:/var/lib/jenkins/workspace/php
给上线的服务器建立免密连接
模拟发布
Execute shell
rsync -raz --delete --progress * root@192.168.81.20:/data/www/php 这条命令
相当于在Jenkins服务器:/var/lib/jenkins/workspace/php这里执行
在点击立即构建 -->就是发布构建一次
maven编译打包
tar xf apache-maven-3.3.9-bin.tar.gz && mv apache-maven-3.3.9 /usr/maven
Global Tool Configurationàmavenà jdk: java /usr/java/jdk1.8 maven:/usr/maven
新建 --》www.jfedu.net--》描述:该项目部署jfedu.war包工程-->源码管理: svn://139.224.227.121:8801/edu 账号shareku1密码www.jfedu.netQAZ
BuildàRoot POM ./www/pom.xml Global and options:clean install -Dmaven.test.skip=true 跳过测试 –》保存 –》立即构建 结果:Archiving /var/lib/jenkins/workspace/www.jfedu.net/www/target/edu.war to com.shareku/edu/0.0.1-SNAPSHOT/edu-0.0.1-SNAPSHOT.war
部署tomcat
cd /usr/local/ && tar xf apache-tomcat-8.0.36.tar.gz &&mv apache-tomcat-8.0.36 tomcat
vim conf/server.xml
<Connector port="8086" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
cd webapps/ ROOT/ && rm -rf * && cp /tmp/edu.war ./ && jar -xf edu.war
/usr/local/tomcat/bin/startup.sh
tail -fn 100 /usr/local/tomcat/logs/catalina.out
ss –ntl
访问: http://192.168.85.120:8086/
自动部署
构建后操作—》archive the artifactsà **/target/*.war
Post Steps àExcute Shell:
yes|cp /root/.jenkins/workspace/www.jfedu.net/www/target/edu.war /var/www/html/download/
ssh root@192.168.85.120 'bash -x -s' < /root/auto_deploy_tomcat.sh
脚本在远程服务器执行
#!/bin/bash
#Auto deploy Tomcat for jenkins perf
#by author wugk 2016-07-06
export JAVA_HOME=/usr/java/jdk1.8
TOMCAT_PID=`/usr/sbin/lsof -n -P -t -i :8082`
TOMCAT_DIR="/usr/local/tomcat2/"
FILES="edu.war"
DES_DIR="/usr/local/tomcat2/webapps/ROOT/"
DES_URL="http://192.168.85.120/download"
BAK_DIR="/export/backup/`date +%Y%m%d-%H%M`"
[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID
cd $DES_DIR
rm -rf $FILES
mkdir -p $BAK_DIR;cp -a $DES_DIR/* $BAK_DIR/
rm -rf $DES_DIR/*
wget -c $DES_URL/$FILES
/usr/java/jdk1.8/bin/jar -xf $FILES
####################
cd $TOMCAT_DIR;rm -rf work
/bin/sh $TOMCAT_DIR/bin/startup.sh
sleep 10
tail -n 50 $TOMCAT_DIR/logs/catalina.out
批量自动部署
jenkins服务器上安装ansible
cat /etc/ansible/hosts
[web]
192.168.85.120 ansible_ssh_user=root ansible_ssh_pass=123456
192.168.85.130 ansible_ssh_user=root ansible_ssh_pass=123456
job配置àPost Steps àExcute Shell:
yes|cp /root/.jenkins/workspace/www.jfedu.net/www/target/edu.war /var/www/html/download/
ansible web -m copy -a 'src=/root/auto_deploy.sh dest=/tmp'
ansible web -m shell -a 'cd /tmp/;/bin/bash auto_deploy.sh'
git parameter发布
远程管理
ssh remote插件
系统设置 --》 SSH remote hosts 添加主机
php任务-->配置 -->构建 --> 增加构建步骤 --》Execute shell script on remote host using ssh -->command t 相当在远程服务器执行远程服务器脚本或命令
定时构建
新建 --》clear_log -->构建一个自由风格的软件项目 --》构建触发器 --》Build perioddically (构建周期) --》点问号:帮助---》日程表:H/1 * * * * 每一分钟执行一次
--》构建 ---》增加构建 --》Execute shell --> echo $(date) >> /root/clear_log.txt
邮件配置
安装email-ext,emailext-template,token-macro插件
配置集群
node节点安装java环境:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel –y
#下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-8u91-linux-x64.tar.gz
tar -xzf jdk-7u25-linux-x64.tar.gz ; mkdir -p /usr/java/ ; mv jdk1.8.0_25/ /usr/java/jdk1.8
#然后配置环境变量,这样可以任何地方引用jdk,如下配置:
#vi /etc/profile 最后面加入以下语句:
export JAVA_HOME=/usr/java/jdk1.8
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
#source /etc/profile #使环境变量马上生效
#java -version #查看java版本,看到jdk1.8.0_25版本即代表java jdk安装成功。
系统设置 --》security安全设置 --》启用安全 端口 30000(可不设置)
系统设置 --》管理节点 ---》jenkins_node -->permanent agent
如果要并发: 节点à尽可能的使用这个节点 配置à在必要的时候并发构建
executors:5 执行器
远程工作目录:/data/jenkins -->只允许绑定这台机器的job -->Luanch slave agents via SSh ( 通过ssh来启动) –> non Verifying -->window是就选 windows --> Host key Verification -->non Verifying -->添加节点的root账号和密码
在job配置项里选上 Restrict where this project can be run 指定节点构建 --》填上节点名
按角色授权:
需要有Role-based Authorization Strategy 插件
系统管理--》访问控制 --》授权策略 --》选上Role-Based Strategy (保存)
用户 ---》
系统设置--》管理用户 --》新建用户 --》用户java/密码java php/密码php
系统管理--》Manage and Assign Roles --》Manage Roles -->project roles Roles to add:java-team Pattern:java.*所有项目 java开头的都关联到java-team上来
系统管理--》Manage and Assign Roles --》Manage Roles -->project roles Roles to add:php-team Pattern:php.*所有项目 php开头的都关联到php-team上来
给的权限: build cancel configure create delete discover move read workspace delete replay update
系统管理--》Manage and Assign Roles --》Assign Roles分配角色 --> project roles-->输入java/php 勾上java-team/php-team
添加全局权限:
系统管理--》Manage and Assign Roles --》 global roles -->read角色--》分配:Overall全局只读Read权限 用于登录系统
系统管理--》Manage and Assign Roles --》Assign Roles分配角色 -->global roles 输入java/php 都勾上 read
系统管理--》Manage and Assign Roles --》 global roles -->newjob角色--》分配:Overall全局只读 Read权限 Job任务创建Create权限 用于创建job
系统管理--》Manage and Assign Roles --》Assign Roles分配角色 -->global roles 输入java/php 都勾上newjob