簡體   English   中英

將rsync與gitlab-ci.yml一起使用以同步Wordpress主題文件夾

[英]Use rsync with gitlab-ci.yml to sync Wordpress theme folders

嘗試使用.gitlab-ci.yml將主題自動部署到生產服務器時,收到錯誤消息:

執行的命令:使用ubuntu:16.04圖片

$ apt update -y && apt install openssh-client sshpass rsync -y
$ rsync -avh --progress --delete --rsh="sshpass -p $STAGE_FTP_PASS ssh -o StrictHostKeyChecking=no " --exclude=.git ./ $STAGE_FTP_USER@my.wp.address/project-folder/wp-content/themes/sg-coesfeld-theme/

錯誤結果:

sshpass: invalid option -- 'o'
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(176) [sender=3.1.1]
ERROR: Job failed: exit code 1

我正在使用完全相同的.gitlab-ci.yml ,服務器,FTP帳戶,運行程序和gitlab托管成功地在其他git倉庫中自動部署。

唯一更改的是源git存儲庫和/project-folder/

老實說,我不知道從哪里開始以及如何追蹤這個問題,所以我對任何建議都很滿意。

您的$STAGE_FTP_PASS必須為空,這樣命令將變為

sshpass -p ssh -o StrictHostKeyChecking=no 

因此sshpass會認為-p ssh是密碼,而-o StrictHostKeyChecking=no是命令。

正如@pynexj已經說過的, $STAGE_FTP_PASS是一個空字符串,這導致了錯誤。 我已經在腳本中使用echo $STAGE_FTP_USER進行了嘗試。

插入機密變量時,我已選中[X] Protected框,該框附帶說明: 此變量將僅傳遞給在受保護的分支和標簽上運行的管道。

搜索我注意到的受保護分支 ,在“設置”>“存儲庫”>“受保護分支”中未設置受保護分支。

因此,我可以在取消選中[ ] Protected復選框之間進行選擇,以便每個分支都可以使用秘密變量,或者采用更安全的方法並將我的分支(例如master )添加為受保護的分支。

現在,一切再次恢復正常。 再次感謝@pynexj指出導致腳本問題的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM