本系列文章共计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://<服务器ip>: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 << EOF > ~/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 "you@example.com"
现在我们可以点击"立即构建"(Build now)开始构建。点击之后会花一段时间跑我们在pipeline里面定义的任务。
结果如下:
我们也可以通过Blue Ocean查看刚好执行的pipeline执行结果。依次点击"打开Blue Ocean",选择其中一个任务,选择相应的build。Blue Ocean会有更好的展示界面。
效果如下:
特别声明:文章来源用户上传并发布,本站只提供信息存储服务,不拥有所有权,内容仅供参考。