coding上的免费的编译打包推镜像工具(cicd)太强了,必须分享一下

Posted 水中加点糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了coding上的免费的编译打包推镜像工具(cicd)太强了,必须分享一下相关的知识,希望对你有一定的参考价值。

在做一些自己感兴趣的开源项目时,常常也会遇到需要进行持续集成的场景

如将一个项目进行编译、打包、推镜像

如果是在公司,一般会用公司的jenkins来进行持续集成

如果是个人项目,又没有jenkins等资源或者嫌麻烦,我尝试过用以下办法来解决:

  1. 如果是maven项目,可以使用fabric8docker-maven-plugin打包插件来进行,实现半自动化的方式进行打包和推镜像
  2. 如果是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)太强了,必须分享一下

coding上的免费的编译打包推镜像工具(cicd)太强了,必须分享一下

k8s CICD流程

编译打包工具sbt的镜像设置

docker将本地打包好的镜像推到远程

项目配置打包项目镜像并推送到镜像仓库