内容简介:本文作者:CODING 用户 - 高文持续集成(Continuous integration) 是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。成员之间的代码相互影响,可能会出现各种编译、运行的错误,为了避免提交代码影响到其他开发者,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现错误,使得开发过程更加简单方便。
本文作者:CODING 用户 - 高文
持续集成(Continuous integration) 是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。成员之间的代码相互影响,可能会出现各种编译、运行的错误,为了避免提交代码影响到其他开发者,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现错误,使得开发过程更加简单方便。
通用的持续集成流程大体是像上图所示一样,借助 Jenkins 连通 Git 与 Docker 镜像仓库,为后续的持续部署做准备。
而在 「CODING 持续集成」 中,可以省去其中很多环境部署的麻烦事,下面说一下我在 CODING 平台做的持续集成工作。
我与 CODING 之缘
CODING 是国内首个一站式云端软件服务平台,致力于通过技术创新推动软件开发升级转型,让开发更简单。将代码托管、项目管理、Cloud Studio、一键部署等开发 工具 集成到浏览器中,免除繁杂的开发环境部署,降低软件开发部署成本。
最初了解 「CODING」 ,是我在开发微信小程序时,腾讯云推荐托管代码到 CODING 上,于是注册了一个 CODING 账号。
开始使用时,主要以Web版开发工具为主,觉得只是一个 Eclipse 的 Che 版本,当时也自己部署一个 Eclipse 的 Che 版本。但部署 Che 版本时,才发现, CODING 其实比 Che 好用得不是一点半点。流畅性、易用性已经高出 Che 一个等级了,功能上也比 Che 更丰富。后来逐渐用起来了,发现 「CODING」 不只是 WebIDE ,还是 Git 、 Jenkins 、 Wiki 、敏捷开发工具、项目管理工具……现在持续集成功能出来了,可以免费试用15天,于是注册一个玩一玩。
「CODING 持续集成」
基础操作
- 首先需要创建企业账号;
- 然后创建自己的项目;
- 进入项目维护项目代码。
本文所使用的源代码为本人开源的自动开发框架。
Git 操作
下面为 Git 的操作了,相信看文章的大部分人可以略过这一步。
详细的 Git 步骤可以参考: 《 CODING 中的 Git 操作》
Git 操作主要为后续持续集成操作的触发器。
持续集成
持续集成操作的设置相对比较简单,按照提示一步步下来即可。有一块需要注意的,就是构建所用的分支,在配置持续集成时,需要选择构建触发方式,触发时间(代码上传时触发/手动触发),以及完成时邮件发送提醒(提醒触发者/不做任何事/只有失败时提醒)。对于多分支代码工程一定要注意,选择自己所需的配置。我这里所用的为系统默认配置,即当有人提交代码至 master 时触发构建,完成时总是发邮件提示开发者。
「CODING 持续集成」 提供了三套不同的 Jenkinsfile 模板供开发者使用:简易模板、并行模板、自定义模板。我这里选用简易模板,并稍作修改。
pipeline {
agent {
label "default"
}
stages {
stage("检出") {
steps {
sh 'ci-init'
checkout(
[$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL]]]
)
}
}
stage("构建") {
steps {
echo "构建中..."
sh 'mvn clean install'
echo "构建完成."
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物
}
}
stage("Docker") {
steps {
echo "Docker镜像生成中..."
sh 'cd wencst-generatorJPA/target && cp classes/Dockerfile . && docker build -t wencst/wencst-generatorJPA .'
echo "镜像生成完成."
sh 'docker push wencst/wencst-generatorJPA'
echo "镜像上传完毕"
}
}
}
}
更新 Jenkinsfile 后,代码 push 到对应的分支上,会自动执行构建,发现构建失败。
点开后,查看构建失败的具体原因,输出与 maven 编译时输出的没有什么差别。
原因提示: there is no POM in this directory。
原来我中间还有一层目录,需要进入目录后才能编译。
pipeline {
agent {
label "default"
}
stages {
stage("检出") {
steps {
sh 'ci-init'
checkout(
[$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL]]]
)
}
}
stage("构建") {
steps {
echo "构建中..."
sh 'cd wencst-generatorJPA && mvn clean install'
echo "构建完成."
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物
}
}
stage("Docker") {
steps {
echo "Docker镜像生成中..."
sh 'cd wencst-generatorJPA/target && cp classes/Dockerfile . && docker build -t wencst/wencst-generatorJPA .'
echo "镜像生成完成."
sh 'docker push wencst/wencst-generatorJPA'
echo "镜像上传完毕"
}
}
}
}
提交代码后,会自动执行构建。
可以显示程序编译过程,可以显示每一步详细输出,可以增加状态徽标到相应的文档或网页中。可以说 「CODING 持续集成」 想的是比较周到的,基本集成了绝大部分开源系统中相应的职能。
构建使用默认的 https://repo.maven.apache.org 源,构建速度也还可以。
至此持续集成完成,界面清晰整洁,并且可以对测试报告和构建结果进行下载,构建过程也会发邮件给相关人员。确实让开发更简单了。以前在做这一系列工作时,架构师起码要做几件事情:
1.搭建 git 仓库
2.搭建 jenkins
3.在 git 仓库中增加 CI 配置
4.邮箱配置
「CODING 持续集成」 为开发者省去了很多工作,除了构建过程中必要的工作以外,其他的基本一键搞定,不用关心各个组件的安装配置,环境情况,网络情况,存储备份等内容。
Jenkinsfile 拆解
重点解释一下 stages 部分,整体分为三个 stages:
- 第一步为代码检出
stage("检出") {
steps {
sh 'ci-init'
checkout(
[$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[url: env.GIT_REPO_URL]]]
)
}
}
这一步检出项目中的代码到 jenkins 的 workspace 目录下,这一步是 「CODING 持续集成」 默认的配置,无需过多解释。
- 第二步为编译构建
stage("构建") {
steps {
echo "构建中..."
sh 'cd wencst-generatorJPA && mvn clean install'
echo "构建完成."
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
}
}
这一步是执行代码编译,我所用的是 maven 编译 spring boot 工程, 「CODING 持续集成」 集成了 mvn 命令,可以直接执行 maven 操作。
注意: jenkins 执行 sh 命令的根路径都是在当前 workspace 下,所以切换路径与 maven 编译命令要在同一个 sh 命令下。
编译执行后,收集编译的产物, archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true 这一步的意思是,将所有工程的 target 路径下的 jar 包都算作工程产物。
- 第三步为 docker 镜像生成
stage("Docker") {
steps {
echo "Docker镜像生成中..."
sh 'cd wencst-generatorJPA/target && cp classes/Dockerfile . && docker build -t wencst/wencst-generatorJPA .'
echo "镜像生成完成."
sh 'docker push wencst/wencst-generatorJPA'
echo "镜像上传完毕"
}
}
对于熟悉 docker 的人并不是很陌生,依旧使用 shell 命令来执行 docker build 操作。
cd wencst-generatorJPA/target 首先切换路径到 jar 包所在目录。
cp classes/Dockerfile . 拷贝 Dockerfile 到当前路径下。
docker build -t wencst/wencst-generatorJPA . 执行 docker build 操作,用以创建 docker 镜像。
docker push wencst/wencst-generatorJPA 将创建出来的 docker 镜像上传到 dockerhub 中去。
总结
整体来说 「CODING 持续集成」 想的很周全了,无论从易用性、美观度以及人性化角度上来说,做得都非常不错。下面着重说说我使用 「CODING 企业版」 的持续集成后的感受:
- 满足了从开发到代码管理,到代码集成,到单元测试,甚至到后续部署,一站式管理;
- 配置相对简单,只需配置 Jenkinsfile 即可完成,无需花费大量的人力物力来做各系统间的整合操作;
- 系统集成后,会给开发人员发送邮件,报告集成成功或失败,这一点还是比较人性化的;
- 「CODING 持续集成」 平台集成了很多种命令,起码我用到的 mvn/java/docker/git 这一类的命令基本都集成在服务中了。
希望 CODING 会越来越完善,越来越好!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS 中使用Jenkins进行持续集成
- 在Shell中进行独立的集成测试
- .net core 集成 sentry 进行异常报警
- 使用ZeroCode对SpringBoot应用进行集成测试
- 使用 CODING 进行 Hexo 项目的持续集成
- SpringBoot集成Shiro进行权限控制和管理的示例
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Build Your Own Web Site the Right Way Using HTML & CSS
Ian Lloyd / SitePoint / 2006-05-02 / USD 29.95
Build Your Own Website The Right Way Using HTML & CSS teaches web development from scratch, without assuming any previous knowledge of HTML, CSS or web development techniques. This book introduces you......一起来看看 《Build Your Own Web Site the Right Way Using HTML & CSS》 这本书的介绍吧!