上一篇我們實現了把流水線的製品儲存到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的功能。