python集成到应用中_一分钟开始持续集成之旅系列之:Python + Flask 应用

前言

Flask 是 Python 中最流行的 Web 框架之一,以小巧、灵活、可扩展性强著称。相比 Django,它给了开发者最大限度的自由。

本文将通过一个简单的 Demo 项目,来演示如何在 CODING 持续集成 中快速集成 Python + Flask 项目,并利用 Jenkins 进行构建,之后推送至 CODING 制品库 。

准备工作

环境

当然,你还需要一个 CODING 账号 😃 立即注册。

代码

这里我准备了一个完整的 python-flask-demo 项目,方便大家可以浏览参考,或者直接 git clone 下来,然后推送至自己的 CODING 项目内(还没有 CODING 项目?立即创建/导入项目)。

当然,你也可以自己准备一个 Python + Flask 的项目 ~

不知道如何将项目推送至 CODING 代码仓库的同学可以查看这篇帮助文档。 快速使用代码仓库

步骤一:新建一个制品仓库

由于我们需要将持续集成中构建产出的 Docker 镜像推送至 CODING 制品库,因此需要先新建好一个制品仓库,详细步骤可参考 在 CODING 中使用 Docker 制品库 一文,在此不做详细介绍。

注意:新建的制品仓库名称需要与 Demo 项目中 Jenkinsfile 里的 ARTIFACT_REPO 环境变量对应。

步骤二:新建持续集成构建计划

至此你应该已经准备好了:

本地环境;

已经有了属于自己的 CODING 账号;

有了一个基于 Python + Flask 的 CODING 项目

一个 Docker 制品仓库

那么接下来就开始我们激动人心的 CODING 持续集成之旅吧!

首先,进入你的项目,选择左侧导航栏中的 持续集成,然后点击其右侧的 构建:

点击 新建构建计划配置:

输入 计划名称,这里 代码源 我们选用 CODING,代码仓库 选择我们刚才创建好的项目即可,配置来源 我们可以选用代码仓库中的 Jenkinsfile,也可以使用下面的静态配置的 Jenkinsfile 模板我们内置了具有代表性的一些模板,也欢迎你向我们提供模板或者提出需要某种模板的需求。如果你对 Jenkins 有所了解,你也可以选择 自定义构建过程

如果你使用的是上面提供的 Demo 项目,那么新建成功后我们就会默认进入到 图形化的编辑器 的页面:

当然如果你喜欢通过代码直接编辑 Jenkinsfile,也可以选择 文本编辑器:

至此,我们的 CODING 持续集成构建计划已创建完毕,你还可以根据自身情况,来修改持续集成的 触发规则、变量与缓存 以及 通知提醒 等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9uE5RWk8-1587644219336)(/api/project/41005/files/20523359/imagePreview)]

步骤三:开始构建

我们返回至 持续集成 -> 构建 页面,此时可以看到我们刚新建的 构建计划,现在,我们可以开始构建我们的项目了。

点击右上角的 立即构建 按钮:

点击后会弹出一个 立即构建 的窗口,我们可以在此选择 构建目标,目标可以是你的任意 Git branch,或者 Tag,亦或 commit ID 都行。

我们还可以自定义 启动参数,自定义的启动参数将会在构建期间以 环境变量 的形式注入到 Jenkins Pipeline 之中。

确认之后我们即可点击下方的 立即构建 来开启我们的构建:

此时 CODING 持续集成已经在为你的项目依照之前的配置开启了构建:

准备构建:

构建成功:

构建详情:

检查制品库中是否已有我们构建好的 Docker 镜像:

首先在侧边栏中点击 制品库 进入制品库页面:

在该页面中,我们可以看到构建成功后的 Docker 镜像已被我们成功推送至制品库内,我们可以随时将其 拉取 下来,推送 至其他制品库,或者共享出去,将其运行后访问 5000 端口即会返回一个 Hello World。

Jenkinsfile 文件代码解释

pipeline {

agent any

// 环境变量,全局可用

environment {

// 你的企业唯一标识

ENTERPRISE = "coding-public"

// 项目名称

PROJECT = "python-flask-demo"

// 制品仓库名称

ARTIFACT_REPO = "registry"

// Docker 镜像名称

IMAGE_NAME = "python-flask-demo"

// CODING DOMAIN,无需更改

CODING_DOMAIN = "coding.net"

// 制品库 Registry 的基础 HOST,无需更改

ARTIFACT_BASE = "${ENTERPRISE}-docker.pkg.${CODING_DOMAIN}"

// Docker 镜像全名,无需更改

ARTIFACT_IMAGE = "${ARTIFACT_BASE}/${PROJECT}/${ARTIFACT_REPO}/${IMAGE_NAME}"

}

stages {

stage('检出') {

steps {

// Git checkout,无需更改

checkout([

$class: 'GitSCM',

branches: [[name: env.GIT_BUILD_REF]],

userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]

])

}

}

stage('打包镜像') {

steps {

// 根据项目根目录下的 Dockerfile 制作镜像

sh "docker build -t ${ARTIFACT_IMAGE}:${env.GIT_BUILD_REF} ."

// 将制作出来的镜像打上标签

sh "docker tag ${ARTIFACT_IMAGE}:${env.GIT_BUILD_REF} ${ARTIFACT_IMAGE}:latest"

}

}

stage('推送到制品库') {

steps {

script {

// 推送至制品库

docker.withRegistry("https://${ARTIFACT_BASE}", "${env.DOCKER_REGISTRY_CREDENTIALS_ID}") {

docker.image("${ARTIFACT_IMAGE}:${env.GIT_BUILD_REF}").push()

docker.image("${ARTIFACT_IMAGE}:latest").push()

}

}

}

}

}

}

结语

本文介绍了如何利用 CODING 的 持续集成、制品库 来帮你的应用通过 Jenkins 自动化构建、测试等。并通过一个 Python + Flask 的 Demo 示例来进一步带你一步一步的实践。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值