jenkins 自动化部署 微服务到Docker容器 以及vue 项目到 nginx
接着上面来继续部署(因为 public over ssh 启用我们这边的话准备用ssh脚本直接 免密登录执行pull 镜像和 启动镜像)如何设置免密登录我们这边就不多说了 下面我们先来改造下 上篇文章中脚本的问题第一步:在微服务名称后面加上@端口 一会我们远程启动端口的时候会用到 并设置展示的值第二步:修改一下脚本 获取到项目名称和 端口第三步:添加部署的脚本//上传到镜像仓库node{stage
·
接着上面来继续部署(因为 public over ssh 启用我们这边的话准备用ssh脚本直接 免密登录执行pull 镜像和 启动镜像)
jenkin 之前的打包过程可以去看我的这篇博客:
jenkins 流水线拉取 Gitee项目 打包 微服务 制作 Docker 镜像 并 push 到 harbor(踩坑集锦)
如何设置免密登录我们这边就不多说了 下面我们先来改造下 上篇文章中脚本的问题
第一步:
在微服务名称后面加上@端口 一会我们远程启动端口的时候会用到 并设置展示的值
第二步:
修改一下脚本 获取到项目名称和 端口
第三步:
添加部署的脚本
//上传到镜像仓库
node{
stage('clone'){
checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'd03a452e-7214-4c9b-9e23-d4c170f86fa4', url: 'https://gitee.com/xkmayun/bugvip.git']]])
}
//打包公共模块
stage("打包公共模块"){
sh "mvn -f bugvip-common clean install -Dmaven.test.skip=true"
}
def selectedProjectNames="${project_name}".split(",")
def tag= "latest"
//harbor地址
def harbor_url="192.168.10.167:85"
//镜像库的名称
def harbor_project="bugvip"
//harbor凭证
def harbor_auth="3c3e7ac0-3ca6-4453-b6ef-35b949c3cff2"
def serveAddres="192.168.10.220"
stage('编译微服务'){
for(int i =0;i<selectedProjectNames.length;i++){
def projectInfo=selectedProjectNames[i];
//获取当前名称
def projectName="${projectInfo}".split("@")[0]
//获取当前微服务的端口
def projectPort="${projectInfo}".split("@")[1]
sh "mvn -f ${projectName} clean package -Dmaven.test.skip=true dockerfile:build"
//定义镜像名称
def imageName="${projectName}:${tag}"
//对镜像打上标签
sh "docker tag ${imageName} ${harbor_url}/${harbor_project}/${imageName}"
//把镜像推送到 harbor
withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
// // //登录harbor
sh "docker login -u ${username} -p ${password} ${harbor_url}"
// //镜像上传
sh "docker push ${harbor_url}/${harbor_project}/${imageName}"
// sh "echo 镜像上传成功"
//免密 登录目标服务器
echo '----------------------免密 登录目标服务器----------------------'
sh """ ssh root@${serveAddres} <<EOF
docker stop ${projectName} || true
docker rm ${projectName} ||true
docker pull ${harbor_url}/${harbor_project}/${imageName}
docker rmi \$(docker images -f 'dangling=true' -q)
docker run --name ${projectName} -p ${projectPort}:8080 -v /data/docker_log:/tmp/logs -d ${harbor_url}/${harbor_project}/${imageName}
EOF"""
}
}
//
//
}
stage('删除多余的镜像'){
echo '----------------------删除Tag为<none>的Docker镜像----------------------'
sh 'docker rmi $(docker images -f "dangling=true" -q)'
}
}
部署vue项目的脚本
node{
stage('clone'){
checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'd03a452e-7214-4c9b-9e23-d4c170f86fa4', url: 'https://gitee.com/xkmayun/bossVue.git']]])
}
def serveAddres="192.168.10.220"
stage("打包部署"){
nodejs('nodejs'){
sh '''
npm install
npm run build:prod//注意这个打包命令 有的是 npm run build
'''
}
sh "scp -r dist/** 192.168.10.220:/usr/share/nginx/html "
// sh """ ssh root@${serveAddres} <<EOF
// EOF"""
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)