我希望根据提交自定义标签(例如“ RNX”)来触发构建 但是标签将确定要构建代码的哪一部分。 该标记对应于具有多个配置文件夹的文件夹中的特定配置,但是我只想一次构建一个。
每个配置文件夹都包含一个具有唯一标签名称的文件。 每个文件夹也都有自己的gradle文件。
我的想法是遍历配置文件夹并比较tag.txt文件的内容(持有唯一的标签名称),并在找到匹配项时执行gradle。 能做到吗 如果可能的话,我至少需要一个类似的东西,谢谢:)
答案 0 :(得分:0)
您可以设置一个Webhook以便建立在标签上,然后可以将其放入Jenkinsfile中,并使用此参数“ tag”来运行所需的任何内容
sh "/${tag}/myconfig.sh"
答案 1 :(得分:0)
我是通过在接收后钩子上捕获标签并检查标签名称是否以'STG'开头来实现的。如果是这样,我将其视为登台标签,并触发CI作业(该作业将进行构建,测试,合并,推送等)
Gitlab接收后挂钩:
#!/bin/sh
jenkins_job="CIJOB"
group="DEV"
project="myproj"
logfile="hook.log"
while read oldrev newrev refname
do
echo "================================================" >> $logfile
date >> $logfile
echo "custom hook: running by pushing to $project.git " >> $logfile
echo "oldrev: $oldrev" >> $logfile
echo "newrev: $newrev" >> $logfile
echo "refname: $refname" >> $logfile
# check if branch/tag pushed
unset branch
unset tag
# POSIX style 'if contains'
if [ "${refname#*refs/heads}" != "$refname" ]; then
branch=$(echo $refname | cut -d'/' -f3)
echo "branch pushed: $branch" >> $logfile
else
tag=$(echo $refname | cut -d'/' -f3)
echo "tag pushed: $tag" >> $logfile
fi
isStagingTag=$(echo $tag | grep "^STG-")
if [ "X" != "X$isStagingTag" ] ; then
echo "${tag} tag pushed, running CI" >> $logfile
curl -X GET "http://user:pass@jenkins:8080/job/$jenkins_job/buildWithParameters?token=$jenkins_job&REPO=$project&REF=$refname&TAG=$tag"
fi
done
Jenkins Job(管道):
#!groovy
node('slave7') {
stage {
// strip the 'STG-' prefix from tag name
TAG = TAG.substring(TAG.indexOf('-')+1)
// here u can implement your logic using groovy
println TAG
// or POSIX shell
sh """
echo ${TAG}
"""
}
}
答案 2 :(得分:0)
如果您使用的是GitLab和GitLab Plugin,则可以使用gitlabActionType
和gitlabTargetBranch
环境变量的值。
当您按下标签时,gitlabActionType
的值将是TAG_PUSH
,而gitlabTargetBranch
的值将是被按下的标签。
因此,要构建特定标签,您可以执行以下操作:
if (env.gitlabActionType == 'TAG_PUSH') {
sh "${env.gitlabTargetBranch.split('/').last()}/build.sh"
}
或者:
if (env.gitlabActionType == 'TAG_PUSH') {
dir("${env.gitlabTargetBranch.split('/').last()}") {
sh "./build.sh"
}
}
此外,您可以过滤哪些标签将启动构建:More info in the official doc