温馨提示×

Jenkins如何在Linux上部署应用

小樊
52
2025-10-11 19:40:37
栏目: 智能运维

1. 准备Linux环境
确保Linux系统(如Ubuntu/Debian/CentOS)满足Jenkins基础要求:安装Java(推荐JDK 11+,通过java -version验证),并配置网络(允许Jenkins默认端口8080通过防火墙,如Ubuntu用sudo ufw allow 8080、CentOS用sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload)。

2. 安装Jenkins

  • 通过官方仓库安装(推荐)
    Ubuntu/Debian:添加Jenkins仓库密钥wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc,配置仓库echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list,更新并安装sudo apt update && sudo apt install jenkins
    CentOS/RHEL:添加仓库sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo,导入密钥sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key,安装sudo yum install jenkins
  • 启动服务sudo systemctl start jenkins(立即启动),sudo systemctl enable jenkins(开机自启)。

3. 配置Jenkins基础设置

  • 访问Web界面:浏览器输入http://<服务器IP>:8080,输入初始密码(sudo cat /var/lib/jenkins/secrets/initialAdminPassword获取);
  • 安装推荐插件:勾选“Git”“Pipeline”“Docker”“Kubernetes”等常用插件(覆盖版本控制、构建、部署需求);
  • 创建管理员账号:设置用户名、密码及邮箱,完成初始配置。

4. 配置Jenkins与版本控制集成
若使用Git管理代码,需添加Git凭证(Manage Jenkins → Credentials → System → Global credentials,点击“Add Credentials”,选择“Git Username with password”或“SSH Username with private key”,输入Git账号信息);若使用GitHub/GitLab,可配置Webhook(Manage Jenkins → Configure System,添加GitHub/GitLab服务器,填写API Token,实现代码推送自动触发构建)。

5. 编写Pipeline脚本
Pipeline是Jenkins实现CI/CD的核心,推荐使用声明式Pipeline(结构清晰、易维护),脚本需包含agent(指定执行节点,如any表示任意节点)、stages(定义多阶段流程)、steps(具体执行命令)。示例如下:

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/your-repo/your-project.git' // 拉取代码
            }
        }
        stage('Build') {
            steps {
                sh './mvnw clean package' // Maven构建(Java项目)
                // 或 sh './gradlew build' // Gradle构建
                archiveArtifacts 'target/*.jar' // 归档构建产物(如JAR文件)
            }
        }
        stage('Test') {
            parallel {
                stage('Unit Test') {
                    steps { sh './mvnw test' } // 单元测试
                }
                stage('SonarQube Analysis') {
                    steps {
                        withSonarQubeEnv('sonar-server') { // 集成SonarQube代码质量分析
                            sh './mvnw sonar:sonar'
                        }
                    }
                }
            }
        }
        stage('Deploy') {
            when { branch 'main' } // 仅main分支触发生产部署
            steps {
                script {
                    if (params.RUN_TESTS) { // 参数化构建:是否执行测试
                        sh "./run_cypress_tests ${params.ENVIRONMENT}" // 运行端到端测试
                    }
                    sh 'kubectl apply -f k8s/deployment.yaml' // 使用Kubernetes部署(需提前配置kubectl)
                    // 或 docker.withRegistry('https://registry.example.com', 'docker-creds') { // Docker部署
                    //     docker.image("myapp:${env.BUILD_ID}").push()
                    // }
                }
            }
        }
    }
    post {
        always {
            junit 'target/surefire-reports/*.xml' // 发布测试报告
        }
        failure {
            mail to: 'team@example.com', subject: 'Jenkins构建失败', body: '请检查构建日志' // 失败通知
        }
    }
}

将脚本保存为Jenkinsfile,放入项目根目录(与代码一起提交到版本控制)。

6. 创建Jenkins Job并关联Pipeline

  • 进入Jenkins主页,点击“New Item”,输入Job名称(如deploy-app),选择“Pipeline”,点击“OK”;
  • 配置Pipeline:
    • 定义:选择“Pipeline script from SCM”(从版本控制获取脚本);
    • SCM:选择“Git”,填写仓库URL(如https://github.com/your-repo/your-project.git)和分支(如main);
    • Script Path:填写Jenkinsfile(脚本路径,默认为项目根目录);
  • 触发条件:可选“Poll SCM”(定时轮询代码变更,如H/5 * * * *表示每5分钟检查一次)或“GitHub hook trigger for GITScm polling”(Webhook触发);
  • 保存并运行:点击“Save”,再点击“Build Now”启动构建,通过“Build History”查看进度。

7. 部署到目标环境
根据项目需求选择部署方式:

  • 容器化部署(Docker+Kubernetes):在Pipeline中添加docker build(构建镜像)、docker push(推送至镜像仓库)、kubectl apply(更新Kubernetes Deployment)步骤;
  • 传统应用部署(Shell脚本):编写deploy.sh脚本(如停止旧服务、复制新JAR文件、启动服务),在Pipeline中通过sh './deploy.sh'执行;
  • 配置管理工具(Ansible):编写Ansible Playbook(如deploy.yml,包含git cloneinstall dependenciesstart application任务),在Pipeline中通过ansiblePlaybook步骤调用。

8. 监控与优化

  • 查看构建日志:点击Job名称→“Build”→“Console Output”,实时查看构建过程;
  • 优化性能:通过--memory参数调整Jenkins JVM堆内存(如-Xmx2048m),避免内存不足;使用parallel指令并行执行测试(如单元测试与集成测试并行),减少构建时间;
  • 安全加固:配置角色权限(如“开发者”只能触发构建、“运维”能部署)、集成SonarQube(代码质量门禁)、Vault(密钥管理),阻断高危构建。

0