一、安装Jenkins
Jenkins可以通过Docker和手动安装两种方式。因为存在在Docker里运行的项目与Docker同生命周期、需要暴露项目接口和关联项目在宿主机文件等问题,所以不建议Docker安装方式。如果是管理远程发布项目,可以使用Docker安装方式。
现在Jenkins要求至少JDK11,建议直接按最新版本使用JDK17为好,要不一大堆安装插件和运行问题。
1.1 通过Docker安装Jenkins,以下为docker-compose.yml
前提是已经安装好了Maven,或者不安装之后在Jenkins配置中使用自动安装。如果没有事先安装好JDK17, 通过Docker安装Jenkins时默认在容器内安装了。
version : '3.8'
services:
dlmz-jenkins:
container_name: dlmz-jenkins
image: jenkins/jenkins:lts
privileged: true #使用该参数,container内的root拥有真正的root权限。
restart: always #在容器退出时总是重启容器
user: root #指定用户
ports:
- "8080:8080"
- "8081:50000"
- “8888:8888” #jenkins的项目构建端口映射
volumes:
- /etc/localtime:/etc/localtime:ro #容器时区与宿主机保持一致
- ./jenkins/jenkins_home:/var/jenkins_home #jenkins工作空间
- /usr/local/apache-maven-3.8.1:/usr/share/maven #maven安装目录
- /usr/local/src:/usr/local/src #maven项目源码目录
environment:
TZ: Asia/Shanghai #指定容器运行所属时区
1.2 通过手动安装Jenkins
前提是已经安装好了Maven,或者不安装之后在Jenkins配置中使用自动安装。事先安装好JDK17。
Jenkins官网下载地址:https://www.jenkins.io/download/
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
sudo systemctl start jenkins
安装之后,安装目录/var/lib/jenkins
二、设置Jenkins
2.1 访问http://ip:8080, 选择推荐安装,再设置管理员信息,再保存访问地址就OK了。
2.2 在管理->插件中选择安装Maven Integration plugin、Publish Over SSH、NodeJS Plugin(按需)
2.3 在管理->插件中设置Maven全局信息
2.4在管理->插件中设置Nodejs全局信息(按需)
2.5在管理->系统中设置SSH信息
三、部署项目
3.1 后端maven项目在当前服务器部署
clean package -Dmaven.test.skip=true
#删除之前的jar包
rm -rf /usr/local/src/dlmz-admin/dlmz-admin.jar
#把jar包移动到指定目录,这里要注意:默认所处位置是在workspace下的当前项目文件夹下,即在xxx项目下
cp -rf /var/lib/jenkins/workspace/dlmz-admin-local/dlmz-admin/target/dlmz-admin.jar /usr/local/src/dlmz-admin/
#进入指定目录
cd /usr/local/src/dlmz-admin/
#阻止jenkins杀死项目进程
export BUILD_ID=dontKillMe
#执行启动脚本(没有脚本可以执行启动命令:nohup java -jar xxx.jar &)
# ./startup.sh
nohup java -jar dlmz-admin.jar &
3.2 后端maven项目在远程服务器部署
cd /usr/local/src/dlmz-admin
nohup java -jar dlmz-admin.jar &
3.3 后端maven项目Pipeline方式部署
node {
stage('Preparation') {
// Get some code from a GitHub repository
git branch: 'jenkins', credentialsId: '17b9****-****-41f3-bc14-977a****def1', url: 'https://gitee.com/xxx/xxx-project.git'
}
stage('Build') {
// Run the maven build
sh '/usr/local/apache-maven-3.8.1/bin/mvn -Dmaven.test.failure.ignore clean package'
}
stage('PostStep') {
sh '''
#删除之前的jar包
rm -rf /usr/local/src/dlmz-admin/dlmz-admin.jar
#把jar包移动到指定目录,这里要注意:默认所处位置是在workspace下的当前项目文件夹下,即在xxx项目下
cp -rf /var/lib/jenkins/workspace/dlmz-admin-pipeline/dlmz-admin/target/dlmz-admin.jar /usr/local/src/dlmz-admin/
#进入指定目录
cd /usr/local/src/dlmz-admin/
export JENKINS_NODE_COOKIE=dontKillMe
#执行启动脚本(没有脚本可以执行启动命令:nohup java -jar xxx.jar &)
# ./startup.sh
nohup java -jar dlmz-admin.jar>nohup.log 2>&1 &
'''
}
stage('Result') {
echo 'Success'
}
}
3.4 部署VUE前端项目
# 参考
cd ./dlmz-ui-admin
npm install
rm -rf ./dist/*
npm run build:prod
echo '打包完毕'
这里是拉取最新代码和打包,具体再移到实际项目目录和nginx配置访问,可以根据实际项目情况配置。