Jenkinsfile
4.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!groovy
pipeline {
agent { label 'master' }
parameters {
string(name:'callBack', defaultValue: 'noNeedCallBack', description: '回调服务地址')
choice(name:'clusterId',choices:'aws\nyoho-media\nyoho-ops\nyoho-web\nyoho-web-gray', description: '集群的信息')
string(name:'projectName', defaultValue: 'yoho-now', description: 'GITLAB应用名称')
string(name:'projectGitGroup', defaultValue: 'YOHONow', description: 'GITLAB所在的组')
string(name:'deployName', defaultValue: 'java-yoho-now', description: '应用名称')
string(name:'branch', defaultValue: 'master', description: 'git分支名称')
string(name:'userMail', defaultValue: 'jimi.ji@yoho.cn', description: '触发的人员名单')
choice(name:'nodeEnv',choices:'yoho-gray\nyoho-online\n', description: '选择环境')
string(name:'imageSource', defaultValue: 'yoho-ops', description: '镜像存储的仓库')
}
environment{
CRED_ID='2cb1761b-b258-4e3b-843f-8f0dab16d770'
QA_EMAIL='jimi.ji@yoho.cn'
DOCKER_BUILD_GIT='git@git.yoho.cn:test/docker-shell.git'
}
//保持构建的最大个数
options {
buildDiscarder(logRotator(numToKeepStr: '50'))
}
//pipeline的各个阶段场景
stages {
stage('download package script and check params') {
steps {
echo "starting triger callBack ${params.callBack}......"
echo "starting triger clusterId ${params.clusterId}......"
echo "starting triger projectName ${params.projectName}......"
echo "starting triger projectGitGroup ${params.projectGitGroup}......"
echo "starting triger deployName ${params.deployName}......"
echo "starting triger branch ${params.branch}......"
echo "starting triger nodeEnv ${params.nodeEnv}......"
echo "starting triger userMail ${params.userMail}......"
echo "starting triger imageSource ${params.imageSource}......"
git credentialsId:CRED_ID, url:DOCKER_BUILD_GIT
script {
sh "chmod +x ${env.WORKSPACE}/java-new/packageDockerImage.sh ${env.WORKSPACE}/java-new/expectPackage.exp"
if(params.ticketID==''){
error 'no ticketID'
}
if(params.projectName==''){
error 'no projectName'
}
if(params.projectGitGroup==''){
error 'no projectGitGroup'
}
if(params.deployName==''){
error 'no deployName'
}
if(params.nodeEnv==''){
error 'no nodeEnv'
}
if(params.branch==''){
error 'no branch'
}
if(params.imageSource==''){
error 'no imageSource'
}
}
}
}
stage('build base package to source deploy-target ') {
steps{
echo "starting to build images"
script {
sh "sh ${env.WORKSPACE}/java-new/packageDockerImage.sh -g ${params.projectGitGroup} -b ${params.branch} -a ${params.projectName} -s ${params.nodeEnv} -w ${env.WORKSPACE}"
}
echo "end to build images"
}
}
stage('buid && push images to ccs registry') {
steps{
echo "starting to push images"
script {
def date = new Date()
def formattedDate = date.format("yyyMMddHHMMSS")
def version="${formattedDate}-${BUILD_NUMBER}"
sh "docker build -t ccr.ccs.tencentyun.com/${params.imageSource}/${params.deployName}:${version} ${env.WORKSPACE}/${params.projectName}"
sh "docker push ccr.ccs.tencentyun.com/${params.imageSource}/${params.deployName}:${version}"
echo "ending build push ${params.deployName}......"
sh "docker tag ccr.ccs.tencentyun.com/${params.imageSource}/${params.deployName}:${version} ccr.ccs.tencentyun.com/${params.imageSource}/${params.deployName}:latest"
sh "docker push ccr.ccs.tencentyun.com/${params.imageSource}/${params.deployName}:latest"
echo "begin send build the deploy job"
if(params.callBack!='noNeedDeploy'){
build job: 'Docker-Image-Deplopy', parameters: [
string(name: 'callBack', value: "noNeedCallBack"),
string(name: 'clusterId', value: "${params.clusterId}"),
string(name: 'serviceName', value: "${params.deployName}"),
string(name: 'containerName', value: "${params.deployName}"),
string(name: 'imageInfo', value: "${params.imageSource}/${params.deployName}:${version}"), string(name: 'deployEnv', value: 'qcloud')]
}
}
echo "end to push images"
}
}
}
post {
always {
script {
echo "Pipeline is done,begin send mail"
mail to: QA_EMAIL,
subject: "PineLine '${JOB_NAME}' (${BUILD_NUMBER}),构建结果: ${currentBuild.currentResult}",
body: "构建的内容为:${params.projectName},提交人员:${params.userMail}"
if(params.callBack!='noNeedCallBack'){
sh "curl '${params.callBack}&status=${currentBuild.currentResult}&jobID=${JOB_NAME},${BUILD_NUMBER}'"
}
deleteDir() /* clean up our workspace */
}
}
}
}