Jenkins 2.0
2.0最大的三个卖点分别是Pipeline as Code,全新的开箱体验和1.x兼容性
新版強調Pipelines as Code的概念,首度增加「流程(Pipeline)」功能,讓整合測試流程的組態設定可用程式碼來定義,並且透過程式碼簽入與版本控管的功能,可以快速建立簡單的整合測試流程。至於較複雜的流程,亦可透過Groove程式語言來控制。
Jenkins 2.0的使用介面也有所調整,同時在安裝過程中首度提供官方建議的擴充元件(Plugins)組合包,可一次安裝好官方建議的環境,對於入門使用者將是方便的設計,可大幅簡化安裝過程,快速建立Jenkins系統。此外,使用者也可以依喜好自定擴充元件的組合。
Jenkins強調其不只是軟體開發階段的持續整合測試,更要涵蓋軟體持續發布(Continuous Delivery)等更完整的軟體開發部署生命周期。
Pipeline
Stage View
https://jenkins.io/2.0/
http://www.infoq.com/cn/news/2016/04/jenkins-2-beta-pipeline-system
http://www.ithome.com.tw/news/104273
Blue Ocean
Jenkins 新版 UI 控制台
https://jenkins.io/projects/blueocean/
https://jenkins.io//blog/2016/05/26/introducing-blue-ocean/
https://github.com/jenkinsci/blueocean-plugin
Pipeline
Jenkins管道插件并不是什么新东西,但是2.0版本将提供一种新的核心特性(名字就叫Pipeline),该特性允许用户在DSL(Domain Specific Language)的帮助下定义他们的构建流程。该DSL是一种Groovy代码,允许把“构建定义(build definitioin)”当作普通代码。现在,构建定义不是放在产品里面,而是可以被提交到代码仓库里面。
基本概念:
Stage: 一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作。注意,Stage是一个逻辑分组的概念,可以跨多个Node。
Node: 一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境。
Step: Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供。
具体构成:
Jenkinsfile: Pipeline的定义文件,由Stage,Node,Step组成,一般存放于代码库根目录下。
Stage View: Pipeline的视觉展现
2.0默认支持三种类型的Pipeline,普通Pipeline,Multibranch Pipeline和Organization Folders,后两种其实是批量创建一组普通Pipeline的快捷方式,分别对应于多分支的应用和多应用的大型组织。注意,要获取Organization Folders的支持需要额外安装Plugin。
角色:
Master:主服务器,是控制节点、调度器
Agent:从服务器,降低主服务器的负载
Executor:执行具体的任务。可以在 Master 或 Slave 上执行任务
自带 Snippet Generator 生成器,http://地址:8080/jenkins/pipeline-syntax/
左侧菜单可选使用说明、在线文档等链接
参考:
http://emacoo.cn/devops/jenkins-2-0-from-ci-to-cd/
http://emacoo.cn/devops/jenkins-pipeline-tips/
https://www.cloudbees.com/blog/top-10-best-practices-jenkins-pipeline-plugin 最佳实践
https://go.cloudbees.com/docs/support-kb-articles/CloudBees-Jenkins-Enterprise/ CloudBees 知识库
安装
参考:
https://jenkins.io/doc/book/getting-started/installing/
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins
http://pkg.jenkins-ci.org/redhat-stable/
https://wiki.jenkins-ci.org/display/JENKINS/Containers
http://stackoverflow.com/question/37370927/jenkins-deploy-war-file-to-tomcat-8
http://www.whiteboardcoder.com/2014/01/installing-jenkins-on-tomcat-8.html
https://blog.microideation.com/2016/05/19/java-spring-auto-deployment-to-tomcat-8-using-jenkins-2-0-in-aws-cloud/
https://wiki.jenkins-ci.org/display/JENKINS/Offline+Jenkins+Installation
1、系统环境
系统要求
* Java 8
* 1GB+ free memory
* 50GB+ free disk space
Classic UI 浏览器要求:https://wiki.jenkins-ci.org/display/JENKINS/Browser+Compatibility+Matrix
Blue Ocean 浏览器要求:IE 要求 11+
软件版本、目录:
* JDK /DATA/app/jdk1.8.0_112
* Tomcat /DATA/app/apache-tomcat-8.5.8
* Jenkins 版本 2.19.4
* Jenkins 数据目录 /DATA/app/jenkins/data
2、安装软件
wget -O - http://.../jdk-8u112-linux-x64.tar.gz | tar -C /DATA/app -zxvf -
wget -O - http://.../apache-tomcat-8.5.8.tar.gz | tar -C /DATA/app -zxvf -
wget -O /DATA/app/apache-tomcat-8.5.8/webapps/jenkins.war http://.../jenkins-2.19.4.war
3、配置环境变量
mkdir -p /DATA/app/jenkins/data
cat > /etc/sysconfig/jenkins <<'EOF'
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
JAVA_HOME=/DATA/app/jdk1.8.0_112
TOMCAT_HOME=/DATA/app/apache-tomcat-8.5.8
JENKINS_HOME=/DATA/app/jenkins/data
PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH
CATALINA_OPTS="-Djava.awt.headless=true"
LANG=en_US.utf8
export JAVA_HOME TOMCAT_HOME JENKINS_HOME PATH CATALINA_OPTS LANG
EOF
. /etc/sysconfig/jenkins
4、配置 Tomcat
修改字符集
vi $TOMCAT_HOME/conf/server.xml
<Connector port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
配置账号(如果不选用 Delegate to servlet container 的认证机制,就不需要这步操作)
vi $TOMCAT_HOME/conf/tomcat-users.xml
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="jenkins-admin" password="secret" roles="admin-gui,admin-script,manager-gui,manager-script"/>
支持 %2F、%5C 解析为路径分隔符
if grep -q '^org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH' $TOMCAT_HOME/conf/catalina.properties; then
sed -i '/^org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH/c org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true' $TOMCAT_HOME/conf/catalina.properties
else
echo "org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true" >> $TOMCAT_HOME/conf/catalina.properties
fi
5、第一次启动初始化
5.1
启动
. /etc/sysconfig/jenkins && $TOMCAT_HOME/bin/startup.sh
5.2
访问 http://:8080/jenkins/ 网址,提示输入 admin 用户密码,并提示该密码从下面文件获取
cat /DATA/app/jenkins/data/secrets/initialAdminPassword
输入该密码,选继续
(注意,http://地址:8080/jenkins 报 Null Pointer 错误,地址末尾必须加个斜杠:http://地址:8080/jenkins/)
5.3
提示 Offline,配置 Proxy
5.4
安装默认推荐的插件
5.5
不创建新的账号
6、修改认证机制
访问 http://:8080/jenkins/configureSecurity/
选择 Unix user/group database
选 Logged-in users can do anything
重新登录,登录账号同操作系统账号
7、Blue Ocean
Blue Ocean is available today as a plugin from the update center for Jenkins servers running Jenkins 2.7.x and above.
To start using Blue Ocean:
- Login to your Jenkins server
- Click Manage Jenkins in the sidebar then Manage Plugins
- Choose the Available tab and use the search bar to find BlueOcean beta
- Click the checkbox in the Install column
- Click either Install without restart or Download now and install after restart
- When installation is complete click the Use Blue Ocean button in the classic UI
8、管理命令
启动
. /etc/sysconfig/jenkins && $TOMCAT_HOME/bin/startup.sh
停止
. /etc/sysconfig/jenkins && $TOMCAT_HOME/bin/shutdown.sh
-eof-