1、添加Jenkins的源(repository):
①sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo //采用root权限
②sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
2. 安装/检查JDK:
$ java --version //若安装的话,此处会显示版本号
$ sudo yum install java-1.6.0-openjdk //如果没有安装,则在这里进行安装
3、安装Jenkins:
$ sudo yum install jenkins
安装完成后,有如下相关目录:
(3.1)/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里。
$ cd /usr/lib/jenkins
$ ll
-rw-r--r-- 1 root root 52891723 Feb 27 00:13 jenkins.war
(3.2) /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。内容如下:
## Path: Development/Jenkins
## Description: Configuration for the Jenkins continuous build server
## Type: string
## Default: "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Java executable to run Jenkins
# When left empty, we'll try to find the suitable Java.
#
JENKINS_JAVA_CMD=""
## Type: string
## Default: "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"
## Type: string
## Default: "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
## Type: integer(0:65535)
## Default: 8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="8080"
## Type: integer(0:65535)
## Default: 8009
## ServiceRestart: jenkins
#
# Ajp13 Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_AJP_PORT="8009"
## Type: integer(1:9)
## Default: 5
## ServiceRestart: jenkins
#
# Debug level for logs -- the higher the value, the more verbose.
# 5 is INFO.
#
JENKINS_DEBUG_LEVEL="5"
## Type: yesno
## Default: no
## ServiceRestart: jenkins
#
# Whether to enable access logging or not.
#
JENKINS_ENABLE_ACCESS_LOG="no"
## Type: integer
## Default: 100
## ServiceRestart: jenkins
#
# Maximum number of HTTP worker threads.
#
JENKINS_HANDLER_MAX="100"
## Type: integer
## Default: 20
## ServiceRestart: jenkins
#
# Maximum number of idle HTTP worker threads.
#
JENKINS_HANDLER_IDLE="20"
## Type: string
## Default: ""
## ServiceRestart: jenkins
#
# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS=""
复制代码
(3.3)/var/lib/jenkins/:默认的JENKINS_HOME。目录结构如下:
复制代码
$ cd /var/lib/jenkins/
$ ls -lst
total 216
4 -rw-r--r-- 1 jenkins jenkins 0 Mar 18 23:59 Fingerprint cleanup.log
4 -rw-r--r-- 1 jenkins jenkins 0 Mar 18 18:54 Workspace clean-up.log
8 drwxr-xr-x 180 jenkins jenkins 4096 Mar 18 17:04 fingerprints
8 -rw-r--r-- 1 jenkins jenkins 1636 Mar 18 16:41 config.xml
8 -rw-r--r-- 1 jenkins jenkins 903 Mar 18 16:41 hudson.maven.MavenModuleSet.xml
8 -rw-r--r-- 1 jenkins jenkins 1122 Mar 18 16:41 hudson.plugins.sonar.SonarPublisher.xml
8 -rw-r--r-- 1 jenkins jenkins 205 Mar 18 16:41 hudson.plugins.sonar.SonarRunnerInstallation.xml
8 -rw-r--r-- 1 jenkins jenkins 196 Mar 18 16:41 hudson.scm.CVSSCM.xml
8 -rw-r--r-- 1 jenkins jenkins 692 Mar 18 16:41 hudson.scm.SubversionSCM.xml
8 -rw-r--r-- 1 jenkins jenkins 145 Mar 18 16:41 hudson.tasks.Ant.xml
8 -rw-r--r-- 1 jenkins jenkins 187 Mar 18 16:41 hudson.tasks.Mailer.xml
8 -rw-r--r-- 1 jenkins jenkins 330 Mar 18 16:41 hudson.tasks.Maven.xml
8 -rw-r--r-- 1 jenkins jenkins 76 Mar 18 16:41 hudson.tasks.Shell.xml
8 -rw-r--r-- 1 jenkins jenkins 215 Mar 18 16:41 hudson.triggers.SCMTrigger.xml
8 -rw-r--r-- 1 jenkins jenkins 264 Mar 18 16:41 jenkins.model.JenkinsLocationConfiguration.xml
8 -rw-r--r-- 1 jenkins jenkins 907 Mar 18 16:29 nodeMonitors.xml
8 -rw-r--r-- 1 jenkins jenkins 159 Mar 18 16:29 hudson.model.UpdateCenter.xml
8 -rw-r--r-- 1 jenkins jenkins 46 Mar 18 16:29 queue.xml.bak
8 drwxr-xr-x 2 jenkins jenkins 4096 Mar 18 16:24 updates
4 -rw-r--r-- 1 jenkins jenkins 0 Mar 16 10:27 Connection Activity monitoring to slaves.log
8 drwxr-xr-x 6 jenkins jenkins 4096 Mar 13 18:24 workspace
8 drwxr-xr-x 13 jenkins jenkins 4096 Mar 13 17:59 jobs
8 drwx------ 2 jenkins jenkins 4096 Feb 28 11:16 secrets
8 -rw-r--r-- 1 jenkins jenkins 165 Feb 27 13:29 sonar.xml
8 drwxr-xr-x 14 jenkins jenkins 4096 Feb 27 13:29 plugins
8 -rw------- 1 jenkins jenkins 1679 Feb 27 12:12 identity.key
8 drwxr-xr-x 2 jenkins jenkins 4096 Feb 27 12:12 userContent
8 -rw-r--r-- 1 jenkins jenkins 64 Feb 27 12:12 secret.key
4 -rw-r--r-- 1 jenkins jenkins 0 Feb 27 12:12 secret.key.not-so-secret
(3.4)/var/log/jenkins/jenkins.log:Jenkins日志文件。
4. 启动Jenkins
$ sudo service jenkins start
有可能出现错误:“Starting Jenkins -bash: /usr/bin/java: No such file or directory”。表示找不到Jenkins找不到java。
这时就需要“vi /etc/init.d/jenkins”,把java路径加上(如下):
复制代码
64 # Search usable Java. We do this because various reports indicated
65 # that /usr/bin/java may not always point to Java 1.5
66 # see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
67 for candidate in /etc/alternatives/java /usr/lib/jvm/java-1.6.0/bin/java /usr/lib/jvm/jre-1.6.0/bin/java /usr/lib/jvm/java-1 .5.0/bin/java /usr/lib/jvm/jre-1.5.0/bin/java /opt/app/jdk1.7.0_09/bin/java
68 do
69 [ -x "$JENKINS_JAVA_CMD" ] && break
70 JENKINS_JAVA_CMD="$candidate"
71 done
5. 登录Jenkins
如果没有特别配置端口,使用http://<ip address>:8080/登录Jenkins,并进行相关配置(插件安装、权限配置、View/Job创建等等)。
然后登录jenkins进行插件的下载与配置
点击新建项目
输入item name 选择构建一个maven项目 然后点击OK
接下来在源码管理里面选择 自己的管理工具我用的是subversion
然后在 Repository URL 里面输入svn的地址并在 Credentials 添加svn账号和密码
然后在build里面设置 Root POM 我的设置为3ctv-parent/pom.xml设置父项目的pom文件
然后设置 Goals and options 我用的是clean install
然后选择 增加构建后参作步骤 send build actifacts over ssh
选择要部署到的服务器
Source files 设置为3ctv-activity/dist/activity.war (自己设置的打包到dist目录下面)
然后remove prefix 3ctv-activity/dist/
然后执行远程命令 /home/hezt/publish.sh activity 8080 /tomcat/tomcat_8080 activity指的是项目名称 8080值得是端口号 /tomcat/tomcat_8080指的是tomcat的绝对路径
publish.sh要赋权限
然后点击保存
publish.sh内容
#!/bin/bash
TOMCAT_HOME=/tomcat/tomcat_8080 设置TOMCAT_HOME 默认为/tomcat/tomcat_8080
TOMCAT_PORT=8080 设置默认端口 8080
PROJECT=api 设置默认项目名称 api
echo $TOMCAT_HOME
if [ $# -lt 1 ]; then 如果不满足这个格式的话直接退出
echo "you must use like this : ./publish.sh <projectname> [tomcat port] [tomcat home dir]"
exit
fi
if [ $1 != "" ]; then 把传进来的值替换默认值
PROJECT=$1
fi
if [ $2 != "" ]; then
TOMCAT_PORT=$2
fi
if [ $3 != "" ]; then
TOMCAT_HOME=$3
fi
$TOMCAT_HOME/bin/shutdown.sh 先关闭tomcat
echo 'tomcat shutdown'
tomcat_pid=`/usr/sbin/lsof -n -P -t -i:$TOMCAT_PORT` 获得该tomcat的pid
echo "current:1"$tomcat_pid"2"
while [[ -n $tomcat_pid ]] 判断pid时候存在
do
sleep 5 如果存在的话暂停5秒接着判断 (逻辑不严禁,如果一直停不掉应该kill 该id,暂时保留)
tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
echo "scan tomcat pid :" $tomcat_pid
done
echo "scan no tomcat pid," $PROJECT "publishing"
rm -rf $TOMCAT_HOME/webapps/$PROJECT* 先删除该项目解压的包
cp /home/hezt/war/$PROJECT*.war $TOMCAT_HOME/webapps/$PROJECT.war 把自动化打包过来的包复制到该tomcat下面并重命名为project
BAK_DIR=/home/hezt/bak/$PROJECT/`date +%Y%m%d` 创建备份目录
mkdir -p $BAK_DIR
cp $TOMCAT_HOME/webapps/$PROJECT.war $BAK_DIR/$PROJECT"_"`date +%H%M%S`.war 把旧的包进行备份
rm -rf /home/hezt/war/$PROJECT*.war 删除自动化打包过来的包
$TOMCAT_HOME/bin/startup.sh 重新启动tomcat
echo "tomcat is starting,please try to access $PROJECT conslone url"