软件开发的生命周期SDLC(Software Development Life Cycle),它集合了计划、开发、测试和部署过程。
主要分为以下五个阶段:
优势 | 劣势 |
---|---|
简单医用和理解 | 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。 |
当前一阶段完成后,您只需要去关注后续阶段 | 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险 |
为项目提供了按阶段划分的检查节点 | 瀑布模型的突出缺点是不适应用户需求的变化 |
敏捷开发(Agile Development)核心是迭代开发(Iterative Development)与增量开发(Incremental Development)
迭代开发:将大的开发周期拆分为多个小周期。
增量开发:每个周期均增加一个用户可感知的完整功能。
每次版本均为一次小的瀑布模型,不遗漏每一个环节。
优点:可以早期交付,降低风险。
持续集成(Continuous integration)指的是,频繁地将代码集成到主干。
目的:让产品可以快速迭代,同事保持高质量。
流程:
好处:
CI/CD介绍:
安装流程见官网
启动时,为了防止占用过高,可以配置启动参数。
修改jenkins(/etc/sysconfig/jenkins)配置文件,找到JAVA_OPTIONS参数
vim /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Djava.awt.headless"
# 修改成
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms256m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
具体参数根据自己的机器实际情况调整。
若插件下载速度慢,也可以搜索使用国内镜像,提高下载插件速度。
打开jenkins目录中的default.json文件,一般在 /var/lib/jenkins/updates
cd /var/lib/jenkins/updates
sudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' default.json && sudo sed -i 's#www.google.com#www.baidu.com#g' default.json
Pipeline是Jenkins 2.0版本的精华所在,是帮助Jenkins实现从CI到CD华丽转身的关键工具!

Pipeline的实现方式是基于一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins 2.0 Pipeline支持从代码仓库(Git/SVN)直接读取脚本,从而实现了Pipeline as Code的理念。
Pipeline的功能和优点:
Pipeline 支持两种语法,Declarative(声明式)和Scripted Pipelin(脚本式)。
配置日志分割工具
wget http://down.zimeitang.cn/package/tomcat/cronolog-1.6.2.tar.gz
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure && make && make install && echo "cronolog is ok"
which cronolog
使用 Extended Choice Parameter 插件,同时启动多个项目
Pipeline Jenkinsfile
deploy_microservice.sh
SonarQube 是一种自动代码审查工具,它可以帮助检测bug、漏洞、坏味道。
它可以和现有的工作流集成,比如Jenkins,集成至Jenkins时只需要安装有一个SonarQube Scanner插件,流程如下图所示。
需要下载SonarQube Scanner插件,之后在全局工具配置中配置安装。(这里名称为 SonarQube-Scanner,下面流水线配置时会用到)

之后在系统配置中,配置sonar的名称,地址以及token即可使用了。 (这里名称为 SonarQube,下面流水线配置时会用到)
之后在自由风格的构建计划中就可以增加构建步骤,选择声呐扫描

这里贴一段常用的配置
Java项目
如果构建时出现 Tasks support was removed in SonarQube 7.6.
错误。将Task to run清空。
对应pipeline的模式,首先需要在项目根目录下创建 sonar-project.properties
文件,贴入上面的配置,之后在Jenkinsfile中使用。
stage('check code') {
steps {
script {
// 配置sonar scanner的名称
scannerHome = tool 'SonarQube-Scanner'
}
// Sonar环境名称
withSonarQubeEnv('SonarQube') {
// 具体可执行文件所在位置
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
容器化部署
未完待续。。。