前言Flask是Python中最流行的Web框架之一,以体积小、灵活、扩展性强着称。与Django相比,它给了开发者最大的自由度。本文将通过一个简单的Demo工程来演示如何在CODING中持续集成。准备工作环境GitPythonpipPyCharm)当然你还需要一个CODING账号:)现在就注册吧。这里的代码我准备了一个完整的python-flask-demo)。当然你也可以自己准备一个Python+Flask的项目~不知道如何将项目推送到CODING代码仓库的同学可以查看这个帮助文档。快速使用代码仓库第一步:新建产品仓库由于我们需要将持续集成构建的Docker镜像推送到CODING产品仓库中,所以需要先新建一个产品仓库。详细步骤可以参考CODING中使用Docker产品仓库一文,这里不再详细介绍。注意:新建的神器仓库名称需要对应Demo工程中Jenkinsfile中的ARTIFACT_REPO环境变量。第二步:创建一个新的持续集成构建计划此时你应该准备好了:本地环境;您已经拥有自己的CODING帐户;你有了一个基于Python+Flask的CODING项目和一个Docker产品仓库,那么就让我们一起开启CODING持续集成之旅吧!1.首先进入你的项目,在左侧导航栏选择ContinuousIntegration,然后点击右侧的Build:2.点击NewBuildPlanConfiguration:3.输入计划名称,这里我们使用CODING作为代码源,codewarehouse选择我们刚刚创建的项目即可。我们可以选择代码仓库中的Jenkinsfile作为配置源,也可以使用下面静态配置的Jenkinsfile模板。我们已经搭建了一些具有代表性的模板,欢迎您向我们提供模板或者提出需要某种模板的需求。如果你对Jenkins有所了解,也可以选择自定义构建过程4.如果你使用的是上面提供的Demo工程,那么新建成功后我们默认会进入图形化编辑器的页面:当然如果你喜欢直接通过代码编辑Jenkinsfile,也可以选择文本编辑器:至此,我们的CODING持续集成构建计划已经创建完成,你还可以根据需要修改持续集成触发规则、变量和缓存、通知提醒你自己的情况。第三步:开始构建我们回到持续集成->构建页面,现在我们可以看到我们刚刚创建的构建计划,现在我们可以开始构建我们的项目了。1.点击右上角的BuildNow按钮:2.点击后会弹出BuildNow窗口,在这里我们可以选择构建目标,可以是你的任意一个Git分支,也可以是Tags,也可以是commitID。我们还可以自定义启动参数,在构建时会以环境变量的形式注入到JenkinsPipeline中。确认无误后,我们就可以点击下面的BuildImmediately来开始我们的构建了:3.此时CODING持续集成已经按照之前的配置开始为你的项目构建了:ReadytoBuild:BuildSuccessfully:BuildDetails:4.检查产品库中是否已有我们构建的Docker镜像:首先点击侧边栏中的产品库,进入产品库页面:在该页面可以看到构建成功的Docker镜像已经成功推送到我们的产品库,我们可以随时拉下来,推送到其他产品库,或者共享,运行后访问5000端口会返回一个HelloWorld。Jenkinsfile文件代码解释管道{agentany//环境变量,全局可用环境{//企业唯一标识ENTERPRISE="coding-public"//项目名称PROJECT="python-flask-demo"//产品仓库名称ARTIFACT_REPO="registry"//Docker镜像名称IMAGE_NAME="python-flask-demo"//CODINGDOMAIN,无需更改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('checkout'){steps{//Gitcheckout,无需更改checkout([$class:'GitSCM',branches:[[name:env.GIT_BUILD_REF]],userRemoteConfigs:[[url:env.GIT_REPO_URL,credentialsId:env.CREDENTIALS_ID]]])}}stage('打包镜像'){steps{//根据项目根目录下的Dockerfile制作镜像sh"dockerbuild-t${ARTIFACT_IMAGE}:${env.GIT_BUILD_REF}。”//会生成标签sh"docker的镜像tag${ARTIFACT_IMAGE}:${env.GIT_BUILD_REF}${ARTIFACT_IMAGE}:latest"}}stage('Pushtoproductrepository'){steps{script{//Pushtoproductrepositorydocker.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+FlaskDemo的例子一步步带您更进一步实践。
