2016-07-22 163 views
1

我正在寫一個Jenkins(版本2.6)DSL,它允許我檢出並構建一個Maven項目,運行一個shell腳本並將其部署到Artifactory。在Jenkins DSL中運行shell腳本mavenJob

mavenJob("test-build") { 
    multiscm { 
    ... 
    } 
    steps { 
    shell ("bash build-scripts/script.sh") 
    } 
    goals("clean install") 
    configure{ project -> 
    project/publishers << 'org.jfrog.hudson.ArtifactoryRedeployPublisher' { 
    details { 
     artifactoryUrl('<url>') 
     artifactoryName('<name>') 
     repositoryKey('libs-release-local') 
     snapshotsRepositoryKey('libs-snapshot-local') 
    } 
    deployBuildInfo(true) 
    deployArtifacts(true) 
    evenIfUnstable(false) 
    } 
    publishers { 
    archiveJunit('target/*/.xml') 
    publishBuilder { 
     discardOldBuilds(7,10) 
    } 
    } 
} 

的工作只有當我刪除steps{}塊作爲steps不是在mavenJob允許的工作。我試過使用freeStyleJob,但ArtifactoryRedeployPublisher不起作用。

我需要做些什麼來運行我的shell腳本?

回答

1

如果你想shell腳本能夠提前Maven的目標運行,你可以使用這個

preBuildSteps { 
// Runs a shell script. 
shell(String command) 
} 

或者,如果你想行家進球后運行shell腳本,你可以用這一個

mavenJob('example-1') { 
postBuildSteps { 
    shell("echo 'run after Maven'") 
} 
} 

對於細節,你可以檢查作業DSL API觀衆 https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.jobs.MavenJob.postBuildSteps

這是非常容易和方便的工具。

BR,