linux

Jenkins如何在Linux实现自动化

小樊
46
2025-10-05 16:08:15
栏目: 智能运维

1. 环境准备:安装Java与Jenkins Jenkins依赖Java环境(推荐OpenJDK 11+),首先通过Linux包管理器安装Java:

添加Jenkins官方仓库并安装:

启动Jenkins并设置开机自启:sudo systemctl start jenkins && sudo systemctl enable jenkins

2. 初始配置:解锁与插件安装 首次访问http://<服务器IP>:8080,通过sudo cat /var/lib/jenkins/secrets/initialAdminPassword获取初始密码并输入。选择“Install suggested plugins”安装推荐插件(含Git、Pipeline、SSH等核心插件),完成后创建管理员用户。

3. 创建自动化任务:Freestyle或Pipeline

4. 编写Jenkinsfile:定义自动化流程 Jenkinsfile是Pipeline的核心,采用声明式语法定义构建、测试、部署流程。示例如下:

pipeline {
    agent any  // 使用任意可用节点
    environment {
        MAVEN_OPTS = "-Dmaven.repo.local=${env.WORKSPACE}/.m2"  // 配置Maven本地仓库缓存
        DEPLOY_ENV = 'dev'  // 默认部署环境
    }
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main', url: 'https://github.com/user/repo.git'  // 拉取代码
            }
        }
        stage('Build') {
            steps {
                sh 'mvn -B clean package'  // Maven编译打包
            }
        }
        stage('Test') {
            parallel {
                stage('Unit Test') {
                    steps {
                        junit '**/target/surefire-reports/*.xml'  // 单元测试报告
                    }
                }
                stage('Integration Test') {
                    steps {
                        sh 'mvn verify -DskipUnitTests'  // 集成测试
                    }
                }
            }
        }
        stage('Deploy') {
            when {
                expression { params.DEPLOY_ENV != 'prod' }  // 非生产环境才部署
            }
            steps {
                sshPublisher(  // SSH远程执行部署脚本
                    publishers: [
                        sshTransfer(
                            execCommand: "/opt/deploy.sh ${params.DEPLOY_ENV}",
                            sourceFile: 'target/*.jar'  // 部署的文件
                        )
                    ]
                )
            }
        }
    }
    parameters {
        choice(name: 'DEPLOY_ENV', choices: ['dev', 'staging', 'prod'], description: '选择部署环境')  // 参数化部署环境
    }
}

该流水线实现了代码拉取、并行测试、参数化部署等关键步骤,可根据项目需求调整。

5. 触发自动化构建:Webhook与定时任务

6. 优化与安全:提升自动化效率

0
看了该问题的人还看了