Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
wanggk
/
jenkinsConfig
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
1ae935cf
authored
2023-08-02 11:45:15 +0800
by
KevinWang
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
gloable jenkins file
1 parent
2afaaf19
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
182 additions
and
0 deletions
GlobalJenkinsfile
GlobalJenkinsfile
0 → 100644
View file @
1ae935c
pipeline {
agent any
parameters {
choice(
description: '你需要选择哪个环境部署?',
name: 'deploy_env',
choices: ['release-test', 'release-integration', 'pre-release', 'production', 'springboot-qzc']
)
gitParameter branch:'',
branchFilter: '.*',
defaultValue: 'origin/master',
description: '请选择要发布的tag',
name: 'taghName',
quickFilterEnabled: false,
selectedValue: 'NONE',
sortMode: 'NONE',
tagFilter: '*',
type: 'PT_TAG',
useRepository: "${repo_url}"
}
//环境定义
environment {
//日志映射路径
LOG_PATH = "/mnt/log/"
//服务名称
SVN_FOLD = readMavenPom().getArtifactId()
SSH_PATH = "csbr5.4"
//镜像版本号
image_tag = readMavenPom().getVersion()
//docker私服ip
ip = "192.168.5.4:82"
PROJECT_NAME = "${JOB_NAME.substring(0,JOB_NAME.lastIndexOf('/'))}"
PROMETHEUS_PARAMS_STRING = "-javaagent:/jmx_prometheus_javaagent-0.17.0.jar=8088:/jmx/prometheus-jmx-config.yaml"
}
options {
// 设置保留的最大历史构建数为6
buildDiscarder(logRotator(numToKeepStr: '2'))
}
//全局定义工具
tools {
//工具名称必须在Jenkins 管理Jenkins → 全局工具配置中预配置。
maven 'maven3'
}
stages {
stage('release-test') {
when {
expression { return params.deploy_env == 'release-test' }
}
steps {
script {
env.SVN_TYPE = "test"
}
}
}
stage('release-integration') {
when {
expression { return params.deploy_env == 'release-integration' }
}
steps {
script {
env.SVN_TYPE = "pre-test"
}
}
}
stage('pre-release') {
when {
expression { return params.deploy_env == 'pre-release' }
}
steps {
script {
env.SVN_TYPE = "pre-release"
env.PROMETHEUS_PARAMS = "${PROMETHEUS_PARAMS_STRING}"
}
}
}
stage('production') {
when {
expression { return params.deploy_env == 'production' }
}
steps {
script {
env.SVN_TYPE = "temp"
env.PROMETHEUS_PARAMS = "${PROMETHEUS_PARAMS_STRING}"
}
}
}
stage('springboot-qzc') {
when {
expression { return params.deploy_env == 'springboot-qzc' }
}
steps {
script {
env.SVN_TYPE = "qzc"
}
}
}
stage('Choice tags'){
steps {
sh "echo ${params.useRepository}"
checkout([$class: 'GitSCM',
branches: [[name: "${params.TAG}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
gitTool: 'Default',
submoduleCfg: [],
userRemoteConfigs: [[url: "${params.useRepository}"]]
])
}
}
//构建
stage('Maven Build') {
steps {
//sh './gradlew build'
//执行shell命令
sh 'echo ${JAVA_HOMOE}'
sh "mvn -f ./pom.xml clean package -Dmaven.test.skip=true -X -P${params.deploy_env}"
//sh 'mvn -f ${SVN_FOLD}/pom.xml clean package'
}
}
stage('Docker Build') {
steps {
//分分支构建
script {
//develop分支环境
echo 'start to deploy ${SVN_FOLD} on ${params.deploy_env} ...'
sh '''
CID=$(docker ps -a | grep "${SVN_FOLD}" | awk '{print $1}')
IID=$(docker images | grep "none" | awk '{print $3}')
cp "$WORKSPACE"/target/"${SVN_FOLD}".jar "$WORKSPACE"
if [ -n "$IID" ]; then
echo "存在'${SVN_FOLD}'镜像,IID='$IID'"
cd "$WORKSPACE"
##构建镜像到远程仓库
docker login "${ip}" -u admin -p E6w611g864wQ2
docker build -t "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" . --build-arg CE="${SVN_TYPE}" --build-arg PROMETHEUS_PARAMS="${PROMETHEUS_PARAMS}"
docker push "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}"
else
echo "不存在'${SVN_FOLD}'镜像,开始构建镜像"
##构建镜像到远程仓库
docker login "${ip}" -u admin -p E6w611g864wQ2
docker build -t "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" . --build-arg CE="${SVN_TYPE}" --build-arg PROMETHEUS_PARAMS="${PROMETHEUS_PARAMS}"
docker push "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}"
fi
'''
echo 'Depoly ${SVN_FOLD} develop success ...'
}
}
}
//部署
stage('Deploy') {
steps {
echo 'Deploying'
//分分支部署
script {
//develop分支环境
echo 'start to deploy ${SVN_FOLD} on ${params.deploy_env} ...'
//调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本
sshPublisher(publishers: [sshPublisherDesc(configName: "csbr5.3", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: """
echo "日志路径 '$LOG_PATH''$SVN_FOLD'"
#使用k8s构建
kubectl delete -f /mnt/k8s/${params.deploy_env}/${PROJECT_NAME}.yaml
kubectl apply -f /mnt/k8s/${params.deploy_env}/${PROJECT_NAME}.yaml
""", execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/mnt/csbr/data', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'output/*.*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo 'Depoly ${SVN_FOLD} success ...'
}
//sh './build.sh'
}
}
}
//归档
post {
always {
echo 'Archive artifacts'
archiveArtifacts artifacts: "**/target/*.jar", excludes: "**/target"
}
}
}
\ No newline at end of file
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment