一分鐘開始持續集成之旅系列之: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 示例來進一步帶你一步一步的實踐。

相關文章
相關標籤/搜索