Commit 41f83e25 authored by wentao.suo's avatar wentao.suo

ffff

parent 06ffc612
...@@ -4,43 +4,64 @@ import org.qg.docker.Utils; ...@@ -4,43 +4,64 @@ import org.qg.docker.Utils;
import groovy.json.JsonSlurperClassic; import groovy.json.JsonSlurperClassic;
def _utils = new org.qg.docker.Utils(); def _utils = new org.qg.docker.Utils();
def harborGroup = "library"
def debug() { def debug() {
_utils().beautyEcho("debug", "info") _utils().beautyEcho("debug", "info")
} }
def before_prepare(contextDir) { def before_prepare() {
sh "rm -rf ${contextDir}"
sh "cd /home/quant_group/qg-dockerfiles; git pull; cd -" sh "cd /home/quant_group/qg-dockerfiles; git pull; cd -"
sh "cd /home/quant_group/config_repository; git pull origin master; cd -" sh "cd /home/quant_group/config_repository; git pull origin master; cd -"
} }
def prepare_config(buildType,systemName, contextDir) {
switch (buildType) {
case "java":
prepare_java(systemName, contextDir)
break
case "nodejs":
prepare_nodejs(systemName, contextDir)
break
case "python":
prepare_python(systemName, contextDir)
break
case "lua-ui":
prepare_luaui(systemNames, contextDir)
break
default:
echo "未知的buildType: ${config.buildType}"
break
}
}
def prepare_java(systemName, contextDir) { def prepare_java(systemName, contextDir) {
sh "cp -rf /home/quant_group/qg-dockerfiles/templates/java ${contextDir}" sh "cp -rf /home/quant_group/qg-dockerfiles/templates/java ${contextDir}"
sh "cp -rf /home/quant_group/config_repository/java/${systemName}.properties ${contextDir}/application.properties" sh "cp -rf /home/quant_group/config_repository/java/${systemName}.properties ${contextDir}/application.properties"
} }
def prepare_nodejs(systemName, contextDir) { def prepare_nodejs(systemName, contextDir) {
sh "cp -rf /home/quant_group/qg-dockerfiles/templates/nodejs ${contextDir}" sh "cp -rf /home/quant_group/qg-dockerfiles/templates/nodejs ${contextDir}"
sh "cp -rf /home/quant_group/config_repository/nodejs/${systemName}.js env.config.js" sh "cp -rf /home/quant_group/config_repository/nodejs/${systemName}.js env.config.js"
} }
def prepare_luaui(systemNames, contextDir) { def prepare_luaui(systemNames, contextDir) {
sh "cp -rf /home/quant_group/qg-dockerfiles/templates/lua-ui ${contextDir}" sh "cp -rf /home/quant_group/qg-dockerfiles/templates/lua-ui ${contextDir}"
sh "cp -rf /home/quant_group/config_repository/lua-ui/lua/*.lua ${contextDir}" sh "cp -rf /home/quant_group/config_repository/lua-ui/lua/*.lua ${contextDir}"
def isVhFileExist = fileExists "/home/quant_group/config_repository/lua-ui/nginx/${systemNames}.vh.conf" def isVhFileExist = fileExists "/home/quant_group/config_repository/lua-ui/nginx/${systemNames}.vh.conf"
if (isVhFileExist) { if (isVhFileExist) {
sh "cp -rf /home/quant_group/config_repository/lua-ui/nginx/${systemNames}.vh.conf ${contextDir}" sh "cp -rf /home/quant_group/config_repository/lua-ui/nginx/${systemNames}.vh.conf ${contextDir}"
}else{ }else{
sh "cp -rf /home/quant_group/config_repository/lua-ui/nginx/default.vh.conf ${contextDir}" sh "cp -rf /home/quant_group/config_repository/lua-ui/nginx/default.vh.conf ${contextDir}"
} }
arrSystem = systemNames.split("--") arrSystem = systemNames.split("--")
for (systemName in arrSystem) { for (systemName in arrSystem) {
sh "cp -rf /home/quant_group/config_repository/lua-ui/config/${systemName}.js ${systemName}.env.config.js" sh "cp -rf /home/quant_group/config_repository/lua-ui/config/${systemName}.js ${systemName}.env.config.js"
} }
} }
def prepare_python(systemName, contextDir) { def prepare_python(systemName, contextDir) {
...@@ -49,13 +70,8 @@ def prepare_python(systemName, contextDir) { ...@@ -49,13 +70,8 @@ def prepare_python(systemName, contextDir) {
sh "cp -rf /home/quant_group/config_repository/python/${systemName}.ini ${contextDir}/config.ini" sh "cp -rf /home/quant_group/config_repository/python/${systemName}.ini ${contextDir}/config.ini"
} }
def checkout(branchName, systemName) { def checkout(git_path, branchName) {
git_path = project_attr(systemName)["gitPath"]
if(git_path =="git@gitabc.xyqb.com:data-riskcontrol/urge-dispatcher.git"){
git_path = "git@gitabc.xyqb.com:data-riskcontrol/urge_dispatcher.git"
}
_utils().beautyEcho("git_path:" + git_path, "info")
git branch: branchName, credentialsId: 'e1ccb1ac-1282-4fb4-b766-530ca1a2a2db', url: git_path git branch: branchName, credentialsId: 'e1ccb1ac-1282-4fb4-b766-530ca1a2a2db', url: git_path
} }
...@@ -156,29 +172,18 @@ def build_java(namespace, systemName, contextDir) { ...@@ -156,29 +172,18 @@ def build_java(namespace, systemName, contextDir) {
sh '/usr/share/maven/bin/mvn clean package -P test -D maven.test.skip=true' sh '/usr/share/maven/bin/mvn clean package -P test -D maven.test.skip=true'
} }
def copy_files_java(systemName, contextDir) { def copy_files(buildType,target,contextDir){
switch (systemName) { switch(buildType){
case "baitiao-zhitou": case "java"
jar_path = "xyqb-btzt-internal/target/*.jar" copy_files_java(target,contextDir)
break break
case "baitiao": default
jar_path = "baitiao-api/target/*.jar" echo "%{buildType} not copy...."
break }
case "xyqb-display": }
jar_path = "display-api/target/*.jar"
break def copy_files_java(target,contextDir) {
case "zero-gateway-zuul": sh "cp ${target}/*.jar ${contextDir}/app.jar"
jar_path = "app-starter/target/*.jar"
break
case "baitiao-op-backend":
jar_path = "xyqb-backend/target/*.jar"
break
default:
jar_path = "target/*.jar"
break
}
sh "cp ${jar_path} ${contextDir}/"
} }
def build_nodejs(namespace, systemName, contextDir) { def build_nodejs(namespace, systemName, contextDir) {
...@@ -311,3 +316,36 @@ def update_microservice(namespace, name, image, tier) { ...@@ -311,3 +316,36 @@ def update_microservice(namespace, name, image, tier) {
def getDocketPackageImage(buildType){
def packageImageInfo=[:]
switch (buildType) {
case "java":
def args = "-v /root/.m2:/root/.m2 "
args +="-v /home/quant_group/qg-dockerfiles:/home/quant_group/qg-dockerfiles "
args +="-v /home/quant_group/config_repository:/home/quant_group/config_repository "
args +="-v /home/quant_group/pacakge/:/home/quant_group/pacakge/ "
packageImageInfo["image"] = "192.168.4.36/baseimg/jenkins-slave:2018040302"
packageImageInfo["args"] = args
break
case "nodejs":
packageImageInfo["image"] = ""
packageImageInfo["args"] = ""
break
case "python":
packageImageInfo["image"] = ""
packageImageInfo["args"] = ""
break
case "lua-ui":
packageImageInfo["image"] = ""
packageImageInfo["args"] = ""
break
default:
echo "未知的buildType: ${config.buildType}"
break
}
return packageImageInfo
}
...@@ -5,7 +5,8 @@ def root = "/home/quantgroup/" ...@@ -5,7 +5,8 @@ def root = "/home/quantgroup/"
def contextDir(key) { def contextDir(key) {
uuid = UUID.randomUUID().toString() uuid = UUID.randomUUID().toString()
contextDir = "/home/quant_group/pacakge//${key}" contextDir = "/home/quant_group/pacakge/${key}"
sh "mkdir -p ${contextDir}"
return contextDir return contextDir
} }
......
import org.qg.docker.*
import java.time.*
def getTime(){ def _stage = new org.qg.docker_new.StageBucket()
LocalDateTime t = LocalDateTime.now(); def _utils = new org.qg.docker_new.Utils()
return t as String
}
def call(body) { def call(body) {
def config = [:] def config = [:]
def timeStemp = new Date().format("yyyyMMddHHmmss")
def env = body.env def env = body.env
def branchName = env.BRANCH_NAME def branchName = env.BRANCH_NAME
def gitRepo = env.GIT_REPO def gitRepo = env.GIT_REPO
...@@ -19,22 +13,18 @@ def call(body) { ...@@ -19,22 +13,18 @@ def call(body) {
def isDeploy = env.IS_DEPLOY def isDeploy = env.IS_DEPLOY
def buildNumber = env.BUILD_NUMBER def buildNumber = env.BUILD_NUMBER
def cluster = env.CLUSTER def cluster = env.CLUSTER
t = gitRepo.split("/") t = gitRepo.split("/")
def gitGroup = t[0] def gitGroup = t[0]
def originSystemName = t[1] def systemName = t[1].toLowerCase()
def systemName = originSystemName.toLowerCase()
def contextDir
echo "====JOB_NAME : ${env.JOB_NAME}" def imageTag
def harborGroup = "library" regex = "[`,./;\\[\\]&<>?:\"()|-]+"
/* def workspace = "/home/quant_ group/jenkins_home/workspace/${env.JOB_NAME}"*/
k8sSystemName = systemName.replaceAll("_","-")
def imageTag safeBranchName = branchName.replaceAll(regex,"_")
def timeStemp = new Date().format("yyyyMMddHHmmss")
def _stage = new org.qg.docker.StageBucket()
def _utils = new org.qg.docker.Utils()
def contextDir = "/home/quant_group/pacakge/${systemName}-${timeStemp}"
body.resolveStrategy = Closure.DELEGATE_FIRST body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config body.delegate = config
...@@ -43,63 +33,57 @@ def call(body) { ...@@ -43,63 +33,57 @@ def call(body) {
node { node {
try { try {
sh "mkdir -p ${contextDir}"
stage('prepare') {
contextDir = contextDir${systemName}-${timeStemp}
_stage.before_prepare()
}
pacegeDockerInfo = _stage.getDocketPackageImage(config.buildType)
withDockerServer([uri: "tcp://192.168.4.96:2375/"]) { withDockerServer([uri: "tcp://192.168.4.96:2375/"]) {
def volume = "-v /root/.m2:/root/.m2 " stage('checkout & build') {
volume +="-v /home/quant_group/qg-dockerfiles:/home/quant_group/qg-dockerfiles " docker.image(pacegeDockerInfo["images"]).inside(pacegeDockerInfo["args"]){
volume +="-v /home/quant_group/config_repository:/home/quant_group/config_repository " project_attr = _stage.project_attr(systemName)
volume +="-v /home/quant_group/pacakge/:/home/quant_group/pacakge/ " gitPath = project_attr["gitPath"]
docker.image("192.168.4.36/baseimg/jenkins-slave:2018040302").inside(volume){ /*checkout code*/
git_path = project_attr(systemName)["gitPath"] _stage.checkout(git_path, branchName)
if(git_path =="git@gitabc.xyqb.com:data-riskcontrol/urge-dispatcher.git"){
git_path = "git@gitabc.xyqb.com:data-riskcontrol/urge_dispatcher.git" /*prepare config*/
} _stage.prepare_config(systemName, contextDir)
git branch: branchName, credentialsId: 'e1ccb1ac-1282-4fb4-b766-530ca1a2a2db', url: git_path /*build*/
buildCmd = project_attr["buildCmd"]
sh "${buildCmd}"
sh 'mvn clean package -P test -D maven.test.skip=true'
applicaton_properties = "/home/quant_group/config_repository/java/${systemName}.properties"
echo applicaton_properties
sh "if [ -f ${applicaton_properties} ]; then cp -rf ${applicaton_properties} ${contextDir}/application.properties; else echo \"## useing apollo ##\" > ${contextDir}/application.properties; fi"
sh "cp -rf /home/quant_group/qg-dockerfiles/templates_new/java/* ${contextDir}"
sh "cp target/*.jar ${contextDir}/app.jar"
/*copy files*/
_stage.copy_files(config.buildType,project_attr["jarFilePath"],contextDir)
}
} }
stage('make docker image') {
imageTag = "192.168.4.36/${harborGroup}/${k8sSystemName}:${safeBranchName}-${timeStemp}"
regex = "[`,./;\\[\\]&<>?:\"()|-]+" withDockerRegistry([credentialsId: 'harbor-qajenkins', url: "http://192.168.4.36"]) {
k8sSystemName = systemName.replaceAll("_","-")
safeBranchName = branchName.replaceAll(regex,"_")
defaultSystemName = "project"
timeStemp = new Date().format("yyyyMMddHHmmss")
imageTag = "192.168.4.36/${harborGroup}/${k8sSystemName}:${safeBranchName}-${timeStemp}"
withDockerRegistry([credentialsId: 'harbor-qajenkins', url: "http://192.168.4.36"]) {
def build_schema = "BUILD_TIME: ${timeStemp} ,BUILD_NUMBER: ${buildNumber},SYSTEM_NAME: ${systemName},BRANCH_NAME: ${branchName}, CLUSTER: ${cluster}"
def image = docker.build(imageTag, "--build-arg BUILD_SHCEMA=build_schema ${contextDir}") def build_schema = "BUILD_TIME: ${timeStemp} ,BUILD_NUMBER: ${buildNumber},SYSTEM_NAME: ${systemName},BRANCH_NAME: ${branchName}, CLUSTER: ${cluster}"
def image = docker.build(imageTag, "--build-arg BUILD_SHCEMA=build_schema ${contextDir}")
image.push() image.push()
if (branchName == "master" || branchName == "master--master") { if (branchName == "master" || branchName == "master--master") {
image.push('latest') image.push('latest')
} }
} }
}
}
}
}catch (err) { }catch (err) {
...@@ -110,20 +94,10 @@ def call(body) { ...@@ -110,20 +94,10 @@ def call(body) {
throw err throw err
} }
}finlly(){ }finlly(){
sh "rm -rf ${contextDir}" sh "rm -rf ${contextDir}"
_stage.clean_images(imageTag) _stage.clean_images(imageTag)
} }
} }
} }
@NonCPS
def jsonParse(def json) {
new groovy.json.JsonSlurperClassic().parseText(json)
}
def project_attr(systemName) {
response = httpRequest "http://192.168.4.3:10088/config_server/get_project_attr/${systemName}"
def res_json = jsonParse(response.content)
return res_json
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment