Jenkins with pipeline
2019年10月23日 · 1153 字 · 3 分钟 · Jenkins DevOps
背景
持续集成是一种更好的软件开发实践。
DevOps
DevOps 是一种软件开发方法。它将持续开发、持续测试、持续集成、持续部署和持续监控贯穿于软件开发的整个生命周期。
该方法用以提高软件开发质量,并缩短软件开发生命周期。从而以达到每个公司对软件产品的期望,交付出客户最满意的产品。
持续集成
开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续交付
持续交付在持续集成的基础上,将集成后的代码部署到测试环境或者预生产环境中。
持续部署
持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。
带来的好处
- 解放重复性劳动。主要包括集成、测试、部署等重复性劳动。
- 更快地修复问题。更早的获取变更,更早的进入测试,更早的发现问题,解决问题的成本显著下降。
- 减少了等待时间。缩短了从开发、集成、测试、部署各个环节的时间。
- 更高的产品质量。在代码质量检测环节对不规范或有错误的地方会进行标致,也可以设置邮件和短信等进行警告。
Jenkins
新建任务
-> 流水线
建议:通过 git 管理各组的 jenkinsfile
Pipeline
Pipeline 是基于 Groovy 实现的 CI/CD 领域特定语言(DSL),主要分为 Declarative Pipeline
和 Scripted Pipeline
。
Declarative Pipeline
通过声明自己要做的事情来规范流程。
pipeline {
agent any
stages {
stage('Build') {
steps {
//
}
}
}
}
Scripted Pipeline
则是旧版本中 Jenkins 支持的 Pipeline 模式,主要是写一些 groovy 的代码来制定流程。
node {
stage('Build') {
//
}
}
通过 Jenkinsfile
的方式把流水线固定下来,这种方式比较方便管理和维护。
构建
构建方式
- 手动触发
- 定时触发
- webhook 触发
webhook 触发
首先安装两个插件:
- Gitlab Plugin
- Gitlab Hook Plugin
配置触发器
添加 webhook
点击 test 按钮进行测试,返回状态码为 200 表示配置正确。
返回 500,需要用 root 帐号登录进 gitlab。
setting
–> 勾上 Allow requests to the local network from hooks and services
返回 403,按照路径 Jenkins Manages
-> Configure System
,找到 GitLab 配置,去掉勾选。
配置输出文件
输出 apk
stage('存档') { // 这个演示的Android的项目,实际使用中,请根据自己的产物确定
def apk = getShEchoResult("find ./app/build/outputs/apk -name '*.apk'")
def artifactsDir = "artifacts" //存放产物的文件夹
sh "mkdir ${artifactsDir}"
sh "mv ${apk} ${artifactsDir}"
archiveArtifacts "${artifactsDir}/*"
}
配置专项指标
- JUnit Test
- Checkstyle
- FindBugs
- Lint
- PMD
stage('代码分析') {
sh "./gradlew test"
junit 'app/build/test-results/**/*.xml'
}
建议: 每天定时跑一次专项检测并发邮件
配置结果通知
邮件通知
配置邮件通知
配置发件人
配置发件代码
stage('通知负责人') {
emailext body: "" +
"项目: ${BUILD_URL} \n" +
"单元测试报告: ${BUILD_URL}testReport\n",
subject: '构建结果通知【成功】',
to: "${EMAIL}"
}
收到构建邮件
钉钉
系统优化中,无法使用
其他
MutiBranch Pipeline
当一个仓库含有多个分支,需要为每个分支分别创建构建任务的时候,可以使用此插件。
Blue Ocean
Blue Ocean 是一种全新的、现代风格的 pipeline 用户界面。
安装以下插件:
- Blue Ocean
- Blue Ocean Pipeline Editor
app-host 内网应用分发
应用内网发布 | iOS OTA (Over-the-Air) | APP publish website like fir.im | 适用于企业 iOS & Android 内网发布测试使用,方便管理和分发 APP 包