外企 pipeline什么意思(外企release是什么意思)

抒情君 14

本系列文章共计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会有更好的展示界面。

效果如下:

上一篇:

下一篇:

  推荐阅读

分享