像这样的回购:
repo
- service1
- service2
- service3
现在我已经将jenkinsfile放在主目录中以进行构建和执行某些操作,但是如果我更改子文件夹service1中的相同内容,我只想重新构建service 1,该怎么办? 现在管道是这样的,但是我想使其更好,因为现在我重新构建了所有内容:
pipeline{
agent any
stages {
stage('Build') {
steps {
script{
sh '''
cd security_manager;
STAGING=true;
sbt " -DSTAGING=$STAGING; reload; clean; compile; docker:publish";
'''
sh '''
cd storage_manager;
STAGING=true;
sbt " -DSTAGING=$STAGING; reload; clean; compile; docker:publish";
'''
sh '''
cd ;
STAGING=true;
sbt " -DSTAGING=$STAGING; reload; clean; compile; docker:publish";
'''
}
}
}
我想在sh脚本之间放置相同的if / else,但不知道我必须做什么,因为我想在$ GIT_COMMIT和最后一次提交之间使用git diff检查文件,但是在if语句条件下,我无法放置shell脚本
答案 0 :(得分:1)
您只需要查找上一次提交与当前提交之间的区别:
def diff = sh(returnStdout: true, script: 'git diff @~..@')
然后由您自己决定如何处理。最简单的方法是从diff的每一行中仅提取更改的目录