Jenkins自动化构建详细教程

1. 什么是Jenkins

Jenkins是一个开源的持续集成和持续交付(CI/CD)工具,用于自动化构建、测试和部署软件。它提供了一个强大的平台,可以自动化软件的开发、测试和部署流程,帮助团队更快、更可靠地交付软件。

2. Jenkins安装和配置

2.1. 安装Jenkins

系统要求:Java 8或更高版本

下载Jenkins:访问Jenkins官方网站https://www.jenkins.io/download/下载适合你系统的Jenkins版本

安装Jenkins:

Windows:下载msi安装包,双击安装

Linux (Ubuntu/Debian):

     wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
     sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
     sudo apt-get update
     sudo apt-get install jenkins

macOS:使用Homebrew安装

     brew install jenkins

启动Jenkins服务:

Linux:

     sudo systemctl start jenkins

Windows:服务中找到Jenkins并启动

macOS:

     brew services start jenkins

2.2. 初始配置

访问Jenkins:打开浏览器,访问http://localhost:8080

解锁Jenkins:查看初始密码

Linux:

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

Windows:C:\Program Files\Jenkins\home\secrets\initialAdminPassword

macOS:~/.jenkins/secrets/initialAdminPassword

安装建议的插件:选择"Install suggested plugins"

创建管理员账户:按照提示创建管理员用户

设置Jenkins URL:确认或修改Jenkins URL

3. 创建自动化构建任务

3.1. 新建任务

点击Jenkins主页面上的"新建Item"

输入任务名称(例如:my-project-build)

选择"自由风格的软件项目"(Freestyle project)

点击"确定"

3.2. 配置源代码管理

在任务配置页面,找到"源代码管理"部分

选择"Git"

输入Repository URL:

   https://github.com/yourusername/yourrepository.git

添加凭据(如果需要)

点击"添加"按钮

选择"Jenkins"

输入你的Git凭据

选择"Username with password"

输入用户名和密码/个人访问令牌

点击"添加"

在凭据下拉菜单中选择刚刚添加的凭据

指定分支(例如:*/main 或 */master)

3.3. 配置构建触发器

在任务配置页面,找到"构建触发器"部分

选择触发方式:

"Poll SCM":定期检查代码变更

     # 每5分钟检查一次
     H/5 * * * *

"GitHub hook trigger for GITScm polling":通过GitHub webhook触发

"Build periodically":定期构建

     # 每天凌晨1点构建
     H 1 * * *

4. 构建脚本编写

4.1. 添加构建步骤

在任务配置页面,找到"构建"部分

点击"添加构建步骤"

选择"Execute shell"(Linux/macOS)或"Execute Windows batch command"(Windows)

4.2. 构建脚本示例

#### Python项目构建示例

# 创建虚拟环境
python3 -m venv venv

# 激活虚拟环境
source venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 运行测试
python -m pytest tests/

# 打包应用
python setup.py sdist bdist_wheel

#### Node.js项目构建示例

# 安装依赖
npm install

# 运行测试
npm test

# 构建应用
npm run build

# 打包应用
npm run package

#### Java Maven项目构建示例

# 清理项目
mvn clean

# 运行测试
mvn test

# 构建项目
mvn package

# 安装到本地仓库
mvn install

5. 构建后操作

5.1. 配置构建后操作

在任务配置页面,找到"构建后操作"部分

点击"添加构建后操作"

5.2. 常用构建后操作

"Archive the artifacts":保存构建产物

输入要保存的文件路径,例如:

     dist/*.whl
     target/*.jar

"Publish JUnit test result report":发布测试结果

输入测试报告文件路径,例如:

     **/test-reports/*.xml

"Send build artifacts over SSH":通过SSH发送构建产物

配置SSH服务器

指定传输的源文件和目标目录

"E-mail Notification":邮件通知

输入收件人邮箱地址

配置邮件触发条件(例如:每次不稳定构建时)

6. 高级配置

6.1. 使用Pipeline

Jenkins Pipeline(也称为"Pipeline")是一套插件,支持实现和集成持续交付流水线到Jenkins。

创建Pipeline任务

点击"新建Item"

输入任务名称

选择"流水线"(Pipeline)

点击"确定"

编写Pipeline脚本

在任务配置页面,找到"流水线"部分

选择"Pipeline script"

编写Jenkinsfile:

pipeline {
    agent any

    environment {
        PATH = "/usr/local/bin:${env.PATH}"
    }

    stages {
        stage('Checkout') {
            steps {
                git url: 'https://github.com/yourusername/yourrepository.git', branch: 'main'
            }
        }

        stage('Build') {
            steps {
                sh 'npm install'
                sh 'npm run build'
            }
        }

        stage('Test') {
            steps {
                sh 'npm test'
            }
            post {
                always {
                    junit 'test-results/*.xml'
                }
            }
        }

        stage('Deploy') {
            when {
                branch 'main'
            }
            steps {
                sh 'npm run deploy'
            }
        }
    }

    post {
        always {
            echo 'Build completed'
        }
        success {
            echo 'Build was successful!'
        }
        failure {
            echo 'Build failed!'
            emailext (
                subject: "Build Failed: ${env.JOB_NAME} - ${env.BUILD_NUMBER}",
                body: """
                Build failed for ${env.JOB_NAME} - ${env.BUILD_NUMBER}
                Build URL: ${env.BUILD_URL}
                """,
                to: 'team@example.com'
            )
        }
    }
}

6.2. 使用共享库

共享库允许你定义在多个Pipeline之间共享的代码。

创建共享库

创建一个Git仓库来存放共享库代码

遵循Jenkins共享库目录结构:

     (root)
     ├── vars                # 全局变量
     │   └── myStep.groovy   # 自定义步骤
     └── src                 # 标准Java目录结构
         └── com
             └── mycorp
                 └── pipeline
                     └── Utils.groovy  # 共享类

在Jenkins中配置共享库

进入"Manage Jenkins" > "Configure System"

找到"Global Pipeline Libraries"部分

点击"Add"

输入名称(例如:my-shared-library)

选择"Retrieval Method"(例如:Modern SCM)

配置SCM(例如:Git)

输入共享库仓库URL

在Pipeline中使用共享库

   @Library('my-shared-library')_

   pipeline {
       agent any
       stages {
           stage('Example') {
               steps {
                   myCustomStep()
               }
           }
       }
   }

6.3. 参数化构建

参数化构建允许你在运行构建时提供参数。

在任务配置页面,勾选"参数化构建过程"

点击"添加参数"

选择参数类型:

"String Parameter":字符串参数

"Choice Parameter":选择参数

"Boolean Parameter":布尔参数

"File Parameter":文件参数

配置参数:

   // 示例:Choice参数
   ENVIRONMENT
     dev
     test
     prod

在构建脚本中使用参数:

   // 在Shell脚本中使用
   echo "Building for environment: $ENVIRONMENT"

   // 在Pipeline中使用
   pipeline {
       agent any
       parameters {
           choice(name: 'ENVIRONMENT', choices: ['dev', 'test', 'prod'], description: 'Select environment')
       }
       stages {
           stage('Build') {
               steps {
                   echo "Building for environment: ${params.ENVIRONMENT}"
               }
           }
       }
   }

7. 总结

Jenkins是一个功能强大的自动化构建工具,通过本教程,我们学习了Jenkins的基本概念、安装配置、创建自动化构建任务、编写构建脚本、配置构建后操作以及一些高级配置技巧。Jenkins的灵活性使其能够适应各种软件开发环境,帮助团队实现持续集成和持续交付,提高软件交付速度和质量。

要充分利用Jenkins的潜力,建议继续探索其丰富的插件生态系统,根据项目需求定制化构建流程,并结合版本控制系统、测试工具和部署工具,构建完整的CI/CD流水线。

发表回复

后才能评论