提示
如果您剛剛接觸Buddy, 推薦先查看 >>快速上手<< 以便輕易了解如何構建、測試與部署您的應用類型。
Buddy將部署變得輕而易舉,允許您在每次推送到分支時自動更新服務器。 您還可以在點擊時手動部署,或按時間間隔重復部署(定時部署)。
配置SFTP操作
- 創建一個新項目,選擇您的Git提供商并選擇您的項目所在的存儲倉
- 添加新流水線并配置詳細信息:名稱、觸發模式與要部署的分支
- 在操作列表上查找并點擊SFTP:
- 配置操作相關信息:
- 選擇身份驗證模式并將詳細信息提供給您的服務器
提醒
如果您在流水線中使用構建操作,請確保選擇文件系統作為部署工件和處理文件的來源。
- 當就緒時就點擊添加此操作以完成配置
提示
點擊測試按鈕以在保存操作之前驗證連接狀態是否能正常連接
信息
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/shn" > 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
自動化?
您可以在Buddy中創建一個流水線,該流水線將在每次推送到存儲倉時自動執行所有這些步驟:
- 將腳本grab-links.sh上傳到存儲倉
- 添加新流水線并將觸發模式設置為事件推送觸發
- 添加Build操作并輸入將在Buddy的基礎架構中運行腳本的命令:
chmod +x grab-links.sh
./grab-links.sh
- 添加SFTP操作,該操作將使用新生成的腳本create-links.sh上傳存儲倉文件
- 添加SSH操作并輸入將在目標服務器上執行腳本的命令:
chmod +x create-links.sh
./create-links.sh
方案2: Git Clone?
Git完全按照人們期望的方式處理符號鏈接:如果您將符號鏈接推送到存儲倉并且其他人克隆了此存儲倉,則符號鏈接將在其本地存儲倉中復制。所以,基本上您需要做的就是在生產服務器上安裝Git并運行:
git clone
自動化?
您可以使用Buddy在每次推送存儲倉時自動執行 git clone。一個優秀的做法是添加單元測試以確保您的代碼在拉取之前沒有錯誤。
- 添加新流水線并將觸發模式設置為事件推送觸發
- 添加php單元操作并定義您的測試,它同時也預裝了Composer。
- 添加將在外部存儲倉上執行git clone的SSH操作
總結?
使用Buddy上傳符號鏈接只是該軟件可以使用的眾多用例之一。您可以擴展您的工作流程并配置Buddy,例如:
- 在給定時間運行集成測試
- 在Slack頻道上通知您的團隊所完成的部署
- 在npm和Composer中使用環境變量來支持私有包






