运行 shell Jenkins DSL mavenJob 中的脚本

Running shell scripts in a Jenkins DSL mavenJob

我正在编写一个 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{} 块时该作业才有效,因为 mavenJob 中不允许 steps。我试过使用 freeStyleJob,但 ArtifactoryRedeployPublisher 不起作用。

我必须如何处理 运行 我的 shell 脚本?

如果你想让shell脚本运行领先于maven目标,你可以使用这个

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

或者如果你想要 shell 脚本 运行 在 maven 目标之后,你可以使用这个

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

详情可以查看job dsl api viewer https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.jobs.MavenJob.postBuildSteps

这是一个非常简单易用的工具。

Br,

蒂姆