Jenkins简明入门(二) -- 利用Jenkins完成Python程序的build、test、deployment
大家可能还没搞清楚,Jenkins到底能做什么?
本节内容利用Jenkins完成python程序的build、test、deployment,让大家对Jenkins能做的事情有一个直观的了解。
本节内容改写自 https://jenkins.io/doc/tutorials/build-a-python-app-with-pyinstaller/。
1. Fork,Clone Github上的sample repo
这个Github上的sample repo包含了python程序的Buid, Test , Depolyment的代码,所以我们需要先fork这个repo,然后clone到我们本地机器。
关于这段Python程序,也很简单,就是计算两个参数的和。repo中的代码包含了程序本体(计算和),还包含了unittest,build(通过Pyinstaller生成可执行文件)等一切需要的代码及工具
1.1 登录Github,如果没有的话,就去注册一个
1.2 在Github上Fork simple-python-pyinstaller-app, 如果不知道如何fork,请参考 Fork A Repo
1.3 Clone 这个 repo到本地机器,方法是:
打开Linux命令行
cd /home/<your-username>/GitHub/
git clone https://github.com/YOUR-GITHUB-ACCOUNT-NAME/simple-python-pyinstaller-app
(记得替换<your-username>和YOUR-GITHUB-ACCOUNT-NAME为你真正的路径名和用户名)
2. 在Jenkins中创建pipline project
pipline翻译过来是“管道”的意思,其实这个你把整个Build、Test、Deployment的流程想象成一个管道,你的代码在里面流动,经过不同的阶段,就好理解了。
2.1 登录Jenkins后,在初始界面的左上角点击New Item
2.2 把pipline project的名字命名为你指定的,例如simple-python-pyinstaller-app
2.3 往下拉,选择 Pipline, 点击OK
2.4 选择Pipline tab,然后往下拉看到Pipline Section:
Definition选择Pipline Scirpt from SCM,这个选项能让Jenkins能够从Source Control Management(SCM)处获得,这个SCM其实就是你clone到本地机器的repo
SCM选择Git
Repository URL填你clone到本地机器的repo的路径: /home/GitHub/simple-python-pyinstaller-app
点击Save
3. 在Pipline中创建Jenkinsfile
Jenkinsfile实际上规定了Jenkins的Pipline流程中做了哪些事情。
在你的 /home/GitHub/simple-python-pyinstaller-app路径下创建Jenkinsfile文件,然后填入以下代码:
pipeline {
agent none
stages {
stage('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'
}
}
}
}
}
保存文件,然后运行以下命令以提交修改:
git add .
git commit -m "create the Jenkinsfile"
4. 用Blue Ocean运行Pipline然后观察
回到Jenkins初始页面,登录后,在左侧列表选择Blue Ocean,点击"Run"

在这个页面,你可以看到Pipline的运行情况

点击每个Step,可以看到具体的运行情况,在跑哪个程序,出错信息,等。

如果想要查看自己这次跑的Pipline(我们称之为Activity),那么需要先点击Blue Ocean,选中你的Project,然后点上方的Activity

如果需要运行产生的可执行文件,可以选择你跑的这一次Pipline的Activity。找到可执行文件add2vals,下载然后执行:
chmod +x add2vals
./add2vals 1 2
本节我们大体明白了Jenkins到底能帮我们做些什么:Build,Test,Deliver,了解了Jenkins的工作流程,以及Jenkinsfile规定了Pipline是如何运行的。下一节我们将会使用Blue Ocean的便捷功能,使得我们只需要操作Web页面,指定Build 、Test、 Deliver的内容,自动为我们生成Jenkinsfile文件。
Jenkins简明入门(二) -- 利用Jenkins完成Python程序的build、test、deployment的更多相关文章
- Jenkins简明入门(三) -- Blue Ocean,让一切变得简单
我们在上一节Jenkins简明入门(二) 中见识到了Jenkins能做些什么:利用Jenkins完成python程序的build.test.deployment. 同时,也有一种简单的方法,不需要写J ...
- Jenkins简明入门(一) -- 安装
如今Jenkins官网的Guide里使用了Docker,网上很多Jenkins入门教程都已过时了,所以写这一篇入门教程. 官网的Guide Link是:https://jenkins.io/doc/p ...
- Python 简明教程 --- 2,第一个Python 程序
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那你肯定是用错方法了. -- Carig Zerouni 当你在自己的电脑上 ...
- 利用 pip 安装 Python 程序包到个人用户文件夹下
利用 --user 参数,即 pip install --user package_name 这样会将Python 程序包安装到 $HOME/.local 路径下,其中包含三个字文件夹:bin,lib ...
- 利用setuptools发布Python程序到PyPI,为Python添砖加瓦
pip install的东西从哪里来的? 从PyPI (Python Package Index)来的,官网是: https://pypi.python.org/pypi/执行pip install ...
- Jenkins遇到问题二:Jenkins服务器磁盘空间管理策略
Jenkins在帮助我们自动化构建服务的同时也在消耗服务器的磁盘空间,试想如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致Jenkins出现磁 ...
- [工具] 利用setuptools打包python程序
一.准备工程文件 1.创建工程leeoo 2.在工程根目录下创建setup.py文件 3.在工程根目录下创建同名package 二.编辑setup.py 1.编辑setup.py文件 from set ...
- python教程(二)·第一个python程序
几乎所有的计算机语言教程,不仅仅是python,都以这样一个相似的示例程序开始讲解--Hello World! 代码如下,简简单单的一行.想必稍微了解英语的读者,都能猜到这段代码功能吧. print( ...
- python简介、第一个python程序、变量、字符编码、用户交互程序、if...else、while、for
也愿大家永葆初心-- 已识乾坤大,犹怜草木青. 一.python简介 首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算 ...
随机推荐
- UDP协议实现客户服务器数据交互
UDP协议实现客户服务器数据交互 按照往常一样将今天自己写的题目答案写在了博客上习题:客户端循环发送消息给服务端,服务端循环接收,并打印出来,直到收到Bye就退出程序. package network ...
- IDEA插件和快捷设置
前言 IDEA全名Intellij IDEA,是Java开发的集成环境,它有两个版本,专业版(Ultimate)和社区版(Community),专业版需要注册,而社区版不用注册,同时需要注意的是社区版 ...
- python 模块部分补充知识
一.hashlib hashlib 模块主要用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法. 实例 ...
- angular4学习笔记整理(二)angular4的路由使用
这章说一下angular的路由 先说angular路由怎么引入,一开始new出来的angular项目它路由帮你配好了,但看要看app.module.ts里面 1.首先最上面要引入路由模块 import ...
- JWT
Web安全通讯之Token与JWT http://blog.csdn.net/wangcantian/article/details/74199762 javaweb多说本地身份说明(JWT)之小白技 ...
- 新概念英语(1-27)Mrs. Smtih's living room
Where are the books? Mrs. Smtih's living room is large. There is a television in the room. The telev ...
- ssh_maven之controller层开发
我们已经完成了前两层的开发,现在 只剩下我们的controller层了,对于这一层,我们需要创建一个动作类CustomerAction,另外就是我们的strutss.xml以及我们的applicati ...
- 对JVM虚拟机中方法区的理解
因为jdk8的jvm已经取消了方法区,所以这边先主要介绍jdk8以下版本中方法区相关内容. 1.虚拟机规范中方法区的概念: 原文链接:http://docs.oracle.com/javase/spe ...
- PyQt5--基础篇:用eric6工具实现三级联动效果
今天给大家介绍下python gui界面的三级联动效果,我们用工具eric6来实现,先看下效果图. 首先我们先创建项目linkage,再新建窗体进入到Qt设计师工具开始设计界面,完成后保存并退出. 在 ...
- ZooKeeper:win7上安装单机及伪分布式安装
zookeeper是一个为分布式应用所设计的分布式的.开源的调度服务,它主要用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用,协调及其管理的难度,提高性能的分布式服务. 本章的目的:如何 ...