上一篇我們實現了把流水線的制品保存到azure的流水線制品倉庫里去,本篇我們會開始研究azure的發布流水線。
文章配套視頻專欄:
https://space.bilibili.com/38649342/channel/seriesdetail?sid=2267536
本篇要研究的是把流水線倉庫的制品發布到任意一台公網的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的功能。