wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm
rpm -ivh jenkins-2.83-1.1.noarch.rpm
vi /etc/sysconfig/jenkins
可以修改用户和端口
JENKINS_USER=“jenkins” (这个可以改成root 不然jenkins会操作某些文件夹没有权限。)
JENKINS_PORT=“8080”
systemctl start jenkins
如果是自定义安装的java,需要在/etc/rc.d/init.d/jenkins中添加java设置。否则服务无法启动。
从/var/lib/jenkins/secrets/initialAdminPassword中获取初始密码串,一路继续,选推荐安装,填账号密码等。
安装插件
然后进入全局工具配置安装maven,这里使用自己下载的maven,方便配置settings.xml文件
注意:构建的时候会报xxxxx.RELEASE.pom.part.lock (No such file or directory) and ‘parent.relativePath’ points at wrong local POM的错误,原因是jenkins用户没有权限不是root,修改仓库文件夹权限即可
#是否存在用户组:jenkins
cat /etc/group|grep jenkins
#是否存在用户:jenkins
cat /etc/passwd|grep jenkins
#查看用户jenkins的用户组
groups jenkins
————修改权限————
chown -R jenkins:jenkins repository
chmod -R g-w repository
chmod -R o-wx repository
阿里云地址
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
*
至此可以可以使用jenkins编译打包java jar报。部署在其他服务,还需要安装Publish Over SSH
在系统配置中找到
点击高级配置连接账号和密码。
注意:Remote Directory一定要设置,不然目录变成root目录下。
配置git,执行构建参数clean package -Dmaven.test.skip=true,构建后配置如下
其中,startService为shell脚本
#!/bin/bash
source /etc/profile
command=$1
jarName=$2
springProfilesActive=$3
serverPort=$4
echo "参数:$@ 数量:$#"
usage="Usage: `basename $0` (start) jarName env serverPort "
#filePath=/usr/local/xxxxxx/
filePath=`pwd`
#echo ${filePath}
function start(){
#关闭旧服务
pid=`jps -l | grep ${jarName} | awk '{print$1}'`
if [ $? -ne 0 ];
then
echo "------------$?-----${pid}请配置java /etc/profile环境---------------"
exit 2
fi
#pid=`ps -ef | grep ${jarName} | grep -v 'grep' | awk '{print$2}'` #这个为空时表现与窗口不同
echo "---$?----${pid}================="
if [ -n "${pid}" ];then
kill -9 ${pid}
echo "=======原有服务pid=${pid}已经被停止========="
fi
#启动新服务
echo ${filePath}
cd ${filePath}
ser=`nohup java -jar "${jarName}" -Duser.timezone="Asia/Shanghai" --spring.profiles.active=${springProfilesActive} --server.port=${serverPort} > /dev/null 2>&1 &`
echo "后台启动服务======》${ser}"
sleep 30
result=`curl http://localhost:${serverPort}/swagger-ui.html`
if [ $? -eq 0 ];
then
echo "=======部署成功${springProfilesActive}========"
else
echo "-----------------部署失败${springProfilesActive}---------------"
tail -n 40 "${filePath}/mylog.log"
exit 2
fi
}
function copy(){
cd ${filePath}
if test -e "${jarName}";
then
cp "${jarName}" "${jarName}.bak"
echo "文件拷贝成功---------${springProfilesActive}"
fi
}
case $command in
(start)
if [ $# -ne 4 ];then
echo "jarName=$2 springProfilesActive=$3 serverPort=$4"
exit 2
fi
start
;;
(copy)
if [ $# -ne 3 ];then
echo "jarName=$2 参数只能有两个 第一个copy 第二个jar包名,第三个环境"
exit 2
fi
copy
;;
(*)
echo "Error command"
echo "$usage"
;;
esac
echo $PATH
node -v
npm -v
#npm install -g cnpm --registry=https://registry.npm.taobao.org
#cnpm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
cnpm install
cnpm run build
cd dist
rm -rf laserAdmin.tar
tar -zcvf laserAdmin.tar *
cd ../
远程执行的shell,目的是拷贝一个备份,如果不需要就不要这段。
#!/bin/bash
source /etc/profile
devPath=/usr/local/nginx/html/dev
cd ${devPath}
#删除下面的所有文件,排除之前部署的压缩包
shopt -s extglob
rm -rf !(laserAdmin.tar)
#备份一个文件
if test -e laserAdmin.tar;
then
cp laserAdmin.tar laserAdmin.tar.bak
echo "文件拷贝成功---------dev"
fi
拷贝到nginx下并解压,注意需要修改文件和文件夹权限。
#!/bin/bash
source /etc/profile
devPath=/usr/local/nginx/html/dev
cd ${devPath}
#解压上传的包
tar zxvf laserAdmin.tar
chmod 644 `find -type f`
chmod 755 `find -type d`