本文做者:CODING 用户 - 廖石荣
持续集成指的是,频繁地(一天屡次)将代码集成到主干。
如图所示:php
快速发现错误。每完成一点更新,就集成到主干,能够快速发现错误,定位错误也比较容易。防止分支大幅偏离主干。若是不是常常集成,主干又在不断更新,会致使之后集成的难度变大,甚至难以集成。html
关于网上集成服务的工具不少,其中尤为以 Jenkins 服务最受欢迎,可是 Jenkins 服务须要在本身服务器上进行配置安装,以及安装各类插件,对于刚上手的小白来讲,可能存在必定的门槛,操做步骤繁多,操做不够智能,不是真正的自动化运维,缺乏一键发布构建服务。因此咱们选择了「CODING 持续集成」。java
CODING 推出的持续集成服务,「CODING 持续集成」是基于 Jenkins 的,兼容 Jenkinsfile 配置文件,若是您以前有使用过或者写过 Jenkinsfile 相信您会很快上手。node
「CODING 持续集成」是基于 Jenkins 的,经过 Jenkinsfile 配置文件完成CI的步骤,接下来将引导您一步步建立一个持续集成示例。python
如图所示,集成步骤分为拉取代码-》构建-》测试-》部署等步骤,点击每一个步骤能够看到相应的命令执行状况,下面来一个一个步骤配合 Jenkinsfile 文件解释命令的一些执行状况:git
1.检出项目,以下所示 Jenkinsfile 配置文件第一步经过 Git 检出在远程仓库分支的代码,至于哪一个分支能够经过环境变量配置读取 REF 这个环境变量npm
stage("检出") { steps { sh 'ci-init' checkout( [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL]]] ) } }
如上图所示,第一步主要是执行从 Git 仓库远程拉取代码,因此命令都是 Git 里面的,包括读取 Git 配置的环境变量包括更新 Jenkinsfile 文件缓存
2.构建项目,以下命令所示构建这一步主要是初始化代码和打包代码,由于咱们这个工程是以 Node.js 为主要开发语言,因此重点关注 Node.js 版本和 安装 hexo 脚手架命令便可打包,目前Coding 提供的语言环境包括了 java-1.8.0_181, go-1.7.4, node-10.11.0, php-7.0.30, ruby-2.3, python-2.7.13 等。若有须要能够联系客服进行开通其它语言环境。tomcat
stage("构建") { steps { echo "构建中..." sh 'go version' sh 'node -v' sh 'java -version' sh 'php -v' sh 'python -V' sh 'gcc -v' sh 'make -v' // 请在这里放置您项目代码的单元测试调用过程,例如: // sh 'mvn package' // mvn 示例 // sh 'make' // make 示例 sh 'npm install -g hexo-cli' //安装hexo 脚手架 echo "构建完成." // archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物 } }
由于这个 Hexo 项目是以 Node.js 为主的项目,因此在 Jenkinsfile 文件命令里面其实能够把其它语言的检查版本命令去掉,只须要执行 node - v 命令便可ruby
3.测试项目,以下所示,若是是 maven 项目能够经过 mvn 命令执行测试语句,咱们 Hexo 这个工程经过 hexo 脚手架构建测试命令便可,若是单元测试不经过则会显示不经过,(hexo 对文件格式存在要求,若是文件格式不符合正规 MarkDown 语法,则会抛出错误)
stage("测试") { steps { echo "单元测试中..." // 请在这里放置您项目代码的单元测试调用过程,例如: sh 'hexo clean' //清除缓存 sh 'hexo g ' // 将 md 文件构建为 html 页面示例 echo "单元测试完成." // junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程 } }
*正确构建测试结果以下图:
4.部署项目
以下所示,部署项目命令能够执行本身写的部署脚本文件,也能够配置好“_config.yml”文件以后直接执行 hexo 脚手架自带的命令。
以下图整个代码结构图:
配置文件部分截图:
部署命令:
stage("部署") { steps { echo "部署中..." // 请在这里放置收集单元测试报告的调用过程,例如: // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例: // sh './deploy.sh' // 自研部署脚本 sh 'npm install hexo-deployer-git --save' // 安装 deploy 脚手架 sh 'hexo deploy' // 部署 echo "部署完成" } }
系统主页,能够做为团队以及小型公司共享文件的社区论坛,hexo 构建速度快,采用纯静态框架,语法采用纯markdown 语言,适合编写文档。
页面详情,能够经过配置是否开启评论功能以及能够添加赞扬功能,而且能够统计字数,建议时长等功能,分类标签等适合文档归集等功能
CODING 是一个面向开发者的云端开发平台,提供 Git/SVN 代码托管、任务管理、在线 WebIDE、Cloud Studio、开发协做、文件管理、Wiki 管理、提供我的服务及企业服务,其中「CODING 企业版」实现了 DevOps 流程全自动化,为企业提供软件研发全流程管理工具,打通了从团队构建、产品策划、开发测试到部署上线的全过程。 集成了 Jenkins 等主流企业开发流程工具,如上所示,这个 Hexo 博客即可以在 CODING 上面实现团队协做开发,一键部署做为团队以及公司文档共享社区论坛等做用。
本文适量引用: 阮一峰的博客