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

前言

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

本文将经过一个简单的 Demo 项目,来演示如何在 CODING 持续集成docker

准备工做

环境

固然,你还须要一个 CODING 帐号 :) 当即注册flask

代码

这里我准备了一个完整的 python-flask-demo)。缓存

固然,你也能够本身准备一个 Python + Flask 的项目 ~框架

不知道如何将项目推送至 CODING 代码仓库的同窗能够查看这篇帮助文档。 快速使用代码仓库编辑器

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

因为咱们须要将持续集成中构建产出的 Docker 镜像推送至 CODING 制品库,所以须要先新建好一个制品仓库,详细步骤可参考 在 CODING 中使用 Docker 制品库 一文,在此不作详细介绍。测试

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

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

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

  1. 本地环境;
  2. 已经有了属于本身的 CODING 帐号;
  3. 有了一个基于 Python + Flask 的 CODING 项目
  4. 一个 Docker 制品仓库

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

1.首先,进入你的项目,选择左侧导航栏中的 持续集成,而后点击其右侧的 构建
在这里插入图片描述

2.点击 新建构建计划配置
在这里插入图片描述
3.输入 计划名称,这里 代码源 咱们选用 CODING,代码仓库 选择咱们刚才建立好的项目便可,配置来源 咱们能够选用代码仓库中的 Jenkinsfile,也可使用下面的静态配置的 Jenkinsfile 模板咱们内置了具备表明性的一些模板,也欢迎你向咱们提供模板或者提出须要某种模板的需求。若是你对 Jenkins 有所了解,你也能够选择 自定义构建过程
在这里插入图片描述

4.若是你使用的是上面提供的 Demo 项目,那么新建成功后咱们就会默认进入到 图形化的编辑器 的页面:
在这里插入图片描述
固然若是你喜欢经过代码直接编辑 Jenkinsfile,也能够选择 文本编辑器
在这里插入图片描述

至此,咱们的 CODING 持续集成构建计划已建立完毕,你还能够根据自身状况,来修改持续集成的 触发规则变量与缓存 以及 通知提醒 等。
在这里插入图片描述

步骤三:开始构建

咱们返回至 持续集成 -> 构建 页面,此时能够看到咱们刚新建的 构建计划,如今,咱们能够开始构建咱们的项目了。

1.点击右上角的 当即构建 按钮:
在这里插入图片描述

2.点击后会弹出一个 当即构建 的窗口,咱们能够在此选择 构建目标,目标能够是你的任意 Git branch,或者 Tag,亦或 commit ID 都行。

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

确认以后咱们便可点击下方的 当即构建 来开启咱们的构建:
在这里插入图片描述
3.此时 CODING 持续集成已经在为你的项目依照以前的配置开启了构建:

  • 准备构建:

在这里插入图片描述

  • 构建成功:

在这里插入图片描述

  • 构建详情:

在这里插入图片描述
4.检查制品库中是否已有咱们构建好的 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 示例来进一步带你一步一步的实践。

相关文章
相关标签/搜索