水军大提督 发表于 2024-6-14 12:05:26

【软件工具】如何使用 Jenkins 构建并摆设一个 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'
      }
    }
}
具体解释


[*] 定义环境变量:

[*]REMOTE_USER:长途服务器的用户名。
[*]REMOTE_HOST:长途服务器的地址。
[*]REMOTE_DIR:长途服务器上的目标目录。
[*]WAR_FILE:构建天生的 WAR 文件名称。
[*]SSH_KEY:Jenkins 中存储的 SSH 密钥凭证 ID,用于安全毗连长途服务器。

[*] 构建阶段:

[*]使用 Maven 构建项目,天生 WAR 包。

[*] 摆设阶段:

[*]使用 scp 命令将构建天生的 WAR 文件上传到长途服务器的指定目录。这里使用 sshagent 插件进行 SSH 密钥管理,确保安全的 SSH 毗连。

[*] 停止服务器阶段:

[*]使用 ssh 命令毗连到长途服务器,并执行停止命令脚本 stop.sh。

[*] 启动服务器阶段:

[*]使用 ssh 命令毗连到长途服务器,并执行启动命令脚本 start.sh。

[*] 后期处理惩罚:

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

准备工作



[*]安装 SSH 插件:确保 Jenkins 已安装 SSH 插件(如 SSH Agent Plugin)。
[*]配置 SSH 凭证:在 Jenkins 凭证管理中配置用于毗连长途服务器的 SSH 密钥,并获取相应的凭证 ID。
[*]长途脚本:确保长途服务器上存在 stop.sh 和 start.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 会为该任务创建一个工作空间目录,构建过程将在这个目录中进行。

[*] 工作空间目录:工作空间目录的路径通常是:
$JENKINS_HOME/workspace/<job-name>
此中 $JENKINS_HOME 是 Jenkins 的安装目录,<job-name> 是 Jenkins 任务的名称。
[*] 构建输出目录:如果你使用 Maven 构建项目,构建输出目录(包罗 WAR 包)的路径通常是:
$JENKINS_HOME/workspace/<job-name>
/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'
      }
    }
}
关键点


[*] 构建阶段:

[*]使用 Maven 构建项目并天生 WAR 包,天生的 WAR 包位于 target/ 目录下。

[*] 摆设阶段:

[*]使用 scp 命令将 target/ 目录中的 WAR 包上传到长途服务器。

[*] 停止和启动服务器阶段:

[*]使用 ssh 命令毗连到长途服务器,并执行停止和启动脚本。

确认 WAR 包位置

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

[*] 通过 Jenkins Web UI:

[*]在 Jenkins 任务的控制台输出中,查找 Maven 构建的输出日志,确认 WAR 包天生路径。

[*] 通过脚本输出:

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


通过这些步骤和示例,你可以确认 WAR 包的天生位置,并将其摆设到长途服务器上,确保应用步伐的自动化构建和摆设流程顺遂进行。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【软件工具】如何使用 Jenkins 构建并摆设一个 WAR 包到相应的服务器上