coding上的免费的编译打包推镜像工具(cicd)太强了,必须分享一下
Posted 水中加点糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了coding上的免费的编译打包推镜像工具(cicd)太强了,必须分享一下相关的知识,希望对你有一定的参考价值。
在做一些自己感兴趣的开源项目时,常常也会遇到需要进行持续集成的场景
如将一个项目进行编译、打包、推镜像
如果是在公司,一般会用公司的jenkins来进行持续集成
如果是个人项目,又没有jenkins等资源或者嫌麻烦,我尝试过用以下办法来解决:
- 如果是maven项目,可以使用fabric8的docker-maven-plugin打包插件来进行,实现半自动化的方式进行打包和推镜像
- 如果是Github的项目,可以使用其中的Actions功能实现CICD,不过可能会遇到连国内镜像仓库网络不顺畅的问题,或高级功能需要付费
一直在想有没有更好的方式实现CICD,正好今天就看到了coding上的持续集成功能,尝试了一下感觉非常好用,分享一下。
主要流程
coding上的这个cicd功能比较多,devops的那一套感觉基本都实现完了,也有关于项目管理的一些功能,感觉着实很强。感兴趣的可以仔细研究一下,其官网地址为:https://coding.net/
使用起来个人感觉也是比较简单的,以一个github上的开源项目进行编码、打包、推镜像为例,主要步骤大致有以下:
1. 创建项目
顾名思义,就是创建一个项目
2. 关联代码仓库
项目创建好了之后,进入到项目中。
将这个项目对应的项目代码关联一下,支持多种仓库地址,如我这里的,将github上的代码关联一下
3. 创建制品仓库
在【制品管理】中,创建一个制品。也就是产出物是什么,可以是docker、maven的jar包、helm啥的
如我这里的应用产出物是一个docker
4. 创建持续集成配置文件
在【持续集成】中选择构建计划,再点创建构建计划。
这个步骤也是最关键的地方,也就是jenkinsfile的定义。由它来进行项目的CICD的过程定义。
创建时可以选择某个模板来创建,改一改基本就可以用了。
也可以自己在文本编辑器中输入jenkinsfile的方式来创建。如我这里的:
pipeline
agent any
environment
CODING_DOCKER_REG_HOST = "$CCI_CURRENT_TEAM-docker.pkg.$CCI_CURRENT_DOMAIN"
CODING_DOCKER_IMAGE_NAME = "$PROJECT_NAME.toLowerCase()/$DOCKER_REPO_NAME/$DOCKER_IMAGE_NAME"
stages
stage("检出")
steps
checkout(
[$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[
url: GIT_REPO_URL,
credentialsId: CREDENTIALS_ID
]]]
)
stage('编译')
steps
sh "mvn clean package -Dmaven.test.skip=true -pl $DOCKER_IMAGE_NAME -am"
stage('构建镜像并推送到 CODING Docker 制品库')
steps
script
env.cusversionall=sh(returnStdout: true, script: 'date +%Y%m%d%H%M').trim()
echo "$cusversionall"
sh "docker build -t $CODING_DOCKER_IMAGE_NAME:$DOCKER_IMAGE_VERSION-$cusversionall -f $DOCKERFILE_PATH $DOCKER_BUILD_CONTEXT"
useCustomStepPlugin(
key: 'SYSTEM:artifact_docker_push',
version: 'latest',
params: [
image:"$CODING_DOCKER_IMAGE_NAME:$DOCKER_IMAGE_VERSION-$cusversionall",
repo:"$DOCKER_REPO_NAME"
]
)
创建好了之后,点构建,输入启动参数就可以了。和jenkins上还是比较像的。
其中这上面的jenkinsfile我也是用模板里的改的,主要是将打包语句修改了一下,让其只打maven聚合工程中的某一个工程以搞高打包速度:
steps
sh "mvn clean package -Dmaven.test.skip=true -pl $DOCKER_IMAGE_NAME -am"
以及docker镜像以分支+时间戳的方式进行命名
script
env.cusversionall=sh(returnStdout: true, script: 'date +%Y%m%d%H%M').trim()
echo "$cusversionall"
构建过程也还算是比较快的。
构建好了之后,在制品仓库中就可以看到对应的产出制品了。
最后再提一点的就是,由于这个是免费的,也有一定的资源限制,如构建分钟数每个月只有300分钟,不过对于个人的开源项目来讲感觉也足够了。
以上是关于coding上的免费的编译打包推镜像工具(cicd)太强了,必须分享一下的主要内容,如果未能解决你的问题,请参考以下文章
coding上的免费的编译打包推镜像工具(cicd)太强了,必须分享一下