APP下载
报价宝  ›  科技  › 

企业级Jenkins pipeline持续化整合(1)Devops的前世今生

报价宝 来源:baojiabao.com 发布时间:2019-08-31 15:59:00 10月12日更新
报价宝综合消息企业级Jenkins pipeline持续化整合(1)Devops的前世今生

本系列文章共计3篇,这是第一篇!

什么持续整合?

持续整合是一种软件开发实践,即团队开发成员经常整合他们的工作,通常

每个成员每天至少整合一次,也就意味着每天可能会发生多次整合。每次集

成都通过自动化的构建(包括编译,释出,自动化测试)来验证,从而尽早

地发现整合错误。

总的来说,尽快测试释出你的业务。

也许你会有这样的担心:

光是为数不多的几次释出都让我自顾不日强 ,哪敢频繁的释出?

之所以每次上线提心吊胆就是因为没有信心!但是如果每次或大或小的功能都做足了测试,也释出了足够的次数 ,你还会没有信心么?关于这些,你可能需要仔细权衡一下。

Jenkins

当下持续整合的工贝非常多, jenkins的可玩性非常丰富,因为在你下载安装后有完全的

控制权限,并且Jenkins有足够多的外挂支援各式各样的工作。

Jenkins作为公司内部使用非常普遍。

Jenkins pipeline

Jenkinspipeline是Jenkins用来在实施以及整合持续释出"流水线"的外挂套装。 更重要的是它可以通过类似写程式码的方式来编写,即使你不熟悉编写程式码,也可以很简单的学会pipeline的编写。

通过文字而不是网页上个一个的出季框储存通,可以有助子审计,更便于控制pipeline的版本控制。

注意:如果专案里已经有历史遗留的Jenkins非pipeline专案,需要做一定的测

试、调研才能迁移到pipeline模式,因为pipeline并不是完全相容现有的Je

nkins外挂。

后文pipeline指Jenkins pipeline

Pipeline的两种格式

Pipeline有以下两种编写格式。

宣告式Pipeline(Declarative Pipeline)

Jenkins官方提供Pipeline的各种指令要手册:以及外挂的参考手册,需要什么功能去查询即可,按照约定的语法就能拼新自己的Pipeline。

属子入门常用型别

指令码式Pipeline(Scripted Pipeline)

如名字所示:指令码式Plpeline可以在Pipeline在编写过程中可以呼叫指令码或者说使用程式设计

语言l那建样的Pipeline的可应用性就很强大了。

使用Groovy语言,一门很强大的语言。

属于高阶进阶型别。

总结:按需使用,使用适合自己Pipeline格式。pipeline的两种格式后面都会介绍到。

怎么使用

下面是一个Jenkins官方关于Python程式码可持续化整合的例子。

环境说明

推荐使用docker做环境。

操作系统: ubuntu14.04 x86_64

lP地址: 192.168.139.99

安装docker

1、解除安装旧版本docker(如果你有的话)

sudo apt-get remove docker docker-engine docker.io

2、安装linux-image-extra-*

#安装软件之前更新索引

$ sudo apt-get update

#安装依赖

$ sudo apt-get install

linux-image-extra-$(uname -r)

linux-image-extra-virtual

3、设定软件源

#安装软件之前更新索引号

$ sudo apt-get update

#安装依赖

$ sudo apt-get install

apt-transport-https

ca-certificates

curl

software-properties-common

#新增docker官方GPG key

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#验证

$ sudo apt-key fingerprint OEBFCD88

pub 4e96R/aEBFCD88 2e17-e2-22

Key fingerprint = 9DC9 5822 9FC7 DD38 954A E2D8 8D81 803C 0EBF CD88

Docker Release (CE deb)

uid

sub 4e96R/F273FCD8 2e17-02-22

#新增软件源

$ sudo add-apt-repository

"deb [arch=amd64] https://download.docker.com/linux/ubuntu

$(lsb_release-cs)

stable"

4、安装docker

#安装软件之前更新索引

$ sudo apt-get update

安装docker

$ sudo apt-get install docke-ce

小结

现在docker有两种版本:商业版本(EE)与社群版本(EE),docke-ce。

映象准备

因为国内网络环境的问题,所以这里将映象的拉取做成独立的一节,在启动环境之前统一拉取好映象可以减少安装过程中的挫折感

#拉取 jenkinsci/blueocean映象

docker pull jenkinsci/blueocean

#拉取 python2环境映象

docker pull python: 2-alpine

#拉取安装了 pytest依赖的映象

docker pull gnib/pytest

#拉取安装了 pyinstallery依赖的映象

docker pull cdrx/pyinstaller-linux: python

小结

建议大家安装有 alpine字尾的映象(如果有的话),这样的映象体积要相较于没有后缀的映象要小的多之所以拉取 jenkinsci/blueocean映象而不是 jenkins,是因为 blueocean配合 pipeline使用更加完美,原生的自然也是可以的,基本就是好看与不好的区别而已

下面是拉取 docke映象可能会遇到的问题

1)、取映象慢,稍等一会,总会下载下来的

2)、拉取映象时常断开,多尝试几次

部署实验环境

实验环境的部署主要是 Jenkins的配置以及示例程式码的配置。

配置 Jenkins

启动 Jenkins

#建立一个工作目录用于共享 docker环境里面的目录

mkdir ~/workspace

#启动Jenkins

sudo docker run -itd

--rm

-u root

-p 8080:8080

-v /workspace: /var/jenkins_home

-v /var/run/docker.sock:/var/run/docker.sock

-v "$HOME":/home

jenkinsci/blueocean

配置Jenkins Web界面

访问http://:8080,本文为http://192.168.139.99:8080访问界面如下:

它会提示输入Administrator password,而这个密码就在

/var/jenkins home/secrets/initialAdminPassword

在之前的命令中,我们将/var/jenkins home目录对映到了Ubuntu server的~/workspace目录,所以可以通过以下命令检视

sudo cat /workspace/secrets/initialAdminPas sword

f8c57a840e5b495faaf4bc928574104

输入密码之后就可以点选 Continue,就会来到 Jenkins的以下界面

选择" Install suggested plugins"即可在这里会等待会,因为需要安装一些外挂。

再之后就是使用者建立界面,根据提示输入密码,点选" Save and Continue"即可

后面的页面预设即可。至此 Jenkins的配置已经就绪

界面如下:

配置实验程式码

在配置 pipeline之前,我们还需要克隆一下实验程式码。

通过以下命令将示例程式码克隆到本地

sudo git clone https://github.com/jenkins-docs/simple-python-pyinstaller-app.git ~ /workspace/GitHub/simple-python-pyinstaller-app

上面的程式码将程式码克隆到了~ /workspace/GitHub/simple-python-pyinstaller-app目录。

至此配置 pipeline之前的准备工作都已就绪。

配置 pipeline

点选 Jenkins的首页的"New任务"(New Item)

根据上图依次填入任务的名称,选择流水线(pipeline),点选"OK"。

点选"OK"之后会跳转到pipeline的设定页面,在这个页面我们可以配置pipeline相关配置。

在上图,我们依次将"Definition"的下拉框选择"Pipeline script from SCM而SCM的下拉框选择"GIT",最后 Repositories里面的Repository URL的文字框中我们填入 /var/jenkins_home/GitHub/simple-python-pyinstaller-app

其他设定预设即可。

最后点选"Save"。

至此我们的pipeline的配置部分的准备工作已经全部完成。

接下来就是编写pipeline

编写pipeline

通过以下命令在本地的git仓库(即我们克隆的那个git仓库)中建立Jenkinsfile

#建立 enkinsfile

sudo cat ~/workspace/GitHub/simple-python-pyinstaller-app/Jenkinsfile

pipeline {

agent none

stages("Build") {

agent {

docker {

image 'python:2-alpine'

}

}

steps {

sh 'python -m py_compile sources/add2vals.py sources/calc.py'

}

}

stage('Test')

agent {

docker {

image 'qnib/pytest'

}

}

steps {

sh 'py.test --verbose --junit-xml test-reports/results.xml sources/test_calc.py'

}

post {

always {

junit 'test-reports/results. xml'

}

}

}

stage('Deliver') {

agent {

docker {

image 'cdrx/pyinstaller-linux: python2'

}

}

steps {

sh 'pyinstaller--onefile sources/add2vals.py'

}

post {

success {

archiveartifacts 'dist/add2vals'

}

}

}

}

}

EOF

然后进入克隆的本地仓库提交刚好建立的档案

#进入示例程式码仓库

cd ~/workspace/GitHub/simple-python-pyinstaller-app

#新增的资讯

git add

glt commit -m "init"

注意:如果提示需要配置emai,按照提示配置即可,比如随便配置一个 git config-global user.email "[email protected]"

现在我们可以点选"立即构建"(Build now)开始构建。点选之后会花一段时间跑我们在pipeline里面定义的任务。

结果如下:

我们也可以通过Blue Ocean检视刚好执行的pipeline执行结果。依次点选"开启Blue Ocean",选择其中一个任务,选择相应的build。Blue Ocean会有更好的展示界面。

效果如下:

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 报价宝 数码相机价格 笔记本价格 红米手机价格 降噪耳机价格