安装Docker (如有docker 可跳过)
1.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装 Docker-CE
yum install docker-ce
4.启动docker
systemctl start docker
拉取jenkins镜像并部署项目
5.创建文件夹/usr/local/jenkins
mkdir /usr/local/jenkins
6.给/usr/local/jenkins 权限
chmod 777 /usr/local/jenkins
7.创建容器并运行
docker run -p 8033:8080 -p 50000:50000 -v /usr/local/jenkins:/var/jenkins_home --name jenkins -idt docker.io/jenkins/jenkins
得到管理员密码
cat /usr/local/jenkins/secrets/initialAdminPassword
安装gitee和maven
去全局配置,配置jdk+maven+git
进入docker中的Jenkins容器输入 echo $JAVA_HOME 得到jdk的路径
生成一个项目
第一次种执行shell方式:
shell的代码:
#!/bin/bash
#服务名称
SERVER_NAME=woss_web
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,这里使用jar包,用java -jar 命令执行
JAR_NAME=woss_web-0.0.1-SNAPSHOT
# 源jar路径
#/usr/local/jenkins_home/workspace--->jenkins 工作目录
#demo 项目目录
#target 打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/woss_web/target/
# 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建
JAR_WORK_PATH=/var/jenkins_home/workspace/woss_web/target/
echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
kill -9 $id
echo "killed $id"
done
echo "结束进程完成"
#复制jar包到执行目录
echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar
BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
第二种执行shell方式:
jenkins 插件【Publish Over SSH】的使用说明
【Publish Over SSH】插件是通过SSH连接其他Linux机器,远程传输文件及执行Shell命令
Manage Jenkins -> Configure System -> Public over SSH 进行配置
填写名称、主机ip、ssh用户名、远程的目录(最好写/,后面就可以用绝对路径了)
然后点击高级,勾选【Use password authentication, or use a different key】使用密码登录,填写密码、端口、连接超时
点击【Test Configuration】,测试连接,显示Success即可
保存完成
使用:
项目中增加构建步骤,或者构建后步骤
Name:
SSH Sverver的名字列表
Source files:
jenkins本机上的文件,相对workspace的路径,如上图中表示的是/home/cmq/.jenkins/workspace/项目1/test1下的所有文件和文件名
Remove prefix:
文件复制时要过滤的目录,要不然会创建多层目录
Remote directory:
远程机上的目录,此目录是相对于【SSH Server】中的【Remote directory】的,如果不存在将会自动创建,设置为/根目录的话,这里可以用绝对路径
Exec command:
远程机器上执行的命令或脚本