[英]Bitbucket pipelines using git submodules foreach
我想用git-ftp部署我的存儲庫(因為許多客戶端的托管計划不包括SSH訪問)到我的暫存環境中,其中WordPress作為子模塊包含在內。 這是我第一次嘗試使用Bitbucket管道:
image: php:7.1
pipelines:
branches:
master:
- step:
deployment: staging
script:
- apt-get update
- apt-get -qq install git-ftp
- git ftp init -vv --user $sftp_user --passwd $sftp_passwd $sftp_path
盡管它沒有部署WordPress存儲庫而是一個空的占位符文件,但它可以完美地工作並將所有文件傳輸到我的服務器。
因為它說這里的子模塊的支持不工作的所有時間,但有使用的解決方法
git submodule foreach git [init|push|catchup]
我使用Bash手動嘗試了所有步驟,並且有效:
$ git ftp init --user $sftp_user --passwd $sftp_passwd -vv $sftp_path
$ git submodule foreach 'git ftp init -vv $sftp_user --passwd $sftp_passwd -vv $sftp_path/$path/'
但是,當我嘗試將此變通方法應用於我的bitbucket-pipelines.yml時,foreach的子模塊命令似乎根本不起作用……測試該命令只能輸出
git submodule foreach 'echo $path'
+ git submodule foreach echo 'echo $path'
謝謝你的幫助!
對於您的問題的第二點:是的,它工作正常,帶有+
的行僅列出了已執行的命令。 如果未顯示任何錯誤,則執行正常。
關於第三點,是的,如果您設置了變量$ path,則此變量將被bitbucket覆蓋,因為當然會覆蓋它。 如果您不這樣做,它應該可以正常工作,但是我在git文檔中注意到了以下內容:
請注意,為避免與Windows上的$ PATH沖突,現在$ path變量已棄用$ sm_path變量的同義詞。 該命令將忽略超級項目中定義但未檢出的所有子模塊。
因此,您必須將它們簽出才能打印出來。 當您在本地使用此命令時,我想要檢查出子模塊,這就是該命令在此處起作用的原因。
解決方法是,不必使用bitbucket管道檢出它們,可以使用以下命令:
git config --file .gitmodules --get-regexp path | awk '{ print $2 }'
我希望這可以幫助你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.