自动生成版本号
文章内容
在持续集成中打包制品时,需要根据场景生成不同的版本号:
场景 | 版本号规则 | 版本号示例 | 常用环境 |
---|---|---|---|
合并请求 | mr-{合并请求 ID}-{hash} | mr-123-3a11e12 | 开发/测试 |
合并后(或推送分支) | {分支名}-{hash} | main-3a11e12 | 测试 |
推送 tag | {tag} | 1.2.0 | 预发布/生产 |
你可以通过下述 if 判断代码实现自动生成版本号。
示例一
stage('打包') {
steps {
script {
if (env.TAG_NAME ==~ /.*/ ) {
ARTIFACT_VERSION = "${env.TAG_NAME}"
} else if (env.MR_SOURCE_BRANCH ==~ /.*/ ) {
ARTIFACT_VERSION = "mr-${env.MR_RESOURCE_ID}-${env.GIT_COMMIT_SHORT}"
} else {
ARTIFACT_VERSION = "${env.BRANCH_NAME.replace('/', '-')}-${env.GIT_COMMIT_SHORT}"
}
}
echo "${ARTIFACT_VERSION}"
// codingArtifactsGeneric(files: 'web.tar.gz', repoName: 'my-generic', version: ARTIFACT_VERSION)
}
}
示例二
pipeline {
agent any
stages {
stage('阶段 1-1') {
steps {
script {
if(!"".equals(env.BRANCH_NAME)){
env.MAGIC_VERSION = "${env.BRANCH_NAME.replace("/","-")}-${GIT_COMMIT_SHORT}"
}else if (!"".equals(env.TAG_NAME)){
env.MAGIC_VERSION = "${env.TAG_NAME.replace("/","-")}-${GIT_COMMIT_SHORT}"
}else{
env.MAGIC_VERSION = env.GIT_COMMIT_SHORT
}
}
echo env.MAGIC_VERSION
}
}
}
}
MR 触发构建拿不到分支名环境变量
在 MR 触发构建时,环境变量 env.BRANCH_NAME
,env.GIT_LOCAL_BRANCH
为空,因为 MR 即不属于目标分支也属于源分支。
在最佳实践中,我们也不推荐源分支、目标分支或 MergeSha 生成的制品库,MR 应只做检查操作。
pipeline {
agent any
stages {
stage('阶段-1') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: env.GIT_BUILD_REF]],
userRemoteConfigs: [[
url: env.GIT_REPO_URL,
credentialsId: env.CREDENTIALS_ID
]]])
script{
env.TARGET_TRIGGER_BRANCH = env.GIT_LOCAL_BRANCH
if (CCI_TRIGGER_METHOD == "MR"){
env.TARGET_TRIGGER_BRANCH = env.MR_SOURCE_BRANCH
}
}
sh "docker tag -t xxx-docker.pkg.coding.net/a/b/nginx:${env.TARGET_TRIGGER_BRANCH.replace("/","-")}-${GIT_COMMIT_SHORT}"
}
}
}
}
问题反馈 >
2024-12-17最近更新
感谢反馈有用
感谢反馈没用
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。