1. 产品简介
  2. 快速开始
  3. 编写构建流程
  4. 配置构建计划
  5. 构建环境依赖包
  6. 构建制品
  7. 构建节点
  8. 管理构建计划
  9. 系统插件
  10. 自定义团队插件
  11. 最佳实践
  12. 常见问题
  13. 词汇表
持续集成 / 使用持续集成快速构建应用 / 使用 Flask 构建 Web 应用

使用 Flask 构建 Web 应用

FlaskPython 中最流行的 Web 框架之一,以小巧、灵活、可扩展性强著称。相比 Django,它给了开发者在 Web 应用开发过程中更大限度的自由。本文将通过一个简单的 Demo 项目,演示如何在持续集成中快速集成 Python + Flask 项目。

应用构建完成后还能够自动打包为 Docker 镜像并推送至制品仓库中,方便其他团队成员进行拉取,二次构建。

前置准备

  • Git

  • Python

  • CODING 项目

  • Docker 制品仓库

  • 示例仓库

    示例项目中的目录结构与各文件的功能解释:

    python-flask-demo
    ├── .gitignore
    ├── Dockerfile
    ├── Jenkinsfile
    ├── README.rst
    ├── app.py
    └── requirements.txt
    0 directories, 5 files
  • .gitignore

    可以在内声明一些不需要加入到 Git 管理的文件或文件夹,这样就不用每次提交代码的时候再特地处理这些文件了。

  • Dockerfile

    Dockerfile 就是我们用来构建 Docker 镜像的源码,Docker 可以读取里面的指令来自动构建镜像。

  • Jenkinsfile:

    Jenkinsfile 是一个文本文件,它定义了 Jenkins 流水线,将作为配置文件检入至源代码控制仓库中。

  • README.rst

    由开发者写给其他人阅读的一个文本文件,描述了这是个什么样的项目,有什么用,如何安装和使用等。

  • app.py

    包含 main 函数的主要程序代码文件。

  • requirements.txt

    requirements.txt 可以保证项目依赖包版本的确定性, 不会因为依赖更新而导致异常产生,通常可以由 pip 包管理工具生成。

初始化项目

将示例项目导入至 CODING 代码仓库中,在新建代码仓库时选择「导入外部仓库」,填入开源仓库地址。

将项目拉取至本地后,输入以下命令安装依赖:

pip install -r requirements.txt

在本地启用预览:

python app.py

当终端返回以下数据后,意味着项目已构建成功。

在浏览器中输入 http://127.0.0.1:5000/ 进行预览。

编译与构建

编译(Compiling) 就是将源代码文件通过编译器转换为目标文件的过程,是构建(Building) 的一个部分,构建还包括连接与测试环节。

为什么需要编译/构建?

我们开发时所写的源代码,都是写给人看的,机器并不理解其意。而若想在计算机上运行一个应用程序,则必须将该程序由 源代码 转换成计算机所能理解的 二进制机器码。为此,我们需要将程序编译成可执行文件,通过构建来执行更加工程化、结构化、严谨的一系列步骤,并将产出的 制品 部署上生产环境。

在将我们开发的程序给他人使用时,他人的系统中可能并没有安装 Python 环境或没有安装第三方库,这个时候如果要求对方去装环境并不太现实,会特别不方便,特别是当对方不是个技术人员的时候。这个时候如果我们将开发好的程序编译打包成一个可执行文件,那么一切就会变得简单起来。

如何编译/构建?

在进行编程操作的时候,我们常常会遇到很多与编程无关的项目管理工作,如下载依赖编译源码单元测试项目部署 等操作。一般的,小型项目我们可以手动实现这些操作,然而大型项目这些工作则相对复杂。构建工具 是帮助我们实现一系列项目管理、测试和部署操作的工具。同时,它能大大提升我们的效率。

本文所使用的的项目为 Python 项目,我们将通过 PyInstaller 工具进行编译打包。PyInstaller 自身支持跨平台,并且自身基础操作十分简单、易上手。你可以在工具官网进行下载,macOS 用户可以直接使用 brew install PyInstaller 命令直接安装。

安装完成后,进入项目地址,因只有一个 app.py 源代码文件,所以这里使用 -F Flag 命令编译生成单个可执行文件。

pyinstaller -F app.py

运行命令,在产生了许多编译日志之后,在项目下生成了两个新目录:builddist

这里我们可以看到 dist 目录下生成了一个可执行程序 app。这就是我们这次编译所得到的主要制品了。打开此制品后,即可在 5000 端口运行相同的服务。

为什么需要持续集成?

在上述操作中,存在着一些完全可以抽离出来自动化的步骤。比如我们每次写完代码,在提交前要进行编译、单元测试,而这些步骤的操作可能大致相同,那么我们是不是可以把这些步骤交给某个自动化的工具来完成呢?甚至你可能已经写好了编译、测试的脚本,只需要运行一下即可,那么我们甚至可以把这个运行脚本的步骤也抽离出去。

通过持续集成,能够实现在代码自动提交至远端后,自动进入编译、测试、发布流程。如果在此期间发现代码有问题,CODING 持续集成还能够通过多种进行形式通知,及时暴露错误并加以改正,而不是等合进 master 分支后才发现问题。

接下来我将演示如何使用持续集成将上述项目进行编译与测试。

创建构建计划

进入项目后,点击进入左侧的「持续集成」功能,选择「Python + Flask + Docker」模板。

选择需要导出目标制品库。

你还可以根据自身情况,修改持续集成的 触发规则变量与缓存 以及 通知提醒 等。在触发规则中还可以配置自动监听代码分支,自动触发持续集成。

开始构建

我们返回至 持续集成 -> 构建 页面,此时可以看到我们刚新建的 构建计划。触发后可以在「构建过程」中查看整体的构建过程与状态。

在制品仓库中可以看到已上传的镜像。

结语

通过持续集成 + 制品仓库的搭配使用,能够轻松地将应用打包发布,用以加速开发流程。

上一篇自动构建微信小程序
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?

工单咨询