Linux下使用Jenkins+Git+Maven+码云搭建自动化部署,可远程部署jar和war
本教程为2台全新阿里云服务器CentOS 6.8(以下称搭建Jenkins的为第1台服务器,可访问项目工程的为第2台服务器,以免混淆,没有说明的都是在第1台服务器root目录上操作,记得添加端口安全组和关闭防火墙),git仓库使用的是码云。
整个教程包括了jdk、tomcat、Git、Maven、Maven私服、Jenkins、zookeeper等的搭建,全部代码手敲出来了,可适当跳过自己服务器已有技术的搭建。
测试项目分为三个过程:jenkins-api、jenkins-service、jenkins-web,用的技术为SSM框架+dubbox+velocity模板引擎,其中jenkins-api需手动远程部署到maven私服,jenkins-service以jar包形式自动远程部署,jenkins-web以war包形式自动远程部署。
教程所用到的软件和工程已全部打包,清单如下:- jdk-8u151-linux-x64.gz
- apache-tomcat-8.0.50.tar.gz
- git-2.8.0.tar.gz
- jenkins.war
- nexus-2.14.8-01-bundle.tar.gz
- apache-maven-3.3.9-bin.tar.gz
- settings.xml
- zookeeper-3.4.6.tar.gz
测试项目用到的码云git地址:
aaa@qq.com:null_480_9070/jenkins-api.git
aaa@qq.com:null_480_9070/jenkins-service.git
aaa@qq.com:null_480_9070/jenkins-web.git
一、jdk1.8搭建
①检测是否安装了jdk,若有需要将其卸载java -version
②查看安装那些jdk
rpm -qa | grep java
③有则先卸载
安装jdk
下载或上传到root目录下
将其解压 tar -xvf jdk-8u151-linux-x64.gz
④安装依赖
yum install glibc.i686
⑥配置环境变量
编辑 vim /etc/profile ,在文件最后添加以下两行代码
export JAVA_HOME=/root/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
⑦保存退出,使更改的配置立即生效
source /etc/profile
⑧是否成功
java -version
二、git搭建
第一种方式:yum install git
git --version
git config --global user.name "zhou8704"
git config --global user.email "aaa@qq.com"
ssh-****** -t rsa -C "aaa@qq.com"
一路回车
cat ~/.ssh/id_rsa.pub
添加公钥到码云(没有码云的先去注册个账号)
第二种方式:
下载:
wget https://github.com/git/git/archive/v2.8.0.tar.gz
tar -xvf v2.8.0.tar.gz
sudo yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils- MakeMaker
cd git-2.8.0/
make prefix=/usr/local/git all
make prefix=/usr/local/git install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
git --version
git config --global user.name "zhou8704"
git config --global user.email "aaa@qq.com"
ssh-****** -t rsa -C "aaa@qq.com"
cat ~/.ssh/id_rsa.pub
添加公钥到码云
三、Maven私服搭建
上传或下载地址:https://www.sonatype.com/oss-thank-you-tgztar -zxvf nexus-2.14.8-01-bundle.tar.gz
cd nexus-2.14.8-01
vim bin/nexus(第23行,修改并保存退出)
RUN_AS_USER=root
bin/nexus start
访问登录:
第1台服务器地址:8081/nexus
用户名:admin
密码:admin123
访问仓库地址:
http://第1台服务器地址:8081/nexus/content/groups/public/
四、Maven搭建
上传或下载 wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -zxvf apache-maven-3.3.9-bin.tar.gzmv apache-maven-3.3.9 maven
编辑 vim /etc/profile ,在文件最后添加以下两行代码
M2_HOME=/root/maven
export PATH=${M2_HOME}/bin:${PATH}
source /etc/profile
mvn -v
替换下setting.xml文件(注意:打包中的setting文件中有个地址需要替换成自己的maven私服地址)
cp /root/settings.xml /root/maven/conf/
五、jenkins搭建
(1)描述:代码clone(Git)、代码编译(Maven)、代码运行(Tomcat)的基本环境,这里使用war包方式部署运行(2)安装tomcat:
下载或上传tomcat
tar -xvf apache-tomcat-8.0.50.tar.gz
mv apache-tomcat-8.0.50 tomcat
(3)运行jenkins(这里采用war包形式,可到官网用其他形式安装)
官网下载或上传jenkins.war
cd /root/tomcat/
cp /root/jenkins.war /root/tomcat/webapps/
bin/startup.sh
日志查看(快捷键Ctrl+C返回):
tail -f logs/catalina.out
访问:
http://第1台服务器地址:8080/jenkins
cat /root/.jenkins/secrets/initialAdminPassword
(4)安装用到的jenkins插件
系统管理 - 插件管理 - 可选插件
以下这些都需要安装:
- Deploy to container插件
- git plugin(推荐插件若安装成功,这里不用再次安装了)
- SSH
- Maven Integration
(5)配置免密登录:
使用ssh-******生成私钥公钥对,第1台服务器上操作ssh-****** -t rsa
一直回车,有选择就确定输入y
查看生成的公钥
cat /root/.ssh/id_rsa.pub
将公钥推送到第2台服务器上
ssh-copy-id -i ~/.ssh/id_rsa.pub aaa@qq.com第2台服务器地址
需要输入第2台服务器的密码
测试是否成功
ssh 第2台服务器地址
(6)第2台服务器上也要安装JDK和tomcat,步骤参照上面不再重复。
(7)第2台服务器上操作
①配置第2台服务器上的tomcat远程部署
cd /root/tomcat
vim conf/tomcat-users.xml (第37行添加以下代码,保存并退出)
<role rolename="admin-gui" />
<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="tomcat" password="tomcat" roles="admin-gui, manager-gui, manager-script"/>
把tomcat运行起来
bin/startup.sh
②上传脚本文件service-restaet.sh到第2台服务器
添加权限
chmod 777 service-restaet.sh
这里需要做一步操作,把window下的sh文件转成Linux下的,这样运行才不会报错
sed -i "s/\r//" service-restart.sh
新建一个item目录,等会用到。
mkdir item
③由于测试项目用到了dubbo,所以需要在第2台服务器上安装zookeeper(根据你的项目情况可选)
上传或下载zookeeper-3.4.6.tar.gz
tar zxf zookeeper-3.4.6.tar.gz
ll
cd zookeeper-3.4.6
mkdir data
cd conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/root/zookeeper-3.4.6/data
cd ../bin
./zkServer.sh start
(8)为自动化部署前做准备(根据你的项目情况可选)
记得把你电脑上maven的settings.xml文件替换掉
①由于测试项目jenkins-service用到了jenkins-api,需要把jenkins-api远程部署到maven私服
项目根目录下执行命令远程deployed到仓库
clean package -P json-log -Dmaven.test.skip=true
②由于*仓库下载不到dubbox2.8.4版本,需要手动远程部署到maven私服
上传或下载dubbox2.8.4源码 https://github.com/dangdangdotcom/dubbox
先在pom.xml中加:
<distributionManagement>
<repository>
<id>releases</id>
<name>Local Nexus Repository</name>
<url>http://第1台服务器地址:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Local Nexus Repository</name>
<url>http://第1台服务器地址:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
然后当前项目根目录下执行命令进行deployed
mvn deploy -Dmaven.test.skip=true
(9)jenkins系统管理相关配置(回到jenkins页面,图片如果看不清点击可放大)
①系统管理 - 全局工具配置
- 配置JDK
- 配置Git
- 配置Maven
②Credentials:
这里需要添加三个Credentials,后面会用到
添加tomcat部署账号
添加root账号
添加git私钥
查看私钥并填写(第1台服务器上操作)
cat ~/.ssh/id_rsa
添加完后如下:
③系统管理 - 系统设置:
SSH设置
(10)新建maven任务并配置(jar包远程部署教程)
新建任务
项目地址git配置:
build:
以下是图中用到的代码
clean package -P json-log -Dmaven.test.skip=true
export JAVA_HOME=/root/jdk1.8.0_151
/root/service-restart.sh stop
rm -rf /root/item/*
scp -r ${WORKSPACE}/target/lib aaa@qq.com第2台服务器地址:/root/item
scp ${WORKSPACE}/target/jenkins-service.jar aaa@qq.com第2台服务器地址:/root/item
export JAVA_HOME=/root/jdk1.8.0_151
/root/service-restart.sh start
保存后,立即构建。
部署成功:
访问rest地址:
http://第2台服务器地址:31002/services/user/getUserByAll
新建任务
项目配置:
部署成功:
访问地址:
http://第2台服务器地址:8080/jenkins-web