天天看點

自動化運維:如何通過SFTP部署到伺服器

作者:東正科技

通過SFTP部署到伺服器

了解如何使用Buddy自動部署到SFTP伺服器

提示

如果您剛剛接觸Buddy, 推薦先檢視 >>快速上手<< 以便輕易了解如何建構、測試與部署您的應用類型。

Buddy将部署變得輕而易舉,允許您在每次推送到分支時自動更新伺服器。 您還可以在點選時手動部署,或按時間間隔重複部署(定時部署)。

自動化運維:如何通過SFTP部署到伺服器

配置SFTP操作

  1. 建立一個,選擇您的并選擇您的項目所在的
  2. 添加新流水線并配置詳細資訊:、與要部署的
  3. 在操作清單上查找并點選:
  4. 配置操作相關資訊:
  • 選擇身份驗證模式并将詳細資訊提供給您的伺服器

提醒

如果您在流水線中使用建構操作,請確定選擇檔案系統作為部署工件和處理檔案的來源。

  1. 當就緒時就點選以完成配置

提示

點選測試按鈕以在儲存操作之前驗證連接配接狀态是否能正常連接配接

資訊

Buddy的部署基于變更集。 這意味着隻部署更改的檔案,這使其閃電般快速⚡️。 第一次部署總是從頭開始執行,除非您事先在伺服器上設定了修訂版。

您需要了解的資訊​

  • 選擇作為資源以僅部署存儲倉中的檔案。 如果您使用建構操作,請選擇 作為資源以添加工件、已處理檔案和上傳的靜态檔案。
  • 您可以使用環境變量将身份驗證詳細資訊存儲到您的伺服器上
  • 您可以在中使用排除要部署的檔案

使用SFTP部署符号連結​

為了通過SCP上傳符号連結,通過添加-r參數來使用遞歸模式:

scp -r
           

但是,啟用該模式也會複制符号連結指向的内容。如果我們隻想複制符号連結,這事很麻煩,并且不可能用SCP以不同的方式來做。通常,我們可以通過使用rsync來解決:

rsync -avz -e ssh /scr-dir user@host:/dst-dir
           

可缺點是這種方法非常耗時。您将在下面找到如何使用Buddy實作自動化和加速的使用說明。

方案1: 本地腳本 + 伺服器上傳 + 主機腳本​

第一個解決方案使用一些簡單的腳本和部署操作。首先,我們需要一個腳本grab-links.sh來列出檔案夾中的所有符号連結。該腳本将以遞歸模式搜尋檔案夾并建立一個檔案create-links.sh,其中包含将在目标伺服器上重制符号連結的說明:

# !/bin/sh

echo "#!/bin/sh\n" > create-links.sh
for file in $(find . -type l); do
            link=$(readlink $file);
            echo "if [ ! -L $file ]; then ln -s $link $file; fi" >> create-links.sh;
done
           

現在,我們需要将腳本儲存到一個grab-links.sh檔案并執行:

chmod +x grab-links.sh
./grab-links.sh
           

這将生成create-links.sh,您可以将其上傳并在目标伺服器上運作以重制您的符号連結:

chmod +x create-links.sh
./create-links.sh
           
自動化運維:如何通過SFTP部署到伺服器

自動化​

您可以在Buddy中建立一個流水線,該流水線将在每次推送到存儲倉時自動執行所有這些步驟:

  1. 将腳本grab-links.sh上傳到存儲倉
  2. 添加新流水線并将觸發模式設定為事件
  3. 添加操作并輸入将在Buddy的基礎架構中運作腳本的指令:
chmod +x grab-links.sh
 ./grab-links.sh
           
  1. 添加操作,該操作将使用新生成的腳本create-links.sh上傳存儲倉檔案
  2. 添加操作并輸入将在目标伺服器上執行腳本的指令:
chmod +x create-links.sh
 ./create-links.sh
           
自動化運維:如何通過SFTP部署到伺服器

方案2: Git Clone​

Git完全按照人們期望的方式處理符号連結:如果您将符号連結推送到存儲倉并且其他人克隆了此存儲倉,則符号連結将在其本地存儲倉中複制。是以,基本上您需要做的就是在生産伺服器上安裝Git并運作:

git clone
           

自動化​

您可以使用Buddy在每次推送存儲倉時自動執行 git clone。一個優秀的做法是添加單元測試以確定您的代碼在拉取之前沒有錯誤。

  1. 添加新流水線并将觸發模式設定為事件
  2. 添加操作并定義您的測試,它同時也預裝了Composer。
  3. 添加将在外部存儲倉上執行git clone的操作
自動化運維:如何通過SFTP部署到伺服器

總結​

使用Buddy上傳符号連結隻是該軟體可以使用的衆多用例之一。您可以擴充您的工作流程并配置Buddy,例如:

  • 在給定時間運作內建測試
  • 在Slack頻道上通知您的團隊所完成的部署
  • 在npm和Composer中使用環境變量來支援私有包

繼續閱讀