1 Star 0 Fork 0

求不得/testManagerServerSpring

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Jenkinsfile_yxx 8.13 KB
一键复制 编辑 原始数据 按行查看 历史
求不得 提交于 2021-06-26 10:13 +08:00 . cc
pipeline {
options {
buildDiscarder(logRotator(numToKeepStr: '7', artifactNumToKeepStr: '10', daysToKeepStr: '5'))
}
agent { label 'node_one' }
parameters {
booleanParam(name: 'SPEED_MODE', defaultValue: false, description: '极速模式下,将跳过构建、测试和静态扫描直接发布。')
booleanParam(name: 'IS_RECREATE_SERVICE', defaultValue: false, description: '是否重建docker service。')
}
environment {
APPLICATION_NAME = 'fly-boot'
APPLICATION_DOCKER_TAG_NAME = 'fly-boot'
APPLICATION_DISPLAY_NAME = 'fly-boot'
}
stages {
stage('环境准备') {
steps {
dir('devops') {
git url: 'git@10.100.5.99:yinghuo/yxx/devops.git', poll: false
}
script {
if (!env.BRANCH_NAME.startsWith('feature-') && env.BRANCH_NAME != 'master' && !env.BRANCH_NAME.startsWith('release-')) {
error("非法的分支名:$env.BRANCH_NAME. 自定义的分支应以 feature- 开头。")
}
env.PROJECT_VERSION = sh(
script: "cat build.gradle | grep '^version = ' |awk -F = '{gsub(\"\\047\", \"\", \$2); print \$2 }'",
returnStdout: true
).trim()
assert env.PROJECT_VERSION != ''
def CURRENT_TIME = new Date().format("yyMMdd.HHmmss", TimeZone.getTimeZone('UTC'))
env.VERSION = "${env.PROJECT_VERSION}.${CURRENT_TIME}"
if (env.BRANCH_NAME.startsWith('feature') || env.BRANCH_NAME == "master") {
env.ENV_NAME = "development"
env.SPRING_PROFILES_ACTIVE = "development,swagger"
env.DOCKER_REGISTER = 'hub.yingyingwork.com/yingxin'
env.NETWORK_NAME = "yx_dev_network"
env.CONSTRAINT_NODE = "yingxinDEV"
}
if (env.BRANCH_NAME == 'release-testing') {
env.ENV_NAME = "testing"
env.SPRING_PROFILES_ACTIVE = "testing,swagger"
env.DOCKER_REGISTER = 'hub.yingyingwork.com/yingxin'
env.NETWORK_NAME = "yx_test_network"
env.CONSTRAINT_NODE = "yingxinQB"
}
if (env.BRANCH_NAME == 'release-qd') {
env.ENV_NAME = "testing-qd"
env.SPRING_PROFILES_ACTIVE = "qd,swagger"
env.DOCKER_REGISTER = 'hub.yingyingwork.com/yingxin'
env.NETWORK_NAME = "yx_qd_network"
env.CONSTRAINT_NODE = "yingxinQD"
}
if (env.BRANCH_NAME == 'release-qe') {
env.ENV_NAME = "testing-qe"
env.SPRING_PROFILES_ACTIVE = "qe,swagger"
env.DOCKER_REGISTER = 'hub.yingyingwork.com/yingxin'
env.NETWORK_NAME = "yx_qe_network"
env.CONSTRAINT_NODE = "yingxinQE"
}
if (env.BRANCH_NAME == 'release-production') {
env.ENV_NAME = "production"
env.DOCKER_REGISTER = 'hub.yingyingwork.com/yingxin'
}
env.SERVICE_NAME = "${APPLICATION_NAME}-${ENV_NAME}"
env.DOCKER_IMAGE_NAME = "${APPLICATION_NAME}_${ENV_NAME}_${env.VERSION}"
sh "echo Project Version: ${env.PROJECT_VERSION}"
sh "echo Build Version : ${env.VERSION}"
sh "echo Env name is : ${env.ENV_NAME}"
sh "echo Port is : ${env.PORT}"
sh "echo Image name is : ${env.DOCKER_IMAGE_NAME}"
sh "echo active profile is : ${env.SPRING_PROFILES_ACTIVE}"
}
}
}
stage('检查 & 构建 & 测试') {
when {
expression {
params.SPEED_MODE == false
}
}
steps {
sh './gradlew clean build --daemon -x war'
stash allowEmpty: true, includes: 'build/**/*', name: 'buildResult'
}
}
stage('SONAR扫描') {
when {
expression {
params.SPEED_MODE == false
}
}
steps {
unstash 'buildResult'
sh "./gradlew sonarqube -x test -PprojectKey=${APPLICATION_NAME}_${ENV_NAME} -Dsonar.projectName=${APPLICATION_DISPLAY_NAME}-${ENV_NAME}"
echo "Waiting 30 seconds for sonar to complete analyzing."
sleep 30
sh "./gradlew quantityGate -PprojectKey=${APPLICATION_NAME}_${ENV_NAME}"
}
}
stage("构建镜像") {
steps {
sh './gradlew clean bootWar buildDocker '
}
}
stage("发布镜像") {
steps {
script {
env.DOCKER_IMAGE_NAME = "${env.DOCKER_REGISTER}/${APPLICATION_NAME}-${ENV_NAME}:${env.VERSION}"
sh "docker tag ${env.APPLICATION_NAME} ${env.DOCKER_IMAGE_NAME}"
sh "docker push ${env.DOCKER_IMAGE_NAME}"
}
}
}
stage("发布应用到DEV|QA") {
when {
expression {
env.BRANCH_NAME.startsWith('feature') || env.BRANCH_NAME == 'release-testing' || env.BRANCH_NAME.startsWith('release-q')
}
}
steps {
ansiblePlaybook(
inventory: "devops/provision/inventories/testing/yingxin-hosts",
playbook: 'devops/provision/deploy.yml',
limit: "yingxin-swarm-testing",
tags: 'startServer',
extraVars: [
application_name : "${WORKSPACE}",
application_name : "${APPLICATION_NAME}",
service_name : "${SERVICE_NAME}",
is_recreate_service : "${params.IS_RECREATE_SERVICE}",
image_name : "${env.DOCKER_IMAGE_NAME}",
active_profiles : "${SPRING_PROFILES_ACTIVE}",
network_name : "${NETWORK_NAME}",
replicas : 1,
constraint_node : "${CONSTRAINT_NODE}",
application_exposed_port: "8097",
application_startup_port: "8097"
])
}
}
}
post {
success {
sendEmailNotification(true)
}
failure {
sendEmailNotification(false)
}
}
}
def sendEmailNotification(isSuccess) {
def subject
if (env.ENV_NAME == "development" || env.ENV_NAME == "testing" || env.ENV_NAME == "master") {
subject = isSuccess ? "【发布】${env.APPLICATION_DISPLAY_NAME}|已经成功发布到 ${env.ENV_NAME} 环境,请知悉。版本号:${env.VERSION}" : "【重要】${env.APPLICATION_DISPLAY_NAME}|发布到 ${env.ENV_NAME} 失败,请及时处理。版本号:${env.VERSION}"
}
if (env.BRANCH_NAME == "release-production") {
subject = isSuccess ? "【镜像构建完成】${env.APPLICATION_DISPLAY_NAME}的Docker镜像已经构建完成并发布,请知悉。镜像名:${env.DOCKER_IMAGE_NAME}" : "【重要-镜像构建失败】${env.APPLICATION_DISPLAY_NAME}的Docker镜像构建时出错,请及时处理。镜像名:${env.DOCKER_IMAGE_NAME}"
}
mail body: "访问 ${env.BUILD_URL} 查看Pipeline详情。", from: 'cd@yingyinglicai.com', replyTo: '', subject: " ${subject}", mimeType: 'text/html', to:
'xubitao@yingnagroup.com', cc: 'we-eat-bugs@yingyinglicai.com'
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/testing2016/testManagerServerSpring.git
git@gitee.com:testing2016/testManagerServerSpring.git
testing2016
testManagerServerSpring
testManagerServerSpring
master

搜索帮助