coding持续集成流程搭建(自动部署)

最近发现coding平台是真的舒服,项目协同、仓库、制品、测试、文档、构建部署应有尽有。尽管年底公司实行10106,上周还是抽空把coding上的自动化部署流程搭建起来了。

此次项目为java项目,在Coding上实现了Jenkins+Docker的持续集成流程。最终达到的效果是:当有代码合并或者提交到master分支后,出发项目构建并部署到指定的服务器上。效果图如下,当然这里还需要加上测试模块,前期求快就先省略了。

1 前期工作

1.1代码仓库

最近在做一个小项目,随便玩转一下coding,就再coding上开了一个项目,也使用的coding上的代码仓库。目前coding上的项目构建部署也只支持Coding一个代码源,gitlab和github还不支持。

1.2 Docker仓库

coding项目构建部署对于Docker仓库没有限制。

ps:coding支持的制品库还挺多的,maven、npm、PyPI等

2 搭建持续集成流程

2.1 Dockerfile文件编写

FROM java:8
MAINTAINER "Aaron"
ADD target/cms-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8083
ENTRYPOINT ["java", "-jar","/app.jar"]

2.2 Coding构建流程配置文件

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], 
                                                                                        userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('构建') {
      steps {
        echo '构建中...'
        sh 'mvn clean install'
        echo '构建完成.'
      }
    }
    stage('生成镜像') {
      steps {
        echo '生成镜像中……'
        sh 'cd cms'
        sh 'ls cms'
        sh 'docker build -t ${image_name} -f cms/.deploy/Dockerfile ./cms'
        echo '生成镜像完成'
      }
    }
    stage('推送镜像') {
      steps {
        echo '推送中...'
        sh 'docker login -u jdocker-user -p ${docker_token} {you_item}.pkg.coding.net'
        sh 'docker push ${image_name}'
        echo '推送完成'
      }
    }
    stage('部署') {
      steps {
        echo '部署中...'
        script {
          def remote = [:]
          remote.name = 'server'
          remote.allowAnyHosts = true
          remote.host = '{填写你的服务器host}'

          withCredentials([usernamePassword(credentialsId: '{coding凭证生成id}', passwordVariable: 'password', usernameVariable: 'user')]) {
            remote.user = user
            remote.password = password

            sshCommand remote: remote, command: "docker pull ${image_name}"
            sshCommand remote: remote, command: "docker stop ${project_name} | true"
            sshCommand remote: remote, command: "docker rm ${project_name} | true"
            sshCommand remote: remote, command: "docker run -p 8083:8083 --name ${project_name} -d ${image_name}"
          }
        }

        echo '部署完成'
      }
    }
  }
}

猜你喜欢

转载自blog.csdn.net/laichj/article/details/103757129