使用 CODING 进行 SpringBoot 项目的持续集成
source link: https://www.wencst.com/archives/1325
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
持续集成简介
持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。成员之间的代码相互影响,可能会出现各种编译、运行的错误,为了避免提交代码影响到其他开发者,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现错误,使得开发过程更加简单方便。
我与Coding之缘
Coding持续集成
- 首先需要创建企业账号;
- 然后创建自己的项目;
- 进入项目维护项目代码。
本文所使用的源代码为本人在Gitee中开源的自动开发框架。
Git操作
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 "镜像上传完毕"
}
}
}
}
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 "镜像上传完毕"
}
}
}
}
Jenkinsfile拆解
- 第一步为代码检出
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 会越来越完善,越来越好!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK