环境信息
centos7.2
安装目录
maven下载与安装
GIT下载与安装
jenkins下载与安装
idea与jenkins的爱恨情仇
maven下载与安装
1. 安装前工作
下载与安装
下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
解压
tar -zxvf apache-maven-3.5.4-bin.tar.gz
移动并且改名
mv apache-maven-3.5.4 ./../apache-maven-3.5.4
查看位置
[root@iz2ze7qyvg1mht4uptlc5uz apache-maven-3.5.4]# pwd
/usr/local/java/apache-maven-3.5.4
编辑配置
vim /etc/profile
增加以下配置
export MAVEN_HOME=/usr/local/java/apache-maven-3.5.4
export PATH=${PATH}:${MAVEN_HOME}/bin
文件生效
source /etc/profile
查看是否安装成功
[root@iz2ze7qyvg1mht4uptlc5uz apache-maven-3.5.4]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/java/apache-maven-3.5.4
Java version: 1.8.0_151, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_151/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.9.1.el7.x86_64", arch: "amd64", family: "unix"
GIT下载与安装
1. 安装前工作
下载
下载
wget https://www.kernel.org/pub/software/scm/git/git-2.9.2.tar.gz
解压
tar -xzvf git-2.9.2.tar.gz
移动并且改名
mv git-2.9.2 ./../git-2.9.2
查看位置
[root@iz2ze7qyvg1mht4uptlc5uz git-2.9.2]# pwd
/usr/local/java/git-2.9.2
安装
#进入解压后的git目录后,执行:
./configure
#执行编译
make all prefix=/usr/local/git
#编译完成后, 安装到 /usr/local/git 目录下
make install prefix=/usr/local/git
安装常见依赖问题
如果想省事请直接安装一下依赖包
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
[root@iz2ze7qyvg1mht4uptlc5uz git-2.9.2]# make install
GIT_VERSION = 2.9.2
* new build flags
CC credential-store.o
In file included from credential-store.c:1:0:
cache.h:40:18: fatal error: zlib.h: No such file or directory
#include <zlib.h>
^
compilation terminated.
make: *** [credential-store.o] Error 1
#出现错误,增加zlib依赖
rpm -qa | grep zlib查看是否安装zlib
#没有安装
yum install zlib
#下面的这个需要安装
yum install zlib-devel
[root@iz2ze7qyvg1mht4uptlc5uz git-2.9.2]# make install
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
make: *** [perl/perl.mak] Error 2
需要安装perl的一个模块:perl-ExtUtils-Embed
yum install perl-ExtUtils-Embed -y
查看结果
git --version
创建账号
#为我们刚刚搭建好的 git 创建一个账号
useradd -m gituser(自己的账号)
#然后会让你输入密码(密码应该需要特殊符号+数据+大小写字母)
passwd gituser(刚刚创建的用户名)
创建 git 仓库并初始化
mkdir -p /data/repositories
cd /data/repositories/
git init --bare testGit.git
配置用户权限
#给 git 仓库目录设置用户和用户组并设置权限:
chown -R gituser:gituser /data/repositories
chmod 755 /data/repositories
#查找 git-shell 所在目录
(默认在/usr/local/git/bin/git-shell,如果不在用: which git-shell指令查找)
# 编辑 /etc/passwd 文件,将最后一行关于 gituser 的登录 shell 配置改为 g
gituser:x:1000:1000::/home/gituser:/usr/local/bin/git-shell
使用搭建好的 Git 服务
#克隆 test repo 到本地:
git clone gituser@ip:/data/repositories/test.git
jenkins下载与安装
Jenkins是一个Master-Slave的架构,它可以把任务发布到不同的节点上执行,典型的应用场景是你有2个运行环境,一个是测试环境,一个是生产环境,你可以指定工作流中,哪些任务在测试环境中执行,哪些任务在生产环境中执行。当然,如果你没有这样的需求,也可以不配置Slave.
安装说明
本文是在linux服务器上安装的,使用时在windows上安装即可,他是在windos上安装好jenkins之后,然后再把本地jenkins打好的war包发布到linux服务器上,然后执行自定义的操作(如启动Tomcat)[在jenkins上可以指定把本地的war包上传到linux服务器上的某个文件夹的位置,然后你可以移到到tomcat的webapp中然后再发布,这些都可以使用shell命令完成]
1. 安装前工作
安装方式(四种)
- 离线安装
## http://pkg.jenkins-ci.org/redhat/
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.39-1.1.noarch.rpm ## 下载(也可以Windows下载再转过来)
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins.io.key ## 公钥
sudo yum -y install jenkins-*.noarch.rpm
- 在线安装
## http://pkg.jenkins-ci.org/redhat/
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo yum -y install jenkins
- 基于 Tomcat 安装
安装并启动 Tomcat;
从官网下载 jenkins.war 至 $CATALINA_BASE/webapps,Tomcat 会自动部署;
浏览器访问:http://centos:8080/jenkins/
- 免安装方式
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
sudo java -jar jenkens.war ## 启动服务,直至看到日志 `Jenkins is fully up and running`
curl http://localhost:8080/ ## Jenkins 已就绪
密码破解
cd /var/lib/jenkins/users/admin #此为admin用户的目录,也可以对应自己创建的用户
vim config.xml //定位到<passwordHash>那一行
删除改行,改为
<passwordHash>#jbcrypt:$2a$10$pDQks0ytOkCfmpdgpLygrOC3uY7i/XnZHBKRQDhrBPwKoN2f5Kz8C</passwordHash>
重启一下jenkins
新密码为admin
启动与关闭
#关闭
service jenkins stop
#状态
service jenkins status
#启动
service jenkins start
#设置为自动启动
chkconfig jenkins on
jenkins安装中文显示
前提:先安装插件:Locale plugin
配置如下:
jienkins->【系统管理】->【系统设置】->【Locale】,输入:zh_CN,这里还有很多语言,比如:en_US等都是国际化标志。
jenkins的基本插件安装
#邮件发布邮件通知插件
Mailer
#邮件发布邮件通知插件
Email Extension
#GIT相关插件
GitHub
This plugin integrates GitHub to Jenkins.
#Locale
中文插件
#maven插件
Maven Integration
This plug-in provides, for better and for worse, a deep integration of Jenkins and Maven: Automatic triggers between projects depending on SNAPSHOTs, automated configuration of various Jenkins publishers (Junit, ...).
#使用ssh方式发布插件
Publish Over SSH
Send build artifacts over SSH
#svn插件
Subversion
jenkins的基础工具配置
选择
Manager Jenkins
Global Tool Configuration的配置
配置一下下面工具的位置
Maven Configuration
JDK
Git
访问端口登录
#查看密码
cat /var/lib/jenkins/secrets/initialAdminPassword
配置maven,jdk,git(如果没有git插件配置项,去安装git的相关插件)
针对之前手动安装的maven需要在web界面配置进行结合。
系统管理—全局工具配置(Maven Configuration)配置:
对应的英文配置目录为
jenkins
------Manage Jenkins
----------Global Tool Configuration
然后配置Maven Configuration(配置maven的setting.xml位置)和JDK(java_home的位置)和Maven三项(maven_home的位置)
配置系统的一些属性
自动部署方式
使用jenkins搜索插件Publish Over SSH安装重启
jenkins部署执行shell脚本没有权限的解决办法
[root@kunzai runing]# vim /etc/sysconfig/jenkins
修改$JENKINS_USER的值为root
JENKINS_USER="root"
修改jenkins的权限所有者为root
[root@kunzai runing]# chown -R root:root /var/lib/jenkins/
[root@kunzai runing]# chown -R root:root /var/cache/jenkins/
[root@kunzai runing]# chown -R root:root /var/log/jenkins/
重启jenkins
service jenkins restart
jenkins创建项目的时候没有“创建一个maven项目的解决方案”
点击“可选插件” 然后在右边的过滤输入框中输入搜索关键字: Maven Integration Plugin 或者 Pipeline Maven Integration Plugin ,搜索到了以后,点击直接安装,
安装完成后重启就好了。
配置Publish over SSH
在系统管理-》系统设置里找到Publish over SSH
配置如下
接着配置我们的项目
讲解:
Transfer SetSource files:表示要上传的本地的war包及路径(注意:相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)
Remove prefix:表示要上传时要去除的文件夹,移除目录(只能指定Transfer Set Source files中的目录,这里移除了target目录表示只将FinServer.war传到目标服务器,否则会在目标服务器创建target目录)
remote driectory:即表示执行时的路径,相当于把war包上传到这里了。远程目录(根据你的需求填写,这里没有填写默认会继承系统配置,即/mnt)
exec commad:要执行的命令;把你要执行的命令写在里面(这里的命令是在目标服务器上执行的)
构建ssh自动发布的注意点
Jenkins搭建过程中,使用 Publish Over SSH 插件。发生 SSH: Transferred 0 file(s)。
配置如下:
Source files **/* 表示{projectName}这个job的工作目录下所有的文件和目录(这个是你本地生成的war项目,将要上传发布的war包我写的是target/*.war)。
Remove prefix 该操作是针对上面的source files目录,会移除匹配的目录。通常留空(我写的是target/)。
Remote directory 该操作是基于设定的服务器目录进行(这个将source files的war上传到服务器上的位置,我写的是/usr/local/java/apache-tomcat-8.0.47-jenkins/projectTemp)。
Exec command 远程服务器执行的命令。例如可以输出 service jenkins restart 或者 /home/xx. sh 均可(这个是上传成功之后执行的远程服务器命令我写的是(sh /usr/local/java/apache-tomcat-8.0.47-jenkins/bin/restart.sh web-test)其中web-test是我写的shell命令传递的参数)。
总结
源文件 不要填绝对路径,要写相对路径。 举个栗子: 我的jar包路径是: /var/lib/jenkins/workspace/erp/target/erp.jar 这里要填 target/*。
自动执行脚本
restart.sh
#!/bin/sh
#defined
path=$(cd `dirname $0`; pwd)
echo curr path:${path}
projectName=$1
if [ ! -n "$1" ] ;then
echo THE ONE PARAMTER IS NULL!
exit
else
echo The One Paramter IS TRUE AND THE SERVICE PROJECT IS :${projectName}
fi
echo ===stop service===
sh /usr/local/java/apache-tomcat-8.0.47-jenkins/bin/shutdown.sh
echo ===waiting===
for ((i=10;i>=5;i--))
do
echo "wait:$i"
sleep 1s
done
echo "*****************"
echo CHECK PATH IS EXISTS:/usr/local/java/apache-tomcat-8.0.47-jenkins/webapps/${projectName}.war
if [ -f "/usr/local/java/apache-tomcat-8.0.47-jenkins/webapps/${projectName}.war" ]; then
echo "TRUE"
echo "THE PATH IS EXISTS SERVICE PROJECT IS ${projectName}.war ,WILL REMOVE THE SERVICE PROJECT!"
rm -rf ${projectName}
rm -rf ${projectName}.war
else
echo "FALSE"
fi
echo ===cp the Project===
cp /usr/local/java/apache-tomcat-8.0.47-jenkins/projectTemp/${projectName}.war /usr/local/java/apache-tomcat-8.0.47-jenkins/webapps/${projectName}.war
echo ===waiting===
for ((i=4;i>=0;i--))
do
echo "wait:$i"
sleep 1s
done
echo "*****************"
#sleep 1s 表示延迟一秒
#sleep 1m 表示延迟一分钟
#sleep 1h 表示延迟一小时
#sleep 1d 表示延迟一天
echo ===start Service===
sh /usr/local/java/apache-tomcat-8.0.47-jenkins/bin/startup.sh
讲解:
步骤:
先停掉tomcat
删除webapp下对应的war包
复制war到webapps
重启tomcat
构建
点击构建-就会运行了
Idea与jenkins的爱恨情仇
安装Jenkins Control插件
- 搜索Jenkins Control
- 安装Jenkins Control
- 重启IDEA
使用Jenkins Control插件
- 打开idea的配置
- Tools->Jenkins Plugin的配置[见下图]【注意Password一栏输入Jenkins的用户密码可能不对】
- 点击Test Connection如果出现[CSRF enabled -> Missing or bad crumb data]
- 解决方案:
-1. Dashboard->Manage Jenkins->Configure Global Security->【开启CSRF Protection配置】
-2. 点击右上角用户名称->Configuration->API Token->Add new Token->【将产生的token输入到idea中的password中即可】
- 解决方案: