上一篇我们实现了把流水线的制品保存到azure的流水线制品仓库里去,本篇我们会开始研究azure的发布流水线。
本篇要研究的是把流水线仓库的制品发布到任意一台公网的linux服务器上去,所以我们先研究FTP和流水线的联动。
首先我们需要创建一条发布流水线,点击左侧的Releases,创建新的流水线,选择我们在前几篇文章中发布到仓库的制品。
创建好流水线后,点击Stages添加第一个步骤,这里我们选择Empty Job,填入一下基础的信息,然后点击我们创建好的步骤进行任务的编辑,
进来之后azure会默认给我们添加了一个agent,我们可以理解为agent就是我们的执行器,他会去帮我执行接下来我们定义的各种自动化任务,
因为我们的目的是要执行linux的命令并且上传文件到linux服务器上,所以我们要选择agent的类型为ubantu.
agent设置好之后,我们接下来创建两个task,他们的作用分别为:
1.查看从流水线仓库下载过来的制品是否正确。
2.使用Ftp上传到一个公网的服务器上去。
首先创建第一个task,我们点击agent上的加号,在右侧搜索bash,点击add,添加一个bash操作到我们的流水线上。
然后我们选中Bash选择模式为online,然后在里面写一些简单的脚本来查看我们的流水线制品。
然后我们添加第二个task,我们在右侧搜索FTP
然后填写一下FTP的信息, 这里Authentication Method我们选择输入验证,然后填入我们的FTP信息,注意URL要带上ftp://
rootFolder是我们制品所在的位置,Remote directory是我们要上传到服务器的哪个文件夹上去,$(Build.BuildId)这个环境变量记录的是编译的id我们可以使用它让每次的上传都新建一个文件夹。
填写好之后保存并一下我们的发布流水线,这里顺道贴一下FTP的安装命令
1、查看是否已经安装了vsftpd vsftpd -version 2、安装vsftpd(CentOS7) yum install -y vsftpd 3.创建一个目录 mkdor /home/ftp 4.授权 chmod 777 /home/ftp 5.创建用户 useradd -d /home/ftp -s /bin/bash myftp 6.设置密码 passwd myftp
发布流水线创建好之后,我们稍微回去改造一下之前的编译流水线,毕竟总不能每次都把全量的代码传过去,我们让制品每次只上传编译出来的jar包。
我们修改一下targetPath,指定到我们要上传的文件上去。
- task: PublishPipelineArtifact@1 inputs: targetPath: '$(Pipeline.Workspace)/s/webhook/target/demo-app.jar' artifact: 'webhook' publishLocation: 'pipeline'
接下来运行一下我们的流水线,点击Create a new release,然后进入就会看见已经开始运行了。
点击logs,我们可以看到,流水线已经开始把制品上传到了服务器,我们同时去服务器上验证一下上传的结果
我们先看一下我们的第一个bash的输出结果
再看一下我们ftp的输出结果
然后去服务器上看一下目录上有没有对应的文件
上传成功,完美。
到这里打通流水线和FTP就结束了,虽然文章看着很短,但是中间采坑的过程很长,不过摸着过来了就好,下一篇我们会继续研究azure的功能。