//utils 源码在jenkins-pipeline-library里
|
@Library('utils')_
|
pipeline {
|
agent { label '103' }
|
|
environment {
|
project_name = 'git_study'
|
url = 'http://47.92.145.232:8998/r/git_study.git'
|
GIT_CREDENTIALS_ID = '6abafc9e-1f0e-4d27-8389-7c81d69bcdb2'
|
}
|
options {
|
//给日志加上时间错, 需安装 Timestamper 插件
|
//mvn test surefire-report:report
|
timestamps()
|
ansiColor('xterm')
|
//丢弃旧的构建前两个为发布包保留天数(比此早的发布包将被删除,但构建的日志、操作历史、报告等将被保留)和构建个数
|
buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '7', numToKeepStr: '10')
|
|
}
|
stages {
|
stage('source') {
|
steps {
|
checkout([$class: 'GitSCM'
|
, branches: [[name: "${GIT_BRANCH}"]]
|
, doGenerateSubmoduleConfigurations: false
|
, extensions: []
|
, submoduleCfg: []
|
, userRemoteConfigs: [[credentialsId: "${GIT_CREDENTIALS_ID}", url: "${url}"]]
|
])
|
|
}
|
}
|
//stage('testMaven') {
|
//steps {
|
|
//sh 'mvn clean test -U'
|
//junit allowEmptyResults: true, keepLongStdio: true, skipPublishingChecks: true, testResults: 'target/surefire-reports/*.xml'
|
|
//}
|
//}
|
stage('testFunction') {
|
steps {
|
sh '''
|
commit_name="\$(git show -s --pretty=%an)"
|
commit_message="\$(git show -s --pretty=%s)"
|
echo "\$commit_name"
|
echo "\$commit_message"
|
printenv
|
'''
|
}
|
}
|
|
//将项目打成war并归档,将配置文件目录存入stash
|
stage('package') {
|
steps {
|
sh '''#!/bin/sh
|
####maven编译部署#####
|
##mvn clean package -U
|
##处理结果包
|
versionFile=\$(find . -iname "${project_name}.java")
|
str="-"
|
old_version_all=\$(cat \$versionFile | sed -nr \'s/^[^0-9]*"([^"]+)".*;/\\1/p\')
|
echo "old_version_all \$old_version_all"
|
echo "project_name \$project_name"
|
dir_name=\${project_name}"-"\$old_version_all
|
echo "dir_name \$dir_name"
|
##cd target
|
##mkdir \$dir_name
|
##cp *.war \$dir_name
|
##zip -r "\$dir_name.zip" \$dir_name
|
'''
|
}
|
}
|
|
stage('master version add') {
|
when {
|
not {
|
allOf {
|
changeset "**/${project_name}.java"
|
}
|
}
|
branch 'master'
|
}
|
steps {
|
//http(s)的git链接使用帐号密码,ssh使用 keyFileVariable: 'SSH_KEY'
|
echo "todo version add"
|
versionAddCom("${project_name}","${GIT_CREDENTIALS_ID}","${url}","${GIT_BRANCH}")
|
}
|
}
|
|
stage('version add develop') {
|
when {
|
//版本号自动添加逻辑需同时符合下列触发条件:
|
//1. 不能在master分支触发
|
//2. 有任意浏览器页面资源文件修改
|
//3. 不包含[项目名.java]文件的修改
|
allOf {
|
anyOf {
|
changeset "**/*.js"
|
changeset "**/*.css"
|
changeset "**/*.html"
|
changeset "**/*.xhtml"
|
changeset "**/*.jpg"
|
changeset "**/*.png"
|
}
|
not {
|
changeset "**/${project_name}.java"
|
}
|
branch 'develop'
|
}
|
}
|
steps {
|
versionAddCom("${project_name}","${GIT_CREDENTIALS_ID}","${url}","${GIT_BRANCH}")
|
}
|
}
|
|
stage('deploy') {
|
when { branch 'master' }
|
steps {
|
sh 'echo test'
|
}
|
}
|
}
|
}
|