CODING踩坑记

  • 昨天下定决心将jenkins中持续构建任务都迁移到CODING中,毕竟人家配置高嘛(就是想白嫖~),在这遇到俩个坑。
  1. 第一个:我持续集成依赖的仓库是Gitee上的,每次提交代码时都会构建俩次,不太明白,于是乎提了工单,见下图:
    image-20210523233239667
    嗯,莫名其妙多了一个WebHook,你如果用CODING本身的仓库好像没这种事。算是解决了吧。工单处理速度不错,看好CODING哦!

  2. 第二个:我选用的是Java + Spring + Docker模板来构建的,在重新拉取docker镜像时,默认模板中只强制删除了容器,并没有删除镜像,所以我又遇到了缓存问题,可不是maven和目录那几个可选的缓存。遂:

    stage('部署到远端服务') {
            steps {
              script {
                def remoteConfig = [:]
                remoteConfig.name = "my-remote-server"
                remoteConfig.host = "${REMOTE_HOST}"
                remoteConfig.port = "${REMOTE_SSH_PORT}".toInteger()
                remoteConfig.allowAnyHosts = true
    
                withCredentials([
                  sshUserPrivateKey(
                    credentialsId: "${REMOTE_CRED}",
                    keyFileVariable: "privateKeyFilePath"
                  ),
                  usernamePassword(
                    credentialsId: "${CODING_ARTIFACTS_CREDENTIALS_ID}",
                    usernameVariable: 'CODING_DOCKER_REG_USERNAME',
                    passwordVariable: 'CODING_DOCKER_REG_PASSWORD'
                  )
                ]) {
                  // SSH 登陆用户名
                  remoteConfig.user = "${REMOTE_USER_NAME}"
                  // SSH 私钥文件地址
                  remoteConfig.identityFile = privateKeyFilePath
    
                  // 请确保远端环境中有 Docker 环境
                  sshCommand(
                    remote: remoteConfig,
                    command: "docker login -u ${CODING_DOCKER_REG_USERNAME} -p ${CODING_DOCKER_REG_PASSWORD} ${CODING_DOCKER_REG_HOST}",
                    sudo: true,
                  )
    
                  sshCommand(
                    remote: remoteConfig,
                    command: "docker rm -f xxl-job-executor | true",
                    sudo: true,
                  )
    
    //这部分是我新加的,删除镜像,解决缓存问题。
                  sshCommand(
                    remote: remoteConfig,
                    command: "docker rmi  ${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION} | true",
                    sudo: true,
                  )
    
                  // DOCKER_IMAGE_VERSION 中涉及到 GIT_LOCAL_BRANCH / GIT_TAG / GIT_COMMIT 的环境变量的使用
                  // 需要在本地完成拼接后,再传入到远端服务器中使用
                  DOCKER_IMAGE_URL = sh(
                    script: "echo ${CODING_DOCKER_REG_HOST}/${CODING_DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_VERSION}",
                    returnStdout: true
                  )
    
                  sshCommand(
                    remote: remoteConfig,
                    command: "docker run -dit -p 8081:8081 -p 8082:8082 -v /home/xxl-job-executor/logs:/home/xxl-job-executor/logs --name xxl-job-executor ${DOCKER_IMAGE_URL}",
                    sudo: true,
                  )
    
                  echo "~~~~~~部署成功~~~~~~"
                }
              }
    
            }
          }
        }
    
  • 日后继续CODING踩坑img

Q.E.D.


一个热爱生活的95后精神小伙