Jenkins 部署前后端分离构建多git项目,打包后远程部署服务器

当前项目为Pipeline 流水线项目

前端使用Vue 通过nodejs打包

后端spring boot 通过maven打包

在一个Pipeline下进行两个git项目拉取、构建、备份、本地/远程部署

下述pipeline script中包含pipeline多种独特的语法,请各位仔细查看。

This project is parameterized

 

Pipeline Script

 

pipeline {
    agent any
    
    stages {
        stage('前端代码拉取') {
            steps {
                //在一个pipeline下,拉取多个git项目,必须给每一个项目建立文件夹进行存放
                sh "mkdir -p ./vue-project"
                // pipeline语法下切换当前目录,注:不能使用cd命令进行切换,每次执行新的shell命令时会被重置
                dir('./web-project') {
                    git branch: "${params.branch}", credentialsId: '650e9c98-ba94-4a06-b3e5-1b3d4f2be5ae', url: 'git://10.51.xxx.xxx/vue-project.git'
                }
                
            }
        }
        stage('后端代码拉取') {
            steps {
                sh "mkdir -p ./java-project"
                dir('./java-project') {
                    git branch: "${params.branch}", credentialsId: '650e9c98-ba94-4a06-b3e5-1b3d4f2be5ad', url: 'git://10.51.xxx.xxx/java-project.git'
                }
            }
        }
        stage('前端构建') {
            steps {
                dir('./vue-project') {
                    sh "npm install"
                    sh "npm run build"
                }
            }
        }
        stage('后端构建') {
            steps {
                // 将vue项目build后的文件移动到java的resource目录下
                sh "cp -rf vue-project/web java-project/demo/src/main/resources/templates"
                dir('./java-project') {
                    sh "mvn -DskipTests -Dmaven.test.failure.ignore=true clean package"
                }
            }
        }

        stage('程序包备份') {
            steps {
                // 复制一份当前运行的jar为备份文件,补充bak+时间的后缀
                sh "cp -f /home/data/java-project-0.0.1-SNAPSHOT.jar /home/data/java-project-0.0.1-SNAPSHOT.jar_bak\$(date '+%Y%m%d%H%M%S')"
            }
        }
        
        stage('部署') {
            steps {
                script{
                    //如果目标服务器选择的是jenkins所部署的服务器,则只需对本机执行shell
                    // pipeline的if语法必须在script{}中编写
                    if ("${params.target}" == "10.51.xxx.xxx" ) {
                         // 将jenkins workspace里面的git拉取后打包的jar移动到工作目录
                        sh "cp -f java-project/demo/target/java-project-0.0.1-SNAPSHOT.jar /home/data"
                        // run.sh是我自己写的一个启动jar包的脚本,主要内容是nohup java -jar xxx.jar &的内容
                        sh "sh /home/data/run.sh start"
                    }else {
                        // scp将本地的jar复制到远程服务器,这里需要进行ssh免密登录的配置,不然会执行失败
                        sh '''
                            ssh ${target} "cp -f /home/data/java-project-0.0.1-SNAPSHOT.jar /home/data/java-project-0.0.1-SNAPSHOT.jar_bak\$(date '+%Y%m%d%H%M%S')"
                            scp java-project/demo/target/java-project-0.0.1-SNAPSHOT.jar ${target}:/home/data
                            ssh ${target} "sh /home/data/run.sh restart"
                        '''
                    }
                }
            }
        }
    }
}

 

Jenkins系列文章:

一、Jenkins 系列教程-史上最简单Jenkins教程,教你一天学会使用Jenkins利器

二、Centos 安装nodejs

三、Centos 安装Maven

四、Linux下安装java JDK

五、jenkins启动报错 Job for jenkins.service failed because the control process exited with error code.

六、jenkins启动成功,警告Warning: jenkins.service changed on disk.

七、Jenkins以root用户运行

八、Jenkins配置中文语言

九、Jenkins 报mvn:command not found、npm:command not found

十、Jenkins批量删除构建历史

十一、Jenkins 部署前后端分离构建多git项目,打包后远程部署服务器

十二、ssh-copy-id输入密码后Permission denied, please try again.

十三、Jenkins Publish over SSH、SSH免密登录、SCP免密传输、Jenkins远程传输文件、Jenkins远程部署

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于Jenkins自动部署前后端分离项目的过程,可以按照以下步骤进行操作: 1. 首先,下载好前端和后端的项目代码,并将其打包成war包。 2. 将war包部署服务器上,可以使用以下命令进行启动: ``` nohup java -jar jenkins.war > ../logs/jenkins.log 2>&1 & ``` 这样就可以在后台启动Jenkins。 3. 进入Jenkins的后台页面,通过在浏览器中输入Jenkins的URL地址来访问。 4. 在Jenkins后台页面中,可以创建一个新的任务来进行自动部署。例如,可以在任务配置中指定前端项目的代码仓库地址和构建脚本,以及后端项目的代码仓库地址和构建脚本。 5. 在Jenkins的任务配置中,可以设置触发器,例如每当有新的提交时自动触发构建。这样,当有新的代码提交到代码仓库时,Jenkins就会自动进行构建部署。 6. 在Jenkins的任务配置中,可以设置构建步骤,例如编译前端项目、编译后端项目打包部署等。根据具体项目的需求,可以自定义构建步骤。 7. 完成任务配置后,保存并启动任务。Jenkins会根据配置的触发器自动进行构建部署。 8. 在部署完成后,可以通过Tomcat等服务器来访问部署好的前后端分离项目。可以通过访问相应的URL地址来查看项目的运行情况。 综上所述,通过以上步骤,可以实现Jenkins自动部署前后端分离项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [jenkins一键部署前后端分离项目](https://blog.csdn.net/weixin_45880270/article/details/124308587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Jenkins部署前后端分离项目最全图文教程(手把手教学)](https://blog.csdn.net/HJW_233/article/details/131816735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值