Multibranch Pipeline Jenkinsfile寻求建议/反馈

时间:2016-03-18 11:50:59

标签: dsl pipeline cloudbees jenkins-workflow

好的,下面你找到了我的作品..(大声笑不是真的)但是这仍然是我试图弄乱并自动化它。那些愿意的人,任何建议都会受到赞赏。

该项目全部存在于一个git仓库中。非常像https://github.com/jmvanryn/multibranchPipeline

我的一些问题是..

  1. 我可以做些更好的事吗?我如何使用全局变量?
  2. 你可以看到我两次定义一些东西。为什么GIT会拉两次?
  3. 有没有办法让cobertura报告插件工作?
  4. env.BRANCH_NAME给我“feature / FeatureName”有一个 DSL / Groovy方法将其修剪为FeatureName?

    node {
     wrap([$class: 'BuildUser']) {
        def user = env.BUILD_USER_ID
    }
    
    env.JAVA_HOME = tool 'JDK1.7.0.21'
    def mvnHome = tool 'M3'
    def nodeJS = tool 'NodeJSv5.6.0'
    env.MAVEN_OPTS = "-Xmx1024m -XX:MaxPermSize=512m"
    env.PATH = "${mvnHome}/bin:${nodeJS}/bin:${env.JAVA_HOME}/bin:${env.PATH}"
    
    //checkout scm
    sh 'git rev-parse --verify HEAD > hash.txt'
    env.GIT_COMMIT = readFile('hash.txt')
    env.GIT_COMMIT = env.GIT_COMMIT.trim()
    
    setVersion();
    
    stage("Build Core")
    hipchatSend color: 'GREEN', notify: true, room: '1654572'
    BuildIt ("sharedLib1")
    BuildIt ("sharedLib2")
    
    stage("Build Modules")
    parallel "first-ui": {
        BuildIt ("first-ui")
    }, "second-ui": {
        BuildIt ("second-ui")
    }, "first-ws": {
        BuildIt ("first-ws")
    }, "second-ws": {
        BuildIt ("second-ws")
    }
    
    stage("Archive files")
    echo("================================== Archive Stage ==================================")
    step([$class: 'ArtifactArchiver', artifacts: '**/target/*.war', fingerprint: true])
    //step([$class: 'ArtifactArchiver', artifacts: 'CONFIG/*.*', fingerprint: true])
    step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
    
    step([$class: 'hipchat', room: '1654572', startNotification: false, notifySuccess: true, notifyAborted: false, notifyNotBuil: false, notifyUnstable: false, notifyFailure: true, notifyBackToNormal: false])
    
    stage("Notification")
    step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'jvanryn@liaison-intl.com', sendToIndividuals: true])
    }
    
    def BuildIt(module) {
    
    sh "echo '================================== Build Stage : ${module} ==================================';\
    cd ${module};\
    mvn --batch-mode -V -U -e clean deploy -U -DskipITs sonar:sonar -Dsonar.branch=${env.BRANCH_NAME} -Dsurefire.useFile=false"
    }
    
    def setVersion () {
    
    def JobCode = env.BRANCH_NAME
    def JobName = env.JOB_NAME
    def BuildURL = env.BUILD_URLD
    def BuildNum = env.BUILD_NUMBER
    def RevNum = env.GIT_COMMIT
    def WrkSpce = pwd()
    
        echo "Running Build for: "+JobCode
        // update version to a unique version
        def script=WrkSpce+"/Tools/PomVersionUpdater.sh "+JobCode+"-"+RevNum+"-"+BuildNum
    
        sh script
    }
    

1 个答案:

答案 0 :(得分:0)

首先,您可以使用jvm.config和maven.config创建一个.mvn文件夹来存储所有这些xmx参数和其他参数,因此每个人都使用相同的构建设置。

如果构建失败,您还需要一个try / catch块来发送一些通知。

除了它看起来没问题,可能会更好但是有效