gitab+pipeline+jenkins+kuboard+ack进行CI CD配置
pipeline文本内容。
·
pipeline文本内容
单个gitlab仓库下通过一个pom.xml编译多个项目部署
pipeline {
agent any
parameters {
gitParameter(name: 'BRANCH_TAG', type: 'PT_BRANCH_TAG', branchFilter: 'origin/(.*)', defaultValue: 'main', selectedValue: 'DEFAULT', sortMode: 'DESCENDING_SMART', description: '请选择需要部署的代码:')
choice(name: 'mode', choices: ['deploy','rollback'], description: '请选择发布或者回滚?')
extendedChoice(name: 'ProjectName',
type: 'PT_CHECKBOX',
description: '请勾选所要发布的项目模块',
quoteValue: false,
saveJSONParameterToFile: false,
value: 'neex-spot-adminserver,neex-spot-eventlogger,neex-spot-eventprocessor,neex-spot-bardatabuilder,neex-spot-resultlogger,neex-spot-resultprocessor,neex-spot-marketdataserver,neex-spot-dispatch,neex-spot-dispatch-orderbook,neex-spot-userdataserver',
visibleItemCount: 10,
multiSelectDelimiter: ',',
defaultValue: 'neex-spot-adminserver,neex-spot-eventlogger,neex-spot-eventprocessor,neex-spot-bardatabuilder,neex-spot-resultlogger,neex-spot-resultprocessor,neex-spot-marketdataserver,neex-spot-dispatch,neex-spot-dispatch-orderbook,neex-spot-userdataserver'
)
string(name: 'ENVMENT', defaultValue: 'prod', description: '环境参数')
}
tools{
jdk 'java8'
maven 'Maven-prod'
}
environment {
project_location = "neex/${iname}"
project_list = "$params.ProjectName"
//ENVMENT = "${BRANCH_TAG}"
}
stages{
stage('clean'){
steps {
cleanWs(
cleanWhenAborted: true,
cleanWhenFailure: true,
cleanWhenNotBuilt: true,
cleanWhenSuccess: true,
cleanWhenUnstable: true,
cleanupMatrixParent: true,
disableDeferredWipeout: true,
deleteDirs: true
)
}
}
stage('从 gitlab 中拉取代码') {
steps {
deleteDir()
checkout([$class: 'GitSCM',
branches: [[name: "${BRANCH_TAG}"]],
gitTool: 'Default',
userRemoteConfigs: [[url: 'https://gitlab.yunson.com/bk/spot/spot.git', credentialsId: 'gitlab-deploy',]]
])
}
}
stage('mvn install') {
steps {
script{
sh '''
cp -rf /var/jenkins_home/tools/adminserver-prod.json neex/neex-spot-adminserver/src/main/resources/global.json
cp -rf /var/jenkins_home/tools/bitzmartserver-prod.json bitzmart/bitzmart-admin/bitzmart-admin-server/src/main/resources/global.json
sed -i 's/X.X.X.X:8081/172.16.0.60:18081/g' pom.xml
mvn clean install -DskipTests
'''
}
}
}
stage('Build docker image'){
steps{
script{
if ( env.ProjectName.isEmpty() ) {
echo "ProjectName not specified."
autoCancelled = true
error('Aborting the build.')
}
else {
for (iname in ProjectName.tokenize(',')) {
sh "docker build --build-arg JOB_NAME=${iname} -t harbor.yunson.com/bk/${iname}:${ENVMENT} ."
}
}
}
}
}
stage('Push image to hub'){
steps{
script{
withCredentials([usernamePassword(credentialsId: 'harbor-secret-prod', passwordVariable: 'password', usernameVariable: 'username')]) {
sh 'docker login -u ${username} -p ${password} harbor.yunson.com'
}
if ( env.ProjectName.isEmpty() ) {
echo "ProjectName not specified."
autoCancelled = true
error('Aborting the build.')
}
else {
for (iname in ProjectName.tokenize(',')) {
sh """
docker push harbor.yunson.com/bk/${iname}:${ENVMENT}
docker rmi harbor.yunson.com/bk/${iname}:${ENVMENT}
"""
}
}
}
}
}
stage('deploy Server'){
steps{
script{
if ( env.ProjectName.isEmpty() ) {
echo "ProjectName not specified."
autoCancelled = true
error('Aborting the build.')
}
else {
for (iname in ProjectName.tokenize(',')) {
sh """
curl -X PUT \
-H "content-type: application/json" \
-H "Cookie: KuboardUsername=admin; KuboardAccessKey=5xnrsjnkcjam.sefdasdfwefedsaeedsadwsadwdfghs" \
-d '{"kind":"deployments","namespace":"biking","name":"${iname}","images":{"harbor.yunson.com/bk/${iname}":"registry-intl.cn-harbor.yunson.com/bk/${iname}:${ENVMENT}"}}' \
"http://X.X.X.X:8987/kuboard-api/cluster/BikingProd/kind/CICDApi/admin/resource/updateImageTag"
curl -X PUT \
-H "Content-Type: application/yaml" \
-H "Cookie: KuboardUsername=admin; KuboardAccessKey=5xnrsjnkcjam.sefdasdfwefedsaeedsadwsadwdfghs" \
-d '{"kind":"deployments","namespace":"biking","name":"${iname}"}' \
"http://X.X.X.X:8987/kuboard-api/cluster/BikingProd/kind/CICDApi/admin/resource/restartWorkload"
"""
}
}
}
}
}
}
}
. 参数采用的是多选多的自选模式
代码段
extendedChoice(name: 'ProjectName',
type: 'PT_CHECKBOX',
description: '请勾选所要发布的项目模块',
quoteValue: false,
saveJSONParameterToFile: false,
value: 'neex-spot-adminserver,neex-spot-eventlogger,neex-spot-eventprocessor,neex-spot-bardatabuilder,neex-spot-resultlogger,neex-spot-resultprocessor,neex-spot-marketdataserver,neex-spot-dispatch,neex-spot-dispatch-orderbook,neex-spot-userdataserver',
visibleItemCount: 10,
multiSelectDelimiter: ',',
defaultValue: 'neex-spot-adminserver,neex-spot-eventlogger,neex-spot-eventprocessor,neex-spot-bardatabuilder,neex-spot-resultlogger,neex-spot-resultprocessor,neex-spot-marketdataserver,neex-spot-dispatch,neex-spot-dispatch-orderbook,neex-spot-userdataserver'
)
. 通过调用kuboard实现ci cd自动部署
代码段
stage('deploy Server'){
steps{
script{
if ( env.ProjectName.isEmpty() ) {
echo "ProjectName not specified."
autoCancelled = true
error('Aborting the build.')
}
else {
for (iname in ProjectName.tokenize(',')) {
sh """
curl -X PUT \
-H "content-type: application/json" \
-H "Cookie: KuboardUsername=admin; KuboardAccessKey=5xnrsjnkcjam.sefdasdfwefedsaeedsadwsadwdfghs" \
-d '{"kind":"deployments","namespace":"biking","name":"${iname}","images":{"harbor.yunson.com/bk/${iname}":"registry-intl.cn-harbor.yunson.com/bk/${iname}:${ENVMENT}"}}' \
"http://X.X.X.X:8987/kuboard-api/cluster/BikingProd/kind/CICDApi/admin/resource/updateImageTag"
curl -X PUT \
-H "Content-Type: application/yaml" \
-H "Cookie: KuboardUsername=admin; KuboardAccessKey=5xnrsjnkcjam.sefdasdfwefedsaeedsadwsadwdfghs" \
-d '{"kind":"deployments","namespace":"biking","name":"${iname}"}' \
"http://X.X.X.X:8987/kuboard-api/cluster/BikingProd/kind/CICDApi/admin/resource/restartWorkload"
"""
}
}
}
}
在kuboard控制台可以看到我们的ci cd配置对应的key等
更多推荐
所有评论(0)