task-service jenkins file

pipeline {
  agent { label 'wing-node-large' }

  environment {
      REDIS_PORT = getRandomPort()
      MONGO_PORT = getRandomPort()
      ECR_URI = '633349536424.dkr.ecr.cn-north-1.amazonaws.com.cn'
      SONARQUBE_BASE_URL='https://sonarqube.syriusrobotics.cn'
      INTERFACE_DOCUMENT_URL='https://confluence.syriusrobotics.cn/x/p15GAQ'
  }

  stages {
    stage('RealCheckout') {
      steps {
        checkout([$class               : 'RepoScm',
                  repoUrl              : 'ssh://jenkins@gerrit.syriusrobotics.cn:29418/git-repo',
                  manifestRepositoryUrl: 'ssh://jenkins@gerrit.syriusrobotics.cn:29418/manifests',
                  manifestBranch       : 'master',
                  manifestFile         : 'flexgalxy/templar/task_service.xml',
                  currentBranch        : false,
                  forceSync            : true])
        checkout([$class           : 'GitSCM',
                  userRemoteConfigs: [[url: 'ssh://jenkins@gerrit.syriusrobotics.cn:29418/devops/continuous_integration']],
                  branches         : [[name: '*/master']],
                  extensions       : [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'continuous_integration']]
        ])
      }
    }
    stage('Download') {
      steps {
        sh '''#!/bin/bash
        set -x
        ./continuous_integration/scripts/syrius_download \
          --project $GERRIT_PROJECT \
          --change-number $GERRIT_CHANGE_NUMBER \
          --patch-set $GERRIT_PATCHSET_NUMBER
      '''
      }
    }
    stage('Build') {
      steps {
        withCredentials([usernamePassword
        (
                      credentialsId: 'maven-credencials',
                      usernameVariable: 'username', 
                      passwordVariable: 'password'
        )]) {
        sh '''
        docker run --rm --add-host=maven.syriusrobotics.cn:161.189.43.115   --net=host -P -v $PWD/src:/home/gradle/project -v /home/ubuntu/jenkins-data/gradle/.gradle:/home/gradle/.gradle  -v /home/ubuntu/jenkins-data/maven/.m2:/root/.m2  -w /home/gradle/project/task_service_parent gradle gradle build -i --stacktrace -x test -PbuildNumber=$BUILD_NUMBER  -PmavenUsername=$username -PmavenPassword=$password
        '''}
      }
    }

    stage('Run Test') {
      steps {
        withCredentials([usernamePassword
        (
                      credentialsId: 'maven-credencials',
                      usernameVariable: 'username', 
                      passwordVariable: 'password'
        )]){
        sh '''
        docker run -p $REDIS_PORT:6379 --name ci_redis_$REDIS_PORT -d redis
        docker run -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=example -p $MONGO_PORT:27017 --name ci_mongo_$MONGO_PORT -d mongo
        docker run --rm --add-host=maven.syriusrobotics.cn:161.189.43.115   --net=host -P -v $PWD/src:/home/gradle/project -v /home/ubuntu/jenkins-data/gradle/.gradle:/home/gradle/.gradle  -v /home/ubuntu/jenkins-data/maven/.m2:/root/.m2 --env REDIS_PORT=$REDIS_PORT --env MONGO_PORT=$MONGO_PORT -w /home/gradle/project/task_service_parent gradle gradle -i --stacktrace clean test jacocoTestReport -PbuildNumber=$BUILD_NUMBER  -PmavenUsername=$username -PmavenPassword=$password
        docker stop ci_redis_$REDIS_PORT
        docker rm ci_redis_$REDIS_PORT
        docker stop ci_mongo_$MONGO_PORT
        docker rm ci_mongo_$MONGO_PORT
        '''}
      }
    }

    stage('Build artifacts ') {
      steps {
        withCredentials([usernamePassword
        (
                      credentialsId: 'maven-credencials',
                      usernameVariable: 'username', 
                      passwordVariable: 'password'
        )]) {
         sh '''
         docker run --rm  --net=host -P -v $PWD/src:/home/gradle/project -v /home/ubuntu/jenkins-data/gradle/.gradle:/home/gradle/.gradle  -v /home/ubuntu/jenkins-data/maven/.m2:/root/.m2  -w /home/gradle/project/task_service_parent gradle:jdk14 gradle clean build -x test -PbuildNumber=$BUILD_NUMBER    -PmavenUsername=$username -PmavenPassword=$password
         '''
        }
      }
    }


    stage('Build Docker Image To ECR') {
      steps {
          sh '''#!/bin/bash
          set -e
          aws ecr get-login-password --region cn-north-1 | docker login --username AWS --password-stdin ${ECR_URI}
          '''
          buildImageAndPush('./src/task_service/', env.ECR_URI+"/flex-galaxy/templar/task-service")
          buildImageAndPush('./src/order_task_schedule_service/', env.ECR_URI+"/flex-galaxy/templar/order-schedule")
      }
    }

  }

 post {
    always{
      pushOrderScheduleResultToPulse()
      pushTaskServiceResultToPulse()
    }

  }

}


def buildImageAndPush(path,imageName) {
    def version = getVersion()
    echo version
    def image = docker.build(imageName + ":" + version, path)
    image.push()
}
def pushOrderScheduleResultToPulse(){
  def version = getVersion()
  build job: 'push_result_to_pulse_patches', propagate: true, wait: false, parameters: [
    [$class: 'StringParameterValue', name: 'projectName', value: "flexgalaxy-templar-order-schedule"],
    [$class: 'StringParameterValue', name: 'artifactName', value: "order-schedule-${version}"],
    [$class: 'StringParameterValue', name: 'testReportUrl', value: "${SONARQUBE_BASE_URL}/code?id=task_service_parent&selected=task_service_parent%3Aorder_task_schedule_service%2Fsrc"],
    [$class: 'StringParameterValue', name: 'pulseType', value: "UpdateArtifactsTestResult"],
    [$class: 'StringParameterValue', name: 'currentEnv', value: "UT"],
    [$class: 'StringParameterValue', name: 'buildResult', value: "${currentBuild.result}"],
  ]
}
def pushTaskServiceResultToPulse(){
  def version = getVersion()
  build job: 'push_result_to_pulse_patches', propagate: true, wait: false, parameters: [
    [$class: 'StringParameterValue', name: 'projectName', value: "flexgalaxy-templar-task-service"],
    [$class: 'StringParameterValue', name: 'artifactName', value: "task-service-${version}"],
    [$class: 'StringParameterValue', name: 'testReportUrl', value: "${SONARQUBE_BASE_URL}/code?id=task_service_parent&selected=task_service_parent%3Atask_service%2Fsrc"],
    [$class: 'StringParameterValue', name: 'pulseType', value: "UpdateArtifactsTestResult"],
    [$class: 'StringParameterValue', name: 'currentEnv', value: "UT"],
    [$class: 'StringParameterValue', name: 'buildResult', value: "${currentBuild.result}"],
  ]
}

def getVersion(){
  def buildVersion = readFile(file: 'src/task_service/build.version')
    println(buildVersion)
    def version = String.format("%s.%s",buildVersion, env.BUILD_NUMBER)
    echo version
    return version
}


def getRandomPort() {
    def port = (int)(Math.random()*50000) + 10000
    return port
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值