大家可能还没搞清楚,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的更多相关文章

  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. Mybatis框架入门

    Mybaits框架 一.什么是Mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了googl ...

  2. STM32读取温湿度传感器DHT11和DHT21(AM2301)系列问题

    1.DHT11和DHT21传感器 这两种传感器都是奥松公司的产品,具体的传感器说明书在其官网上有(www.aosong.com). DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合 ...

  3. Web Api 利用 cors 实现跨域

    一.安装 cors 二.修改 Web.config <appSettings> <add key="cors:allowedMethods" value=&quo ...

  4. Web移动端适配总结

    移动端适配的相关概念以及几种方案总结 适配相关概念 布局视口(layout viewport):html元素的上一级容器即顶级容器,用于解决页面在手机上显示的问题.大部分移动设备都将这个视口分辨率设置 ...

  5. ssl双向认证

    ssl双向认证 一.背景知识 1.名词解释 ca.key: 根证书的私钥 , ca.crt: 根证书的签名证书 server.key, server.crt client.key, client.cr ...

  6. HTTP协议扫盲(一)HTTP协议的基本概念和通讯原理

    一.HTTP协议的概念 1.引子  - 从url开始 URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下 schema://host[:port# ...

  7. greenplum集群某台机器磁盘占用100%处理方式

    一.问题描述 使用gpfdist往集群中导入大量数据, 一段时间后连接退出,集群无法连接 二.问题定位 使用如下命令查看: gpstate -s mdw-:gpadmin-[INFO]:- Segme ...

  8. Java-Maven(八):IDEA使用本地maven,并配置远程中央仓库

    声明:已经安装了maven,安装请参考:<Java-Maven(一):Maven的简介与安装> 1)一般我们从github.码云(https://gitee.com)上获取代码后,实际上我 ...

  9. Java-Maven(一):Maven的简介与安装

    Maven的简介 Maven是什么? Maven是一个项目管理和整合的工具.Maven为开发者提供了一套完整的构建生命周期框架.开发者可以通过Maven更快的自动完成工程的基础构建陪孩子,因为Mave ...

  10. PHP 通过fsockopen函数获取远程网页源码

    <?php $fp = fsockopen("www.baidu.com", 80, &$errno, &$errstr, 10); if(!$fp) { e ...