下游job获得上游构建的war包
小白的傻瓜教程,有错请指出~~转载请注明出处,谢谢~~~
以前使用Jenkins进行持续集成是把构建和部署放在同一个job了,但原则上是每个job只做一个步骤,所以我在使用Jenkins的pipeline功能后,就分成了构建和部署两个job。
以前直接在同一个job的工作目录下就可以获得war部署到服务器上,现在遇到的问题是怎样从上游的工作目录里获得构建产物。
于是我用到了copy artifact plugin这个插件。
一、安装插件
进入jenkins的【系统管理】--【插件管理】页面,选择【可选插件】然后搜索copy artifact plugin
二、上游job关联下游job 选择【增加构建后操作步骤】的build otherproject
填写下游job的名称
三、下游job获取上游构建产物
【增加构建步骤】选择 copyartifacts from another project
project name:指定从哪个job中拷贝文件。
which build:选择从哪一次构建获得产物。
Artifacts to copy:指定要拷贝的产物,如果是在workspace文件夹下,直接填文件名,如果是在某个目录下,要填目录+文件名。可填多个文件,用“,”隔开。
eg:我要获得workspace下a目录下target目录下的a.war,这里就填a/target/a.war.
Target directory:(可不填,不填的话文件目录就按照Artifacts to copy建立)指定将产物拷贝到该job的workspace下哪个地方,可以加在文件名前加上目录可以是多层目录,且将文件名换成别的,比如:www\b.war.
这个job会按照这里设定的格式自动创建目录,每次构建都会将原来得到的war包替换成本次从上游得到的war包。
四、部署至其他服务
使用了插件send build artifacts over ssh
首先在系统设置里将服务器信息设置好。
source files:源文件,在本次job的workspace目录下的文件。从workspace这个目录下的目录开始。eg:a/target/a.war
remove prefix:删除前缀。填了a/target 后复制到本服务器上的就只有a.war
Remote directory:放置那个文件夹下。