jenkins管道:当条件和mercurial标签
仅当当前版本已标记有版本号时,我才尝试运行jenkins构建(部署)的最后一步。 我试着去看电影,但这只适合GIT 以下是我的设置:jenkins管道:当条件和mercurial标签,jenkins,tags,mercurial,Jenkins,Tags,Mercurial,仅当当前版本已标记有版本号时,我才尝试运行jenkins构建(部署)的最后一步。 我试着去看电影,但这只适合GIT 以下是我的设置: Jenkins轮询我的存储库并从中提取Jenkins文件 执行以下文件 // --- Get sources from mercurial --- stage ('Checkout') { steps { bat "Hg purge --config extensions.purge= --all --print" chec
// --- Get sources from mercurial ---
stage ('Checkout') {
steps {
bat "Hg purge --config extensions.purge= --all --print"
checkout([$class: 'MercurialSCM', credentialsId: '', revision: 'default', source: 'MY_REPO'])
}
}
// --- BUILD ---
stage ('Build') {
// my build
}
// --- DEPLOY MASTER ---
stage ('Deploy') {
when { tag "release*" }
steps {
bat "\"${env.WORKSPACE}\\jenkins\\deploy.bat\" \"M:\\dev-FU4\""
}
}
- Mercurial标记实际上是一个提交,在.hgtags文件中添加了一行
- 当我拉取将被标记的修订时,它没有部署,因为还没有标记
- 当我使用“标记提交”拉取修订时,它没有被部署,并且标记引用了旧的修订
你知道怎么做吗?对不起,打扰你们了,我已经弄明白了 我补充说:
- 确定提交是否为mercurial标记的步骤
- 如果标签以“发布”开头,则更新标签修订的步骤
- 变量${hgTagVersion}可用于任何需要它的脚本
// Pipeline stages
stages {
// --- Get sources from mercurial ---
stage ('Checkout') {
steps {
bat "Hg purge --config extensions.purge= --all --print"
checkout([$class: 'MercurialSCM', credentialsId: '', revision: 'default', source: 'MY_REPO'])
}
}
stage ('Deployment determination') {
steps {
// Determine if Deploy is needed
script {
HG_LATEST_DESC = bat (
script: '@echo off & hg log --template {desc} --limit 1',
returnStdout: true
).trim()
// dummy test of a tag commit
// HG_LATEST_DESC = "Added tag release-test for changeset 1dcf7a76d27c"
deployIsNeeded = false
hgTag = ""
hgChgSet = ""
hgTagVersion = ""
hgsplit = HG_LATEST_DESC.split("Added tag ")
if (hgsplit.length == 2)
{
hgsplit = hgsplit[1].split(" for changeset ")
if(hgsplit.length == 2)
{
hgTag = hgsplit[0]
hgChgSet = hgsplit[1]
if(hgTag.contains("release-"))
{
deployIsNeeded = true;
hgTagVersion = hgTag.split("release-")[1]
}
}
}
if (deployIsNeeded)
{
println "Deploy is needed. Hg will checkout to tag and master will be deployed."
println "HG tag: ${hgTag}"
println "HG changeset: ${hgChgSet}"
println "Deploy version: ${hgTagVersion}"
}
else
{
println "Deploy is not needed. Build will remain local."
}
}
}
}
// --- Checkout to deploy tag ---
stage ('Deploy tag checkout')
{
when { expression { return deployIsNeeded; } }
steps {
bat "hg update --clean --rev ${hgChgSet}"
}
}
// --- BUILD ---
stage ('Build') {
// my build steps
}
// --- DEPLOY MASTER ---
stage ('Deploy') {
when { expression { return deployIsNeeded; } }
steps {
// my deployment script
}
}
}
以下是不需要部署时从blueocean查看的管道:
需要部署时: