Jenkins发布SSH插件文件名变量

时间:2017-03-14 13:36:45

标签: jenkins jenkins-plugins build.gradle

我有一个Jenkins作业,它调用gradle脚本从源代码创建 .war 文件。

gradle war命令生成名为Geo-1.0.5.war的文件,因为build.gradle使用版本号:

war {
    baseName = 'Geo'
    version = '1.0.5'
}

此文件将使用“通过SSH插件发布”通过SSH复制和部署在Wildfly服务器上。

如何告诉插件war文件名格式类似于Geo- $ gradle_version .war?

1 个答案:

答案 0 :(得分:1)

如果您点击"源文件"旁边的(?)帮助图标,则会记录此信息。詹金斯内部的领域:

  

该字符串是以逗号分隔的Ant文件集的包含列表,例如。 **/*.jar
  (参见Ant手册中的Patterns)。

因此,在您的情况下,您可以使用**/Geo-*.war作为源模式。

这也显示在plugin wiki page的屏幕截图中,以及链接的"发布..."的Source FilesExamples部分。文档。

在您对此答案的评论中,您提到您不想传达文件名是"类似于Geo- $ gradle_version.war"用于上传,而是想在SSH主机上执行的脚本中使用确切的文件名。

您可以通过添加确定文件名的Execute Shell步骤,并使用EnvInject Plugin将其导出为环境变量来执行此操作。例如:

f=$(basename `find . -name 'Geo-*.war'`)
echo WAR_FILENAME=${f} > env.properties

然后,通过使用Inject Environment Variables步骤并将其路径设置为env.propertiesWAR_FILENAME值将添加到构建环境中,可供后续步骤使用。

在SSH发布步骤的Exec Command字段中,您可以使用${WAR_FILENAME}来引用上传的确切文件名。