ubuntu

Ubuntu Jenkins部署如何进行持续集成

小樊
48
2025-10-05 21:58:55
栏目: 智能运维

1. 环境准备:安装Java(Jenkins前置依赖)
Jenkins是基于Java开发的持续集成工具,需先安装Java环境。在Ubuntu终端执行以下命令安装OpenJDK 11(推荐):

sudo apt update
sudo apt install openjdk-11-jdk
# 验证安装是否成功
java -version

确保输出显示Java版本为11或更高,否则Jenkins无法正常启动。

2. 安装Jenkins:添加官方源并部署
通过以下命令添加Jenkins官方APT源并安装:

# 导入Jenkins官方GPG密钥(确保软件包来源可信)
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
# 添加Jenkins源到系统软件源列表
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
# 更新软件包索引并安装Jenkins
sudo apt update
sudo apt install jenkins

安装完成后,启动Jenkins服务并设置开机自启:

sudo systemctl start jenkins
sudo systemctl enable jenkins

3. 配置Jenkins:解锁并安装核心插件
首次访问Jenkins需通过浏览器打开http://your_server_ip:8080(将your_server_ip替换为服务器实际IP)。解锁时需输入初始密码,可通过以下命令获取:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

解锁后,进入Manage Jenkins > Manage Plugins,安装以下关键插件(支持代码托管、流水线定义及可视化):

4. 创建Pipeline Job:定义持续集成任务
在Jenkins主页点击New Item,输入任务名称(如my-java-project-ci),选择Pipeline类型,点击OK
在任务配置页面的Pipeline section,有两种方式定义流程:

5. 编写Jenkinsfile:流水线流程脚本
在项目根目录创建Jenkinsfile(以Java+Maven+Docker项目为例),定义持续集成流程(包含代码拉取、编译、测试、打包、部署等阶段):

pipeline {
    agent any  // 使用任意可用节点执行任务
    stages {
        stage('Checkout') {  // 拉取代码
            steps {
                git url: 'https://github.com/your-username/your-repo.git', branch: 'main'
            }
        }
        stage('Build') {  // 编译代码(Maven项目)
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Test') {  // 运行单元测试
            steps {
                sh 'mvn test'
            }
            post {  // 测试完成后生成报告
                junit 'target/surefire-reports/*.xml'
            }
        }
        stage('Build Docker Image') {  // 构建Docker镜像
            steps {
                script {
                    docker.build("your-dockerhub-username/your-app:${env.BUILD_ID}")
                }
            }
        }
        stage('Push Docker Image') {  // 推送镜像到仓库
            steps {
                withCredentials([usernamePassword(credentialsId: 'docker-hub-creds',  // 凭据ID需提前在Jenkins中配置
                        usernameVariable: 'DOCKER_USER', 
                        passwordVariable: 'DOCKER_PASS')]) {
                    sh "echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin"
                    sh "docker push your-dockerhub-username/your-app:${env.BUILD_ID}"
                }
            }
        }
        stage('Deploy to Production') {  // 部署到生产服务器
            steps {
                sshPublisher(
                    publishers: [
                        sshPublisherDesc(
                            configName: 'prod-server',  // SSH服务器配置(需提前在Jenkins中添加)
                            transfers: [
                                sshTransfer(
                                    execCommand: """
                                        docker stop your-app-container || true
                                        docker rm your-app-container || true
                                        docker pull your-dockerhub-username/your-app:${env.BUILD_ID}
                                        docker run -d --name your-app-container -p 8080:8080 your-dockerhub-username/your-app:${env.BUILD_ID}
                                    """
                                )
                            ]
                        )
                    ]
                )
            }
        }
    }
    post {
        always {  // 无论成功失败都执行的操作(如清理工作区)
            cleanWs()
        }
        success {  // 构建成功时发送通知(如邮件、Slack)
            echo 'Build and deployment succeeded!'
        }
        failure {  // 构建失败时发送通知
            echo 'Build or deployment failed!'
        }
    }
}

注意:需提前在Jenkins中配置Docker Hub凭据(docker-hub-creds)和SSH服务器配置(prod-server)。

6. 触发构建与监控:实现自动化流程
配置完成后,点击Save保存任务。可通过以下方式触发构建:

7. 优化建议:提升CI效率与安全性

0
看了该问题的人还看了