大家可能还没搞清楚,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文件,然后填入以下代码:

  1. pipeline {
  2. agent none
  3. stages {
  4. stage('Build') {
  5. agent {
  6. docker {
  7. image 'python:2-alpine'
  8. }
  9. }
  10. steps {
  11. sh 'python -m py_compile sources/add2vals.py sources/calc.py'
  12. }
  13. }
  14. stage('Test') {
  15. agent {
  16. docker {
  17. image 'qnib/pytest'
  18. }
  19. }
  20. steps {
  21. sh 'py.test --verbose --junit-xml test-reports/results.xml sources/test_calc.py'
  22. }
  23. post {
  24. always {
  25. junit 'test-reports/results.xml'
  26. }
  27. }
  28. }
  29. stage('Deliver') {
  30. agent {
  31. docker {
  32. image 'cdrx/pyinstaller-linux:python2'
  33. }
  34. }
  35. steps {
  36. sh 'pyinstaller --onefile sources/add2vals.py'
  37. }
  38. post {
  39. success {
  40. archiveArtifacts 'dist/add2vals'
  41. }
  42. }
  43. }
  44. }
  45. }

  保存文件,然后运行以下命令以提交修改:

  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的更多相关文章

  1. Jenkins简明入门(三) -- Blue Ocean,让一切变得简单

    我们在上一节Jenkins简明入门(二) 中见识到了Jenkins能做些什么:利用Jenkins完成python程序的build.test.deployment. 同时,也有一种简单的方法,不需要写J ...

  2. Jenkins简明入门(一) -- 安装

    如今Jenkins官网的Guide里使用了Docker,网上很多Jenkins入门教程都已过时了,所以写这一篇入门教程. 官网的Guide Link是:https://jenkins.io/doc/p ...

  3. Python 简明教程 --- 2,第一个Python 程序

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那你肯定是用错方法了. -- Carig Zerouni 当你在自己的电脑上 ...

  4. 利用 pip 安装 Python 程序包到个人用户文件夹下

    利用 --user 参数,即 pip install --user package_name 这样会将Python 程序包安装到 $HOME/.local 路径下,其中包含三个字文件夹:bin,lib ...

  5. 利用setuptools发布Python程序到PyPI,为Python添砖加瓦

    pip install的东西从哪里来的? 从PyPI (Python Package Index)来的,官网是:  https://pypi.python.org/pypi/执行pip install ...

  6. Jenkins遇到问题二:Jenkins服务器磁盘空间管理策略

    Jenkins在帮助我们自动化构建服务的同时也在消耗服务器的磁盘空间,试想如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致Jenkins出现磁 ...

  7. [工具] 利用setuptools打包python程序

    一.准备工程文件 1.创建工程leeoo 2.在工程根目录下创建setup.py文件 3.在工程根目录下创建同名package 二.编辑setup.py 1.编辑setup.py文件 from set ...

  8. python教程(二)·第一个python程序

    几乎所有的计算机语言教程,不仅仅是python,都以这样一个相似的示例程序开始讲解--Hello World! 代码如下,简简单单的一行.想必稍微了解英语的读者,都能猜到这段代码功能吧. print( ...

  9. python简介、第一个python程序、变量、字符编码、用户交互程序、if...else、while、for

    也愿大家永葆初心-- 已识乾坤大,犹怜草木青. 一.python简介 首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算 ...

随机推荐

  1. 常见web攻击总结

    搞Web开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事.本篇主要简单介绍在Web领域几种常见的攻击手段及Java Web中的预防方式. XSS SQL注入 DDOS ...

  2. print 函数设置字体颜色

    格式:\033[显示方式;前景色;背景色m数值表示的参数含义:显示方式: 0(默认值).1(高亮).22(非粗体).4(下划线).24(非下划线). 5(闪烁).25(非闪烁).7(反显).27(非反 ...

  3. JS刷题总结

    多总结,才能更好地进步,分享下最近的刷题总结给大家吧 关于缩减代码 1.善用js中的函数或者特性. (迭代.解构.set等等) //使用箭头函数缩减代码 //处理输入,可以用.map,需要注意其所有参 ...

  4. iot前台开发环境:请求示例

    参考链接:http://www.cnblogs.com/keatkeat/category/872790.html 编辑->update保存 一.typescipt import { Injec ...

  5. Python之匿名函数

    匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数. #这段代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lam ...

  6. Python之协程

    前言 在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位.按道理来说我们已经算是把cpu的利用率提高很多了.但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建 ...

  7. HTML中的上下标标签的演示

    HTML中的上下标标签的演示 #table_head>td { font-weight: bold } tr { text-align: center } 作用 标签 演示代码 呈现效果 上标 ...

  8. Java练习(模拟扫雷游戏)

    要为扫雷游戏布置地雷,扫雷游戏的扫雷面板可以用二维int数组表示.如某位置为地雷,则该位置用数字-1表示, 如该位置不是地雷,则暂时用数字0表示. 编写程序完成在该二维数组中随机布雷的操作,程序读入3 ...

  9. join()的用法

    Python中有join()和os.path.join()两个函数,具体作用如下:    join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...

  10. WebGL之通过外部传入a_PontSize值改变点着色器vshader内置变量gl_PointSize的值

    最近分配到一个看起来非常简单的优化需求.通过地图上设置工具来改变地图上显示的点的大小和透明度.无非过程就是从控件面板获取到用户设置的值保存到数据库中.然后地图上画点的时候取出设置的值渲染出点即可.前端 ...