开启 CVM 后如何进行持续集成 Docker 构建?

CODING 企业版持续集成中已支持 Docker 构建。

首先持续集成的执行方式选择云服务器(只支持 Docker 构建)

Dockersfile 参考如下:

pipeline {
    agent any
    stages {

        // 云服务器方式 提供 docker 环境,你可以在构建的任何阶段使用任何想要的构建环境(如 gradle, maven, node等),并可以使用 Docker 来将你的应用打成镜像以发布

        stage("检出") {
            steps {
                sh 'ci-init'
                checkout(
                        [$class           : 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
                         userRemoteConfigs: [[url: env.GIT_REPO_URL]]]
                )
            }
        }


        stage("构建") {

            // 选用自己想用于构建的 docker 镜像
            agent {
                docker { image 'maven' }
            }

            steps {
                echo "构建中..."
                sh 'mvn -v'
                // sh 'mvn compile'
            }
        }


        stage('测试') {

            agent {
                docker { image 'maven' }
            }

            steps {
                parallel "单元测试": {

                    echo '单元测试'

                    // 请在这里放置您项目代码的单元测试调用过程,例如 mvn test
                    // 请在这里放置收集单元测试报告的调用过程,JUnit 示例:junit 'target/surefire-reports/*.xml'

                    //sh 'mvn test'

                }, "接口测试": {
                    echo '接口测试'
                    // 请在这里放置您项目代码的单元测试调用过程,例如 mvn test
                    // 请在这里放置收集接口测试报告的调用过程,JUnit 示例:junit 'target/surefire-reports/*.xml'
                }
            }

        }


        stage('打包') {

            steps {
                echo '打包...'
                // 打成 docker 镜像
                // sh "docker build $tag $contextPath"
            }

        }

        stage('推送镜像') {

            steps {
                /*
                sh "echo ${REGISTRY_PASS} | docker login -u ${REGISTRY_USER} --password-stdin ${REGISTRY_URL}"
                sh "docker tag ${image} ${registry_image}"
                sh "docker push ${registry_image}"
                */
            }

        }


        stage("部署") {
            steps {
                echo "部署中..."
                // 请在这里放置收集单元测试报告的调用过程,例如:
                // sh 'mvn tomcat7:deploy' // Maven tomcat7 插件示例:
                // sh './deploy.sh' // 自研部署脚本
                echo "部署完成"
            }
        }
    }
}

相关文章