我试图让 Jenkins 使用 scp 插件将构建的工件复制到另一台服务器上的存档目录。
理想情况下,我希望能够根据构建版本使目的地动态化,因此结果类似于/builds/<build version>/
对于像 1.2.3.4 这样的构建版本,它看起来像:
/builds/1.2.3.4/
从阅读 scp 插件页面来看,这似乎是不可能的,但我认为这里有人可能已经弄清楚了。
有没有办法做到这一点?
将带有嵌入在文件名中的版本号的工件放在一个目录中会更好吗?
我试图让 Jenkins 使用 scp 插件将构建的工件复制到另一台服务器上的存档目录。
理想情况下,我希望能够根据构建版本使目的地动态化,因此结果类似于/builds/<build version>/
对于像 1.2.3.4 这样的构建版本,它看起来像:
/builds/1.2.3.4/
从阅读 scp 插件页面来看,这似乎是不可能的,但我认为这里有人可能已经弄清楚了。
有没有办法做到这一点?
将带有嵌入在文件名中的版本号的工件放在一个目录中会更好吗?
就像你说的,我不认为 scp 插件可以直接做到这一点。但是,可能有一种解决方法。
在您的构建中,您可以使用 $BUILD_NUMBER(或 %BUILD_NUMBER%,视情况而定 -> Linux 与 Windows)访问构建号。
无论如何,作为脚本的一部分,您可以创建一个以 $BUILD_NUMBER 作为名称的目录,因此:
mkdir -p $BUILD_NUMBER
-或者-
md %BUILD_NUMBER%
因此,例如,一个新目录将是 /path/to/workspace/1.2.3.4
构建完成后,在脚本的最后,创建上述目录,将您的工件移入其中,然后 tar/zip 目录。
使用此 tar/zip 文件作为您的工作工件。
使用 scp 插件将此工件传输到您的目标计算机,并在那里解压缩/解压缩(假设在/path/to/artifact/directory)
那么你将拥有的是/path/to/artifact/directory/1.2.3.4。
对于下一个构建,比如说 1.2.3.5,您将创建一个新目录(名为 1.2.3.5),在构建结束时将您的工件移入其中,将其压缩并传输。当您在目的地解压缩它时,您将拥有一个新目录/path/to/artifact/directory/1.2.3.5,其中包含新构建的工件。
我知道这听起来令人困惑,但实际上很容易实现。