Jenkins FreeStyle or Pipeline Job
FreeStyle Job:
1. 需要在页面添加模块配置项与参数完成配置
2. 每个Job仅能实现一个开发功能
3. 无法将配置代码化,不利于Job配置迁移与版本控制
4. 逻辑相对简单,无额外学习成本
Pipeline Job:
1. 所有模块,参数配置都可以体现为一个Pipeline脚本
2. 可以定义多个Stage构建为一个Pipeline工作集
3. 所有配置代码化,方便Job配置迁移与版本控制
4. 需要Pipeline脚本语法基础,学习成本高
Pipeline 基本架构
1. 所有代码块包裹在Pipeline{} 层内
2. stages{} 层用来包含Pipeline中的所有stage子层
3. stage{} 层用来包含具体需要编写任务的steps{} 子层
4. steps{} 层用来添加我们具体需要调用的模块语句
Pipeline示例1
pipeline{ agent any // 定义pipeline在哪台jennkins主机上运行,可以使用any, none 或具体的Jenkins node主机名 environment{ // 定义全局环境变量,也可以定义在具体的Stage区域中 host='test.example.com' user='deploy' } stages{ // 任务区域 stage('build'){ // 任务阶段 steps{ // 任务步骤 sh 'cat $host' echo $deploy } } } }
Pipeline示例2
#!groovy pipeline{ agent {node {label 'master'}} environment { PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin" } parameters { choice( choices: 'dev\nprod', description: 'choose deploy environment', name: 'deploy_env' ) string(name: 'version', defaultValue: '1.0.0', description: 'bulder version') } stages{ stage("Checkout test repo"){ steps{ sh 'git config --global http.sslVerify false' dir("${env.WORKSPACE}"){ git branch: 'master', credentialsId: "aad1a0c7-29ef-482c-b5dc-86dc0416fb30", url: "https://root@gitlab.pso.com/root/test-repo.git" } } } stage("Print env variable"){ steps{ dir("${env.WORKSPACE}"){ sh """ echo "[INFO] Print env variable" echo "Current deployment environment is $deploy_env" >> test.properties echo "The build is $version" >> test.properties echo "[INFO] Done..." """ } } } stage("Check test properties"){ steps{ dir("${env.WORKSPACE}"){ sh """ echo "[INFO] Check test properties" if [ -s test.properties ] then cat test.properties echo "[INFO] Done..." else echo "test.propreties is empty" fi """ echo "[INFO] Build finished..." } } } } }
提示:git工具关闭SSL验证 -> git config --system http.sslVerify false