參考文檔
參考云效的官方文檔https://help.aliyun.com/zh/yunxiao/
一、新建代碼庫
這是第一步,和碼云的差不多
二、配SSH密鑰
這個和碼云,github上類似,都需要,云效的SSH密鑰證書不是采用 RSA算法,而是采用了ED25519 算法
步驟一、先確認下,本地公鑰文件是否生成
cd ~/.ssh/
沒有看到ed25519證書
步驟二、生成基于ED25519算法的SSH密鑰
使用ssh-keygen生成證書時,需要帶上參數ed25519,后面就一路回車下去,不用去輸入密碼
ssh-keygen -t ed25519 -C "ali-yunxiao"
密鑰生成在~/.ssh/id_ed25519.pub
步驟三、在云效codeup上設置公鑰
進入https://codeup.aliyun.com的 個人設置,把公鑰拷貝進來,公鑰過期時間不用選擇
提交
本地存在多個git平臺密鑰時,如何自動選擇
當本地存在多個密鑰,如果不設置認證規則,本機將隨機選擇一個密鑰認證,可能造成認證失敗。因此,需要把不同的密鑰配置文件配置在 config文件中
驗證碼云:
ssh -T git@gitee.com
表示成功:
Hi 黃(@allen-huang)! You’ve successfully authenticated, but GITEE.COM does not provide shell access.
驗證阿里云效:
ssh -T git@codeup.aliyun.com
Welcome to Codeup, hjc_042043
三、克隆項目
以ssh的方式clone項目,以laravel項目,SLConsole為例子
git clone git@codeup.aliyun.com:67f508b2228615de936e3d98/SLConsole/main.slconsole.com.git
如果存在現有項目代碼(注意去掉.git目錄),就把代碼拷貝到這個項目下面去,并push上去,最后在云效提交的結果是這樣子的。
四、構建流水線(CI/CD)
上面建立好倉庫之后,就可以來創建流水線了,有了CI/CD機制這樣子可以很方便的來發布和回滾代碼,提高系統的穩定性。
步驟一、選擇流水線模板
選擇流水線模板,這里是PHP,然后點右下角的創建
步驟二、添加流水線源
這個都不用去動,會默認加載倉庫地址,分支以及代碼拉取的預存目錄(工作目錄)
注意,這個默認是在mastert提交后,自動發布到生產服務器,礙于很多時候是小項目開發,直接使用 master,可以關閉掉"開啟代碼源觸發"
這個可以根據自己實際需求來,默認是開啟的。
步驟三、構建PHP
這里是有測試環節先刪除掉,暫時不需要測試
重新創建PHP構建
不選擇PHP鏡像構建
先刪除失效的部分
選擇PHP版本,因為我們用的是laravel10,所以用php8.1
構建物上傳
步驟四、部署主機
1. 選擇制品
勾選下載制品,和選擇制品
2. 創建主機組
這一步很重要,主要是來配置目標服務器組,可以把代碼發布過去,服務器可以是一個或多個
主機組可以根據不同的服務器環境來配置,可以是測試環境,預發布環境,正式環境
從服務器組點進去
選擇服務器,保存
3.選擇服務器組
4.部署腳本
代碼在傳輸到服務器上時,是通過打包的方式傳輸過來,不是git的方式拉取。所以需要解壓出來,在執行服務。部署腳本如下:
# 部署腳本會在部署組的每臺機器上執行。一個典型腳本邏輯如下:先將制品包(在下載路徑中配置的下載路徑)解壓縮到指定目錄中,再執行啟動腳本(通常在代碼中維護,如示例中deploy.sh)。關于這個例子的詳細解釋見 https://help.aliyun.com/document_detail/153848.html # tar zxvf /home/admin/app/package.tgz -C /home/admin/app/
# sh /home/admin/app/deploy.sh restart
# 如果你是php之類的無需制品包的制品方式,可以使用git clone 或者 git pull將源代碼更新到服務器,再執行其他命令
# git clone ***@***.gitdir="/www/wwwroot/main.slconsole.com"if [ ! -d "$dir" ]; thenmkdir -p "$dir"
fitar -zxvf /home/admin/app/package.tgz -C $dir# 把項目權限改成0755,所有者改成www
chmod -R 0755 $dir
chown -R www:www $dir# 進入laravel項目目錄
cd $dir# 執行腳本,主要預處理的腳本,像composer包的安裝,服務啟動等
/bin/bash start_service_prod.sh >> /www/wwwlogs/main.slconsole.com_devops.log 2>&1 &
將部署腳本貼到這個框里面,并把下面分批數量改成1
步驟五、發布測試
最后流水線的變成這樣子了
發布完成后的
常見問題
1、部署主機
如果需要部署到多主機時,一定需要注意的是,往往我們新的服務器,是從老的服務器鏡像出來的,那么老的服務器都是已經安裝過runner的,所以在新服務器在安裝runner時,會報錯類似 instance i-uf62plfssupo4bphyucf is already registerd as an ecs runner 的錯誤。是說明runner已經安裝,這個是因為新的服務器包含了老的runner,所以先刪除這個runner。
解決:
cd root
rm -rf yunxiao
2、如果存在多個阿里云效倉庫如何clone 代碼
在~/.ssh/config 文件中配置了云效的多倉庫
在克隆代碼時,不能再使用git@codeup.aliyun.com:xxx
而是要是用:
git@[$Host]:6759813cad056eaad2a2e966/bossim
如:
git@codeup-boss-server:6759813cad056eaad2a2e966/bossim
3、代碼在合并到 master 之后自動觸發流水線
這個最好不要自動觸發流水線,因為我們很多一些小項目都是在 master分支上開發的,所以要是每次提交 git 都觸發,那是比較危險的事情,代碼會自動提交到遠程服務器上去了
有兩種方式來處理:
方法一:
方法二,在發布時,需要去手動觸發一下