【软件工具】如何使用 Jenkins 构建并部署一个 WAR 包到相应的服务器上
创始人
2025-01-17 19:03:01
0

如何使用 Jenkins 构建并部署一个 WAR 包到相应的服务器上

  • 一、使用 Jenkins 构建并部署一个 WAR 包到相应的服务器上
      • 示例 Jenkinsfile
      • 详细解释
      • 准备工作
      • 注意事项
  • 二、在 Jenkins 中,构建生成的 WAR 包通常存放在项目的工作空间(workspace)目录下
      • Maven 构建项目
      • Jenkins 构建过程
      • 示例 Jenkinsfile
      • 关键点
      • 确认 WAR 包位置

一、使用 Jenkins 构建并部署一个 WAR 包到相应的服务器上

使用 Jenkins 构建并部署一个 WAR 包到相应的服务器上,可以通过在 Jenkinsfile 中定义一系列步骤来实现。假设你需要在构建完成后将 WAR 文件复制到远程服务器,并执行相应的启动和停止命令,以下是一个示例 Jenkinsfile,可以帮助你实现这个流程。

示例 Jenkinsfile

pipeline {     agent any      environment {         REMOTE_USER = 'your-remote-user'        // 远程服务器用户名         REMOTE_HOST = 'your-remote-host'        // 远程服务器地址         REMOTE_DIR = '/path/to/remote/dir'      // 远程服务器上的目标目录         WAR_FILE = 'your-application.war'       // WAR 文件名称         SSH_KEY = credentials('your-ssh-key-id') // Jenkins 中存储的 SSH 密钥凭证 ID     }      stages {         stage('Build') {             steps {                 // 假设你使用 Maven 构建 WAR 包                 sh 'mvn clean package'             }         }          stage('Deploy') {             steps {                 script {                     // 将 WAR 包上传到远程服务器                     sshagent(['your-ssh-key-id']) {                         sh """                             scp -o StrictHostKeyChecking=no target/${WAR_FILE} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}                         """                     }                 }             }         }          stage('Stop Server') {             steps {                 script {                     // 停止远程服务器上的应用程序                     sshagent(['your-ssh-key-id']) {                         sh """                             ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'bash -c "cd ${REMOTE_DIR} && ./stop.sh"'                         """                     }                 }             }         }          stage('Start Server') {             steps {                 script {                     // 启动远程服务器上的应用程序                     sshagent(['your-ssh-key-id']) {                         sh """                             ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'bash -c "cd ${REMOTE_DIR} && ./start.sh"'                         """                     }                 }             }         }     }      post {         always {             // 清理工作或发送通知             echo 'Pipeline finished'         }     } } 

详细解释

  1. 定义环境变量

    • REMOTE_USER:远程服务器的用户名。
    • REMOTE_HOST:远程服务器的地址。
    • REMOTE_DIR:远程服务器上的目标目录。
    • WAR_FILE:构建生成的 WAR 文件名称。
    • SSH_KEY:Jenkins 中存储的 SSH 密钥凭证 ID,用于安全连接远程服务器。
  2. 构建阶段

    • 使用 Maven 构建项目,生成 WAR 包。
  3. 部署阶段

    • 使用 scp 命令将构建生成的 WAR 文件上传到远程服务器的指定目录。这里使用 sshagent 插件进行 SSH 密钥管理,确保安全的 SSH 连接。
  4. 停止服务器阶段

    • 使用 ssh 命令连接到远程服务器,并执行停止命令脚本 stop.sh
  5. 启动服务器阶段

    • 使用 ssh 命令连接到远程服务器,并执行启动命令脚本 start.sh
  6. 后期处理

    • post 块中定义一些后续操作,如清理工作或发送通知。

准备工作

  • 安装 SSH 插件:确保 Jenkins 已安装 SSH 插件(如 SSH Agent Plugin)。
  • 配置 SSH 凭证:在 Jenkins 凭证管理中配置用于连接远程服务器的 SSH 密钥,并获取相应的凭证 ID。
  • 远程脚本:确保远程服务器上存在 stop.shstart.sh 脚本,用于管理应用程序的启动和停止。

注意事项

  • 确保 Jenkins 服务器可以通过 SSH 连接到远程服务器,并且具有足够的权限执行相关命令。
  • 调试和测试 Jenkinsfile 时,建议逐步执行每个阶段,确保每一步都按预期工作。

通过这种方式,你可以实现从构建、部署到启动和停止应用程序的完整自动化流程,提高部署效率和可靠性。

二、在 Jenkins 中,构建生成的 WAR 包通常存放在项目的工作空间(workspace)目录下

在 Jenkins 中,构建生成的 WAR 包通常存放在项目的工作空间(workspace)目录下。具体路径取决于你的构建配置和工具(如 Maven、Gradle 等)的输出目录设置。

以下是一个常见的例子,假设你使用的是 Maven 构建工具:

Maven 构建项目

当你使用 Maven 构建项目并生成 WAR 包时,WAR 文件通常会被放置在项目的 target 目录中。

假设你的 Maven 项目结构如下:

my-project/   ├── src/   ├── pom.xml   └── target/        └── my-application.war 

Jenkins 构建过程

在 Jenkins 中,当你配置一个构建任务(Job)并执行构建时,Jenkins 会为该任务创建一个工作空间目录,构建过程将在这个目录中进行。

  1. 工作空间目录:工作空间目录的路径通常是:

    $JENKINS_HOME/workspace/ 

    其中 $JENKINS_HOME 是 Jenkins 的安装目录, 是 Jenkins 任务的名称。

  2. 构建输出目录:如果你使用 Maven 构建项目,构建输出目录(包含 WAR 包)的路径通常是:

    $JENKINS_HOME/workspace//target/my-application.war 

示例 Jenkinsfile

以下是一个示例 Jenkinsfile,它展示了如何在构建完成后将 WAR 包复制到远程服务器,并执行启停命令。

pipeline {     agent any      environment {         REMOTE_USER = 'your-remote-user'        // 远程服务器用户名         REMOTE_HOST = 'your-remote-host'        // 远程服务器地址         REMOTE_DIR = '/path/to/remote/dir'      // 远程服务器上的目标目录         WAR_FILE = 'my-application.war'         // WAR 文件名称         SSH_KEY = credentials('your-ssh-key-id') // Jenkins 中存储的 SSH 密钥凭证 ID     }      stages {         stage('Build') {             steps {                 // 假设你使用 Maven 构建 WAR 包                 sh 'mvn clean package'             }         }          stage('Deploy') {             steps {                 script {                     // 将 WAR 包上传到远程服务器                     sshagent(['your-ssh-key-id']) {                         sh """                             scp -o StrictHostKeyChecking=no target/${WAR_FILE} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}                         """                     }                 }             }         }          stage('Stop Server') {             steps {                 script {                     // 停止远程服务器上的应用程序                     sshagent(['your-ssh-key-id']) {                         sh """                             ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'bash -c "cd ${REMOTE_DIR} && ./stop.sh"'                         """                     }                 }             }         }          stage('Start Server') {             steps {                 script {                     // 启动远程服务器上的应用程序                     sshagent(['your-ssh-key-id']) {                         sh """                             ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} 'bash -c "cd ${REMOTE_DIR} && ./start.sh"'                         """                     }                 }             }         }     }      post {         always {             // 清理工作或发送通知             echo 'Pipeline finished'         }     } } 

关键点

  1. 构建阶段

    • 使用 Maven 构建项目并生成 WAR 包,生成的 WAR 包位于 target/ 目录下。
  2. 部署阶段

    • 使用 scp 命令将 target/ 目录中的 WAR 包上传到远程服务器。
  3. 停止和启动服务器阶段

    • 使用 ssh 命令连接到远程服务器,并执行停止和启动脚本。

确认 WAR 包位置

在你的 Jenkins 工作空间中,你可以通过以下方式确认生成的 WAR 包位置:

  1. 通过 Jenkins Web UI

    • 在 Jenkins 任务的控制台输出中,查找 Maven 构建的输出日志,确认 WAR 包生成路径。
  2. 通过脚本输出

    • 在 Jenkinsfile 中添加构建后检查命令,确认 WAR 包位置,例如:
      stage('Check WAR Location') {     steps {         sh 'ls -l target/'     } } 

通过这些步骤和示例,你可以确认 WAR 包的生成位置,并将其部署到远程服务器上,确保应用程序的自动化构建和部署流程顺利进行。

相关内容

热门资讯

诀窍外挂!hhpoker德州挂... 诀窍外挂!hhpoker德州挂真的有吗,wpk模拟器多开,可靠教程(有挂技巧)-哔哩哔哩;亲,hhp...
5分钟带你讲究!边锋游戏小程序... 【亲,微信小程序开心泉州辅助器 这款游戏可以开挂的,确实是有挂的,很多玩家在这款微信小程序开心泉州辅...
十分钟科普!皮皮山西挖坑辅助(... 十分钟科普!皮皮山西挖坑辅助(外挂透视)原来真的是有挂神器(详细开挂软件);皮皮山西挖坑辅助是一款益...
第九分钟掌握!微友辅助器免费版... 第九分钟掌握!微友辅助器免费版,新九天辅助,规律教程(新版有挂)-哔哩哔哩;相信小伙伴都知道这个微友...
手筋外挂!拱趴大菠萝万能挂图解... 手筋外挂!拱趴大菠萝万能挂图解,约局吧德州真的存在透视吗,解说技巧(有挂分享)-哔哩哔哩;无需打开直...
第三分钟带你发现!开心泉州免费... 第三分钟带你发现!开心泉州免费辅助器,小程序牵手跑的辅助,插件教程(有挂攻略)-哔哩哔哩>>您好:软...
四分钟开挂!胡乐胡乐辅助脚本可... 四分钟开挂!胡乐胡乐辅助脚本可靠吗(外挂透视)原来真的有挂插件(分享开挂工具);1、超多福利:超高返...
第3分钟了解!拱趴大菠萝万能辅... 第3分钟了解!拱趴大菠萝万能辅助器,wepoker辅助器有哪些功能,AI教程(有挂透明挂)-哔哩哔哩...
妙招外挂!德普之星辅助工具如何... 妙招外挂!德普之星辅助工具如何打开,hhpoker软件靠谱吗,2026教程(有挂透明挂)-哔哩哔哩;...
第3分钟得知!兴动互娱最强辅助... 第3分钟得知!兴动互娱最强辅助神器(外挂)原来是有挂的安装(分享开挂平台);详细兴动互娱最强辅助神器...