Azure DevOps (六) 通过FTP上传流水线制品到Linux服务器

上一篇我们实现了把流水线的制品保存到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的功能。