linux

Linux环境下Jenkins如何部署应用

小樊
45
2025-09-22 21:13:35
栏目: 智能运维

1. 准备工作

2. 安装与启动Jenkins

3. 配置Jenkins

4. 创建Pipeline Job

5. 编写Pipeline脚本 以下是一个完整的Java应用部署Pipeline示例(Jenkinsfile):

pipeline {
    agent any
    environment {
        // 定义环境变量
        MAVEN_HOME = tool 'maven'  // 引用Global Tool Configuration中的Maven
        PATH = "${MAVEN_HOME}/bin:${PATH}"
        DOCKER_IMAGE = "your-dockerhub-id/my-app:${env.BUILD_NUMBER}"
    }
    stages {
        stage('Checkout') {
            steps {
                git branch: '*/main', url: 'https://github.com/your-repo/my-app.git'  // 拉取代码
            }
        }
        stage('Build') {
            steps {
                sh 'mvn clean package'  // Maven编译打包
            }
        }
        stage('Unit Test') {
            steps {
                sh 'mvn test'  // 运行单元测试
            }
            post {
                always {
                    junit 'target/surefire-reports/*.xml'  // 发布测试报告
                }
            }
        }
        stage('Deploy to Tomcat') {
            steps {
                script {
                    // 停止Tomcat旧版本应用
                    sshagent(['tomcat-ssh-credentials']) {  // 使用SSH凭据
                        sh 'ssh user@tomcat-server "systemctl stop tomcat"'
                        sh 'ssh user@tomcat-server "rm -rf /opt/tomcat/webapps/my-app*"'
                        // 复制新WAR包到Tomcat
                        sh 'scp target/my-app.war user@tomcat-server:/opt/tomcat/webapps/'
                        // 启动Tomcat
                        sh 'ssh user@tomcat-server "systemctl start tomcat"'
                    }
                }
            }
        }
        stage('Deploy to Docker') {
            steps {
                script {
                    // 登录Docker Hub
                    docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
                        // 构建Docker镜像
                        def customImage = docker.build(DOCKER_IMAGE)
                        // 推送镜像到仓库
                        customImage.push()
                        // 可选:拉取镜像到目标服务器并运行
                        sshagent(['docker-ssh-credentials']) {
                            sh 'ssh user@app-server "docker pull ${DOCKER_IMAGE}"'
                            sh 'ssh user@app-server "docker stop my-app || true"'
                            sh 'ssh user@app-server "docker rm my-app || true"'
                            sh 'ssh user@app-server "docker run -d --name my-app -p 8080:8080 ${DOCKER_IMAGE}"'
                        }
                    }
                }
            }
        }
    }
    post {
        always {
            echo 'Deployment completed, check logs for details.'
        }
        failure {
            mail to: 'dev-team@example.com', subject: "Jenkins Deployment Failed: ${currentBuild.fullDisplayName}", body: "Check console output at ${env.BUILD_URL}"
        }
    }
}

说明

6. 触发构建与监控

7. 常见问题排查

0
看了该问题的人还看了