Jenkins Job介绍 本文共有8819个字,关键词: 1. 有若干个job或project构成的庞大的开发平台系统,我们可以将开发测试,部署或基础运维相关任务通过创建一个任务或者项目,保存在jenkins任务列表中,方便日常的运维开发、维护工作。 2. 可以利用其内建模块或特定的脚本语法,将我们的工作内容抽象成jenkins job,这个任务里通过配置相关的参数及工具模块,从而作为一个可执行的任务,最终保存在jenkins平台下。 3. 每一次执行完一个任务成为一个build,可以通过查看这个build获取所需要的结果。 4. build构建信息会保存在jenkins上作为build log,可以通过查看不同时间点的log信息,从而debug任务中出现的各种问题。 5. jenkins下所有的任务构建后的所有项目相关文件,例如clone的仓库代码,maven打包生成的编译包,配置的参数文件,都会保存在jenkins的主目录workspace下,以我们当前任务名称命名的目录,作为这个job的workspace,可以查看这些工作空间中的文件,去定位无法在日志中无法定位的问题细节。 Jenkins freestyle与pipeline job的区别 freestyle job 1. 需要在界面添加模块配置项与参数完成配置 2. 每个job仅能实现一个开发功能 3. 所有的配置只能通过前台手动完成,无法将配置代码化,不利于job配置迁移与版本控制。 4. 逻辑相对简单,无需额外的学习成本 pipeline job ``` #匹配持续集成与持续交付的概念 1. 所有的模块、参数配置都可体现为一个pipeline脚本 2. 可以定义多个stage作为项目部署的每一个阶段,构建一个管道工作集串联所有的工作。 3. 所有的配置代码化,方便job配置迁移与版本控制,对有改动的部分进行版本控制,将脚本的改动定位到代码层面,方便后期的审计工作。 4. 需要学习pipeline脚本语法基础 ``` jenkins job构建配置 1. 配置jenkins server本地代码仓库 2. 安装gitclient,curl工具依赖 3. 关闭系统git http.sslVerify安全认证 4. 添加jenkins后台git client user与email 5. 添加jenkins后台git credential凭据 jenkins freestyle job构建配置 1. 在界面上创建一个freestyle project 指定任务名称 选择构建一个自由风格的软件项目 2. 编辑描述信息 写入对该任务的描述信息 3. 进行参数的配置 找到“参数化构建过程”并勾选 添加相应的参数值 4. 可添加一个文本参数并写入相应值 写在这里的参数最终最为我们预先build构建前项这个任务传送参数的接口 5. 先添加选项参数 名称:deploy_dev #作为部署环境的名称 选项: #作为任务构建前的参数选项,传入任务中 dev #开发环境 prod #生产环境 描述:Choose deploy envrionment #作为参数选项的描述任务 6. 添加文本参数 名称:version 默认值:1.0.0 描述:build version 通过传入一个预先设定好的默认参数或者自定义参数作为构建我们build这个任务前的参数值到job当中 7. 源代码管理 我们可以通过配置源代码管理选项,将git代码仓库的项目源代码clone到jenkins本地进行随后的项目部署工作。 在配置job的界面向下滑动,找到源代码管理 选择git Repository URL中输入仓库的URL地址 Credentials中选择在凭据中创建的git用户、密码 此时页面上的错误提示消失,表示git仓库认证成功 Branch Specifier */master #保证克隆的是master分支的代码 8. build配置 添加一个shell模块,编写我们的核心build任务,并最终完成我们的freestyle job配置内容 web界面向下拉动,找到“构建“,并增加构建步骤:执行shell ``` ============================================================= #!/bin/bash export PATH="/bin:/sbin:/usr/bin:/usr/sbin:usr/local/bin:/usr/local/sbin" #print env variable echo "Cuurent deployment environment is $deploy_env" >>test.properties echo "The build $version" >>test.properties echo "[INFO] Done..." #Check test properties echo "[INFO] Check test properties" if [ -s test.properties ]; then cat test.properties echo "[INFO] Done" else echo "test.properties is empty" fi echo "[INFO] build finished" =========================================================== #点击保存并推出当前配置界面 ``` 任务的构建 在jenkins界面上点击对应job的“build with parametes“ deploy env的参数选项:dev/prod version定义 点击build开始构建 点击左侧边栏中构建中的job,可查看构建的过程(点击圆球直接进入) jenkins pipeline job基础架构 ``` 1. 所有的代码包含在pipeline{}层内【第一层】 2. stages{}层用来包含该pipeline所有stage子层,将pipeline管道分为若干个管道块,每一个管道块够可以去干一件事情,而且彼此不受影响【第二层】 3. stage{}层用来包含具体的我们需要编写任务的steps{}子层,用于添加pipeline语法模块,利用模块进行业务逻辑的相关编写操作。 4. steps用于添加我们具体需要调用的模块语句,如shell模块等 ============================================================= pipeline{ agent any environment{ host='test.example.com' user='deploy' } stages{ stage{ sh "cat $host" echo $deploy } } } ============================================================= ``` agnet区域 定义pipeline在哪里运行,可以使用any,none或具体的jenkins node主机名等,例如我们要指定在node1上执行可以写成 agent{node {lable 'node1’}} any:随机在一台jenkins上执行该任务 envrionment区域 1. “变量=变量值“定义我们的环境变量,通常与stages平级 2. 可以定义全局环境变量(如PATH),应用于所有stages任务 3. 如果需单独定义一些仅应用到特定stage管道块中的环境变量,我们可以直接将envrionment写到该区域内 script区域(可选) 1. 定义在steps中 2. 编写grovy脚本语言 3. 用来进行脚本逻辑运算(具有grovy基础) steps区域 1. echo:打印输出静态、动态语句到build构建任务log输出中 echo $deploy 2. sh:调用Linux系统shell命令在pipeline下编写shell脚本 sh "cat 'test.properties'" 3. git url:调用git模块进行git相关操作 git url: "https://..." jenkins pipeline job构建配置 ``` 1. 创建一个pipeline project jenkins管理界面新建任务 键入pipeline job任务名称 选择pipeline流水线任务并确定 2. 添加描述信息 This is my first pipeline job 点击应用 3. pipeline脚本配置 找到pipeline任务栏 编写我们的pipeline脚本 ============================================================= #!groovy pipeline{ angen{node {lable 'master'}} environment{ PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin' } parameters{ choice( choices: "dev\prod" description: "choose deploy environment" name: "deploy_env" ) string(name: 'version', defaultValue: '1.0.0', description: 'build version') } stages{ stage("Checkout test repo") { steps{ sh 'git config --global http.sslVerify false' #关闭当前git的全部ssl认证 dir("${env.WORKSPACE}") { git branch: 'matser',CredentialsId: “需要到jenkins管理界面查看git凭据ID”, url: 'https://git repo address' #添加了一个checkout test repo的stage,将git仓库中的源代码clone到jenkins当前任务下的workspace工作区域内 } } } #接下来创建第二个stage区域,相当于这个管道流水线的第二个子任务,用来将我们的pipeline传入的参数写入到我们上一个stage子任务clone下来的test properties中。 stage("print env variable") { steps{ #当前所有模块调用以及任务执行都在我们定义的dir中运行 dir("$env.WORKSPACE") { sh """ #三引号内以shell的风格编写shell语句 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("Checkout 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.properties is empty" fi """ } } } } } ============================================================= ``` 点击保存并退出 点击立即构建,首次构建会提示找不到deploy变量,因为在首次构建pipeline job的时候我们的参数没有引入到我们当前的pipeline job当中,此时构建的按钮变为了"Build with parameters",点击它就可以看到我们在build之前需要添加的参数,点击build才能开始接下来的构建。 jenkins 应用 Jenkins 与Linux shell集成 ``` 1. 新建freestyle project 名称:shell_freestyle_job 选择freestyle_job并确定 2. 输入描述信息 在页面下找到"构建",选择增加构建步骤:执行shell 在界面文本框中添加shell语句,此处为一些主机信息查看语句 ============================================================= #!/bin/bash user=$(whoami) if [ $user == 'deploy' ]; the echo "hello,my name is $user" else echo "sorry,i’m $user" fi ip addr cat /etc/system-release free -m df -Th py_cmd=$(which python) $py_cmd --version ============================================================= ``` Jenkins参数集成 ``` 1. 进入jenkins管理界面,新建freestyle job 名称:parameter_freestyle_job 选择构建一个freestyle job并确定 2. 输入描述信息 选择参数化构建过程复选框 添加"选择参数" 名称:deploy_env 选项:dev uat stage prod 描述:Choose deploy environment 添加文本参数 名称:version 默认值:1.0.0 描述:fill in build version 添加bool值参数 名称:bool 默认值勾选则默认为ture 描述:Choose bool value 添加密码参数 名称:pass 默认值:密码字符串(如果不输入,在构建时会手动输入,脚本中调用pass变量时) 描述:Type your password 3. 添加构建步骤 选择执行shell,添加一个shell模块 添加shell语句 ============================================================= #!/bin/bash echo "Current deploy environment is $deploy_env" echo "The build is $version" echo "The password is $pass" if $bool; then echo "REquest is approved" else echo "request is rejected" fi ============================================================= 保存并退出 点击构建,可以查看到添加的参数选项 ``` Jenkins与git集成 ``` 使用jenkins内建的git插件将gitlab仓库的代码clone到jenkins本地,准备随后的代码构建工具。 1. jenkins界面新建freestyle job任务 名称:git_freestyle_job 选择freestyle_job并确定 2. 填写描述信息:This is my first git 找到源码管理选择git 添加git仓库地址"https://..." 选择git用户名和密码(系统凭据)并确定 点击构建 Jenkins与ansible集成 使用shell模块调用本地的ansible命令,从而实现jenkins能够集成ansible工具进行远程服务器的部署管理功能。 ansible虚拟环境3.6配置以及配置jenkins主机下deploy用户到目标主机的秘钥认证。 1. jenkins界面新建freestyle job任务 名称:ansible_freestyle_job 选择freestyle job并确定 2. 填写描述 This is my first ansible job 3. 构建模块选择"执行shell" ============================================================= #!/bin/bash set +x source /home/deploy/.py3-a2.5-env/bin/activate source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q cd /home/deploy ansible --version ansible-playbook --version cat testserver #详细清单目录 ansible -i testservers.testserver -m command -a "ip addr" set -x ============================================================= 保存并退出 构建任务 ``` 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 CI/CD 2019-05-04 评论 3691 次浏览