在Jenkins DSL mavenJob

时间:2016-07-22 15:47:35

标签: jenkins artifactory jenkins-job-dsl

我正在编写一个Jenkins(2.6版)DSL,它允许我签出并构建一个Maven项目,运行一个shell脚本并将其部署到Artifactory。

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 个答案:

答案 0 :(得分:1)

如果您希望shell脚本在maven目标之前运行,则可以使用此

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

或者,如果您希望shell脚本在maven目标之后运行,则可以使用此脚本

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

有关详细信息,您可以查看作业dsl api viewer https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.jobs.MavenJob.postBuildSteps

这是一个非常简单方便的工具。

BR,